You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Google App Script聊天机器人在线程内回复?

解决Google Chat机器人在新内嵌线程内回复的问题

你的核心需求是让机器人在触发它的内嵌线程里回复,而非新建线程。先纠正一个误区:使用onMessage同步返回响应时,Google Chat默认会自动将回复发送到触发消息所在的线程,不需要额外手动指定线程信息。

你之前尝试添加thread对象并附带retentionSettings是多余的,甚至可能干扰默认行为。下面是简化后的正确代码:

function onMessage(event) {
  var name = event.space.type === "DM" ? "You" : event.user.displayName;
  var message = `${name} said "${event.message.text}"`;

  // 直接返回文本即可,默认会在触发的线程内回复
  return { "text": message };
}

如果依然出现回复到新线程的情况,排查以下两点:

  • 确认触发场景:只有当用户在内嵌线程中发送消息时,机器人的回复才会落在该线程;如果用户是在空间主时间线发消息,机器人自然会回复到主时间线。
  • 检查异步发送逻辑:如果你的机器人是通过UrlFetchApp调用Chat API的messages.create接口异步发送消息,才需要显式指定线程ID,示例代码如下:
    function sendReplyInThread(event) {
      var name = event.space.type === "DM" ? "You" : event.user.displayName;
      var messageText = `${name} said "${event.message.text}"`;
    
      var url = "https://chat.googleapis.com/v1/" + event.space.name + "/messages";
      var payload = {
        text: messageText,
        thread: { name: event.message.thread.name }
      };
    
      var options = {
        method: "post",
        contentType: "application/json",
        payload: JSON.stringify(payload),
        headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() }
      };
    
      UrlFetchApp.fetch(url, options);
    }
    

注意:使用异步发送需要确保机器人拥有chat.messages.create的权限,并且在脚本编辑器中启用对应的OAuth范围。

内容的提问来源于stack exchange,提问作者Paul Fournel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:29:51