在 google 环聊聊天中发送 "please wait" 消息
Sending a "please wait" message in google hangouts chat
我正在创建一个 google 视频群聊聊天机器人。我正在 Google Apps 脚本中构建机器人。机器人访问一些通常需要几秒钟的网络 apis,但等待可能会让用户感到不安,因为他们没有意识到系统不仅会忽略它们。我想在结果出现之前显示类似 "please wait" 的消息。但是事件是由 onMessage 触发的,文本显示为 return 语句的一部分。有没有办法显示即时消息,然后在 api 响应时显示消息的其余部分?
onMessage(event){
text="Please wait, processing...";
#send text to screen
response=UrlFetch(url, params);
return {"text":response['text']}
}
GAS 包不支持插入消息。事实证明,您必须为此使用 Chat REST API。因此您已经设置了权限(我在 http://ramblings.mcpher.com/Home/excelquirks/goa 使用了服务帐户和 cgoa 包)
然后我创建了一个调用 API 的函数,并将调用放在顶部的 onMessage 事件中。这是函数:
function sendWait(event){
var packageName='Google_service_account'
var goa = cGoa.GoaApp.createGoa(packageName, PropertiesService.getScriptProperties()).execute();
if (!goa.hasToken()) {
throw 'no token retrieved';
} else {console.info('token retrieved')};
var endpoint='https://chat.googleapis.com/v1/'+event.space.name+"/messages"
console.info('endpoint=%s',endpoint);
var threadId=event.message.thread
var response={'text':'Processing request...'}
response.thread=threadId
console.info('response=%s',response);
var options = {
method: "post",
contentType : "application/json" ,
muteHttpExceptions : true,
payload: JSON.stringify(response),
headers: {
"Authorization": "Bearer " + goa.getToken(),
}
};
var aresponse=UrlFetchApp.fetch(endpoint, options)
我正在创建一个 google 视频群聊聊天机器人。我正在 Google Apps 脚本中构建机器人。机器人访问一些通常需要几秒钟的网络 apis,但等待可能会让用户感到不安,因为他们没有意识到系统不仅会忽略它们。我想在结果出现之前显示类似 "please wait" 的消息。但是事件是由 onMessage 触发的,文本显示为 return 语句的一部分。有没有办法显示即时消息,然后在 api 响应时显示消息的其余部分?
onMessage(event){
text="Please wait, processing...";
#send text to screen
response=UrlFetch(url, params);
return {"text":response['text']}
}
GAS 包不支持插入消息。事实证明,您必须为此使用 Chat REST API。因此您已经设置了权限(我在 http://ramblings.mcpher.com/Home/excelquirks/goa 使用了服务帐户和 cgoa 包)
然后我创建了一个调用 API 的函数,并将调用放在顶部的 onMessage 事件中。这是函数:
function sendWait(event){
var packageName='Google_service_account'
var goa = cGoa.GoaApp.createGoa(packageName, PropertiesService.getScriptProperties()).execute();
if (!goa.hasToken()) {
throw 'no token retrieved';
} else {console.info('token retrieved')};
var endpoint='https://chat.googleapis.com/v1/'+event.space.name+"/messages"
console.info('endpoint=%s',endpoint);
var threadId=event.message.thread
var response={'text':'Processing request...'}
response.thread=threadId
console.info('response=%s',response);
var options = {
method: "post",
contentType : "application/json" ,
muteHttpExceptions : true,
payload: JSON.stringify(response),
headers: {
"Authorization": "Bearer " + goa.getToken(),
}
};
var aresponse=UrlFetchApp.fetch(endpoint, options)