【问题标题】:Sending a "please wait" message in google hangouts chat在 Google Hangouts 聊天中发送“请稍候”消息
【发布时间】:2019-04-22 03:09:43
【问题描述】:

我正在创建一个 Google Hangouts 聊天机器人。我正在 Google Apps 脚本中构建机器人。 bot 访问一些通常需要几秒钟的 web apis,但等待可能会让用户感到不安,因为他们没有意识到系统不仅仅是忽略它们。我想在结果出现之前显示一条消息,例如“请稍候”。但是该事件由 onMessage 触发,并且文本显示为 return 语句的一部分。有没有办法在 api 响应时显示即时消息,然后显示其余消息?

onMessage(event){

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

【问题讨论】:

    标签: google-apps-script hangouts-api


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多