Отправка сообщения "Пожалуйста, подождите" в чате Google Hangouts - PullRequest
0 голосов
/ 22 апреля 2019

Я создаю чат-чат в Google Hangouts.Я строю бота в Google Apps Script.Бот обращается к некоторым веб-интерфейсам, которые обычно занимают несколько секунд, но ожидание может сбить с толку пользователя, который не понимает, что система не просто игнорирует их.Я хочу отобразить сообщение типа «Пожалуйста, подождите», прежде чем приходят результаты. Но событие вызывается onMessage, и текст отображается как часть оператора return.Есть ли способ показать немедленное сообщение, а затем остальную часть сообщения, когда API отвечает?

onMessage(event){

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

1 Ответ

0 голосов
/ 29 апреля 2019

Пакет GAS не поддерживает вставку сообщения.Оказывается, вы должны использовать Chat REST API для этого.Таким образом, вы установили разрешения (я использовал учетную запись службы и пакет cgoa на http://ramblings.mcpher.com/Home/excelquirks/goa)

Затем я создал функцию, которая вызывала 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)
...