我正在尝试使用 GoogleChatAPI 创建一个机器人。
这是我正在尝试做的事情:
如果用户添加了我正在创建的机器人,我希望机器人显示使用该机器人的警告消息。
如果用户在 bot 中发布消息,则 bot 会将该消息发布到另一个聊天室。发布消息的方法是“UrlFetchApp.fetch”(同时添加一个OAUTH范围)
为了完成任务 1,我使用了代码onAddToSpace
。为了实现任务 2,我使用了代码onMessage
。
但是当用户添加机器人时,onAddToSpace
不会被点燃。此事件不在执行列表中。但是当我删除代码UrlFetchApp.fetch
(并同时删除 OAUTH 范围)时,就会onAddToSpace
被点燃。
我如何编写代码来同时实现我想要做的两件事?或者甚至有可能吗?
代码:
function onMessage(event) {
var name = "";
var message = "ご依頼承りました!情シスからご連絡いたしますので少々お待ち下さい。";
postICTRoom(event);
return { "text": message };
}
function onAddToSpace(event) {
var message = "情シスへ質問、依頼ができるbotです。送信したメッセージは、ユーザー名付きですべて情シスチームチャットに送信されます。遊びが一切ないbotです、ご利用の際は十分ご注意ください。ここは万事屋ではありません。";
return { "text": message };(*1)
}
function onRemoveFromSpace(event) {
console.info("Bot removed from ",
(event.space.name ? event.space.name : "this chat"));
}
function postICTRoom(event){
var messageDate = new Date()
var url = "https://chat.googleapis.com/v1/spaces/...";
var thread = "spaces/..."
var payload = {
"text" : event.user.displayName + " " + Utilities.formatDate(messageDate, "JST", 'yyyy/MM/dd_HH:mm:ss') + "\n" + event.message.text,
"thread": {
"name": thread
}
}
var json = JSON.stringify(payload);
var options = {
'method': 'POST',
'contentType': 'application/json; charset=UTF-8',
"payload" : json
};
var response = UrlFetchApp.fetch(url, options);
显现:
{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
}
}
OAuthScope
https://www.googleapis.com/auth/script.external_request
更新
onAddToSpace
当我添加机器人时没有执行。- 我发布了一条消息并批准了 OAuth,然后
onMessage
被执行。 - 在我批准 OAuth 之后,我曾经删除了该机器人,然后我再次添加了它,
onAddToSpace
已经按照我的预期执行了......
onAddToSpace
我想知道这是否可能,如果可能,在我必须批准 OAuth 之前如何执行。
更新2
成功案例onAddToSpace
(1)
- 设置范围
script.external_request
和chat
. - 添加了机器人。
onAddToSpace
当时没有执行,因为日志没有显示在屏幕上并且机器人没有发布消息(代码中的 (*1) 点)。 - 发了一条消息。
onMessage
成功了。当时我批准了 OAuth。 - 删除了机器人并再次添加。
onAddToSpace
第一次被处决。
成功案例onAddToSpace
(2)
- 删除了范围
script.external_request
和chat
. 并删除了“UrlFetchApp.fetch”。 - 添加了机器人。
onAddToSpace
从头开始执行。当然,这不是 OAuth。 - 发了一条消息。
onMessage
成功了。
我想onAddToSpace
在successed(1)-Step2 的时候被执行。我不知道如何才能使这项工作。
更新3
清单(修改):
{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"chat": {
"addToSpaceFallbackMessage": "情シスへ質問、依頼ができるbotです。送信したメッセージは、ユーザー名付きですべて情シスチームチャットに送信されます。遊びが一切ないbotです、ご利用の際は十分ご注意ください。ここは万事屋ではありません。"
}
}