首页 > 解决方案 > 谷歌聊天机器人:两个人都看不到机器人回复

问题描述

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

标签: google-apps-scripthangouts-chathangouts-api

解决方案


推荐阅读