我有一个在PM中工作的机器人,我可以与它对话并使其毫无问题地完成我的任务,但是我没有找到如何使它向特定的其他人发送消息的方法。
我希望它可以将私人消息发送到特定的用户列表,而无需这些用户的任何交互。唯一的交互是来自我的订单,要求它向其他人发送消息。
我发现了很多有关机器人响应并通过Webhook回复消息的文档和帖子,但是关于机器人直接将PM发送给某人的信息却没有。
所以代替这个:
function onMessage(event) {
return {"text": "MSG = " + message };
}
我正在寻找可以指定用户ID 或用户名的东西:
function sendMessage(ID/name) {
return {"text": "MSG = " + message, "ID": ID}; //not accurate example
}
sendMessage("User_ID");
如果您对执行此操作有任何想法或信息,将不胜感激!
更新: 尚无法与某人发起DM对话,但可以通过检查bot所在的空间来向所有bot联系人发送消息(因此,无需每个人都向bot发送消息。消息是触发它所必需的。)
以下是我如何使用它的示例:
//Configure the chatbot service
function get_chatbot_service() {
return OAuth2.createService(BOT_NAME)
.setTokenUrl('https://accounts.google.com/o/oauth2/token') // Set the endpoint URL.
.setPrivateKey(PRIVATE_KEY) // Set the private key.
.setIssuer(CLIENT_EMAIL) // Set the issuer.
.setPropertyStore(PropertiesService.getScriptProperties()) // Set the property store where authorized tokens should be persisted.
.setScope('https://www.googleapis.com/auth/chat.bot'); // Set the scope.
}
//Return all the spaces (DM and rooms) the bot belong to
function get_spaces() {
var service = get_chatbot_service();
var url = 'https://chat.googleapis.com/v1/spaces';
var response = UrlFetchApp.fetch(url, { headers: { Authorization: 'Bearer ' + service.getAccessToken() }});
var rep = JSON.parse(response.getContentText());
return (rep.spaces)
}
//Get the informations and send the message to every contacts the bot have been added to
function send_message() {
var service = get_chatbot_service();
var spaces = get_spaces();
var msg = "Test message";
for (var i = 0; i < spaces.length; i++) {
var space = spaces[i];
if (space.type == "DM") { //Check if we are in DM
var url = 'https://chat.googleapis.com/v1/'+ space.name +'/messages'; //Specify the URL with space name
var options = {
method : 'POST',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + service.getAccessToken() },
payload : JSON.stringify({ text: msg }) //Add your message
}
UrlFetchApp.fetch(url, options); //Send the message
}
}
}
也许这会帮助某人一天。
答案 0 :(得分:2)
当前没有任何方法可以使机器人开始对话。
我在Google's Public Issue Tracker上发现了此问题。您只需要去那里,然后单击标题旁边的星号,即可获取有关该问题的最新信息,并使该问题更具可见性。