求助:Google Chat Bot无法接收空间内非提及消息事件
Google Chat Bot 接收空间所有消息的配置方案
可行,只需调整Bot的空间权限配置并适配代码逻辑,具体操作如下:
1. 修改Google Chat Bot的空间权限设置
登录Google Cloud控制台,找到你的Chat Bot项目:
- 进入「APIs和服务」→「Dashboard」,找到并打开Google Chat API
- 切换到「配置」标签页,定位到「空间权限」设置项
- 将「Bot是否可以接收空间中未提及它的消息」改为「是」
- 保存配置后等待5-10分钟,让权限设置生效
2. 权限范围与服务账号校验
- 你当前使用的
https://www.googleapis.com/auth/chat.bot权限范围完全满足接收所有空间消息的需求,无需额外添加scope - 确认服务账号已配置「Chat Bot」相关角色,避免因权限不足导致事件无法推送
3. 代码逻辑适配
未提及Bot的MESSAGE事件不会携带Bot的提及信息,只需保证代码能处理所有MESSAGE类型事件即可,示例调整后的代码如下:
from flask import Flask, request, jsonify from google.oauth2 import credentials from googleapiclient.discovery import build SCOPES = ['https://www.googleapis.com/auth/chat.bot'] creds = credentials.Credentials.from_service_account_file('service_account.json', scopes=SCOPES) chat = build('chat', 'v1', credentials=creds) app = Flask(__name__) @app.route('/', methods=['POST']) def handle_bot_event(): event_data = request.get_json() evt = event_data.get('type', None) if evt == 'MESSAGE': # 处理所有空间消息,无论是否@Bot message_content = event_data['message']['text'] # 这里添加自定义处理/回复逻辑 return jsonify({'text': f'已收到消息:{message_content}'}) elif evt == 'ADDED_TO_SPACE': return jsonify({'text': '成功加入空间!'}) elif evt == 'REMOVED_FROM_SPACE': # 处理移除事件,无需回复 return '', 200 # 其他事件类型返回空响应 return '', 200
调试注意事项
- 权限配置更新后,建议重新将Bot加入目标空间,确保新权限生效
- 用ngrok映射本地端口时,确保公网URL可正常访问(可通过curl发送POST请求测试你的ngrok地址)
- 可在Google Cloud控制台的「日志」页查看事件推送记录,排查是否有推送失败的情况
内容的提问来源于stack exchange,提问作者Tony Chou
相关产品推荐
相关产品推荐

