google-apps-script - 谷歌聊天机器人:两个人都看不到机器人回复
问题描述
我已经为我们的 gsuite 创建了一个用于谷歌聊天的聊天机器人。当我输入 @DadJokes 时,它会从 API 返回随机的 dadjoke
问题是只有我可以看到返回的笑话,而我在文档中找不到有关此的信息。
谁能引导我走向正确的道路?
谢谢
function getDadJoke() {
var response = UrlFetchApp.fetch('https://icanhazdadjoke.com/', {
method: 'get',
headers: { 'Accept': 'text/plain' },
contentType: 'plain/text',
});
return response.getContentText();
}
/**
* Responds to a MESSAGE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onMessage(event) {
console.log(getDadJoke());
return { "text": getDadJoke() };
}
/**
* Responds to an ADDED_TO_SPACE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onAddToSpace(event) {
return { "text": getDadJoke() };
}
/**
* Responds to a REMOVED_FROM_SPACE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onRemoveFromSpace(event) {
console.info("Bot removed from ",(event.space.name ? event.space.name : "this chat"));
}
更新
我使用异步消息让它工作,但现在其他人比我自己输入@DadJokes 的消息更早收到这个笑话。这意味着我输入@DadJokes,聊天参与者从机器人收到笑话,然后他们收到我的消息@DadJokes
function getDadJoke() {
var response = UrlFetchApp.fetch('https://icanhazdadjoke.com/', {
method: 'get',
headers: { 'Accept': 'text/plain' },
contentType: 'plain/text',
});
return response.getContentText();
}
function sendDadJoke(spaceId) {
var service = OAuth2.createService('chat')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
.setClientId(SERVICE_ACCOUNT_EMAIL)
.setPropertyStore(PropertiesService.getUserProperties())
.setScope(SCOPE);
if (!service.hasAccess()) {
Logger.log('Authentication error: %s', service.getLastError());
return;
}
var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
UrlFetchApp.fetch(url, {
method: 'post',
headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
contentType: 'application/json',
payload: JSON.stringify({ "text": getDadJoke() }),
});
}
/**
* Responds to a MESSAGE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onMessage(event) {
sendDadJoke(event.space.name);
return {"message": "Okay here it comes!"};
}
/**
* Responds to an ADDED_TO_SPACE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onAddToSpace(event) {
sendDadJoke(event.space.name);
return {"message": "Okay here it comes!"};
}
/**
* Responds to a REMOVED_FROM_SPACE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onRemoveFromSpace(event) {
console.info("Bot removed from ",(event.space.name ? event.space.name : "this chat"));
}
解决方案
推荐阅读
- laravel - 使用 swagger 或邮递员时 SSO 不使用 API
- python - 合并具有相似字符串的行 pandas
- pandas - 如何通过重复行拆分熊猫数据框?
- java - 如何在 Java 中的 Firebase 数据库中将多个项目添加到数组中?
- algorithm - 如何保持数组/链表在 O(1) 插入时排序?
- c# - HttpClient使用asp net core 3.1获取调用连接尝试失败
- javascript - ReactJS 切换汉堡菜单
- python - 循环将数据保存在目录中并在python上打印
- rabbitmq - 在rabbitmq中使用默认交换时,如何允许用户仅发布到特定(而不是全部)队列?
- java - 在一个 jar 中使用 Spring boot 2.x 构建 angular 11