Google聊天机器人:两个人都看不到机器人回复

时间:2020-07-15 14:43:00

标签: google-apps-script hangouts-chat hangouts-api

我已经创建了一个聊天机器人,用于与我们的gsuite进行Google聊天。当我输入@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"));
}

0 个答案:

没有答案