跳到正文

使用消息交互 ​

按钮和可点击指令都能触发业务操作。要用哪个处理函数,取决于用户点击之后会发生什么。

需要实现的行为构造入口接收入口
点击后预填命令button.Command用户发送后进入 OnCommand
单聊点击直接发送命令Command(...).AutoSend()OnCommand
点击后通知服务端button.CallbackOnButton 或 OnInteraction
打开网页或平台支持的应用链接button.Link客户端跳转,不产生按钮回调
正文内可点击命令text.Input、text.Enter用户发送后进入 OnCommand
快捷菜单操作平台侧配置菜单OnMenu

配置事件订阅 ​

使用 WebSocket ​

将所需条目合并到 config.yaml 现有的 connection.websocket.intents 列表,保留其他业务订阅。保存后重启机器人。

yaml
connection:
  mode: websocket
  websocket:
    intents:
      - GROUP_AND_C2C_EVENT
      - INTERACTION

全部 Intent 与下属事件

使用 Webhook ​

在 QQ 机器人运营与管理后台选择 开发设置 → 事件订阅与回调。将接入方式设为 Webhook。在 接收事件配置 选择 部分接收,按事件标识勾选INTERACTION_CREATE(互动事件)。保存设置。已选 全部接收 时,无需逐项勾选。

QQ 机器人运营与管理后台 · 配置 HTTPS 回调

按任务阅读 ​

交互与消息的区别 ​

回复发给聊天里的人,ACK 发给 QQ 平台确认互动结果。先判断用户有没有操作权限,再及时回复 ACK。耗时的工作可以随后处理。

每个互动事件只选择一个处理函数。

  • 先找匹配具体按钮或菜单 ID 的处理函数。
  • 再找匹配事件类型的处理函数。
  • 最后使用 OnEvent(message.INTERACTION_CREATE, ...)。

在仓库根目录运行下面的示例,就可以在 QQ 里试用这些互动功能。

sh
go run ./examples/interactions -config config.yaml

在单聊发送 /interact。群聊按平台要求艾特机器人后发送同一命令。

注意事项 ​

  • SDK 配置不会替应用申请权限、创建菜单或更改平台订阅。
  • 消息回复和 ACK 分属不同操作,无法互相替代。SDK 不自动选择成功响应。
  • 按钮展示、平台权限和客户端兼容性需要在 QQ 客户端测试。本地测试无法验证这些结果。

另请参阅 ​

消息收发 · QQ 官方:消息交互概述 · QQ 官方:互动事件