在Google环聊聊天中发送“请稍候”消息

时间:2019-04-22 03:09:44

标签: google-apps-script hangouts-api

我正在创建一个Google环聊聊天机器人。我正在Google Apps脚本中构建机器人。机器人访问通常需要几秒钟的一些Web API,但这种等待可能使不知道该系统不仅仅是忽略它们的用户感到不安。我想在结果进入之前显示一条消息,例如“请稍等”。但是该事件由onMessage触发,并且文本作为return语句的一部分显示。当api响应时,是否可以显示立即消息,然后显示其余消息?

onMessage(event){

text="Please wait, processing...";
#send text to screen
response=UrlFetch(url, params);
return {"text":response['text']}
}

1 个答案:

答案 0 :(得分:0)

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)