表情回应
代理使用 message 工具的 react 操作添加和移除 emoji 反应。行为因渠道而异。
工作原理¶
- 添加反应时,
emoji为必填项。 - 将
emoji设置为空字符串("")可移除机器人在支持此功能的渠道上的反应。 - 设置
remove: true可移除某个特定的 emoji(需要非空的emoji)。 clearAll: true是飞书/Lark 专用的标志,用于移除机器人在消息上放置的所有反应。它与空的emoji搭配使用。emoji-list是message工具中独立的一个操作,而非react参数。它报告渠道会接受的 emoji。其返回值以及启用它的按渠道操作开关均因渠道而异。请参阅渠道下的各渠道页面。- 在支持状态反应的渠道上,对反应设置
trackToolCalls: true可让运行时在同一次对话的状态生命周期中复用该已被反应的消息。Discord 会在工作期间保持所选反应稳定,并在实际失败时发出信号,而不是循环切换工具专属 emoji。
渠道行为¶
Discord 和 Slack
- 空的
emoji会移除机器人在该消息上的所有反应。 remove: true仅移除指定的 emoji。
Nextcloud Talk
- 仅支持添加反应:
emoji为必填项且不能为空。 - 反应移除尚未接入删除调用。
remove: true会被显式错误拒绝,而不是静默无操作。 - 要求 Talk 机器人已注册
reaction功能(参见 Nextcloud Talk 渠道文档)。
Telegram
- 使用
emoji-list可查找允许的标准反应和数字自定义 emoji 标识符。在 Telegram 上,channels.telegram.actions.reactions同时控制react和emoji-list,并且emoji-list会返回当前聊天中允许的反应。 - 空的
emoji会移除机器人的反应。 remove: true同样会移除反应,但仍需要非空的emoji才能通过工具校验。
- 空的
emoji会移除机器人的反应。 remove: true在内部映射为空 emoji(工具调用中仍需要emoji)。- WhatsApp 每条消息只有一个机器人反应位。发送新反应会替换掉旧反应,而不是堆叠多个 emoji。
Zalo Personal (zalouser)
- 添加和移除都需要非空的
emoji。 remove: true会移除该特定的 emoji 反应。
飞书/Lark
- 与其他渠道一样使用
react操作(通过消息反应 ID 添加/移除/列出),而非单独的工具。 - 添加时需要非空的
emoji(映射到飞书emoji_type,例如SMILE、THUMBSUP、HEART)。 remove: true需要非空的emoji,并移除机器人自身匹配该 emoji 类型的反应。- 使用
clearAll: true且emoji为空时,会移除机器人在消息上的所有反应。
Signal
channels.signal.reactionNotifications控制入站反应通知。"off"禁用它们。"own"(默认)在用户对机器人消息做出反应时发出事件。"all"为所有反应发出事件。"allowlist"仅为channels.signal.reactionAllowlist中的发送者发出事件。
iMessage
- 对外反应是 iMessage 点按回应(
love、like、dislike、laugh、emphasize和question)。emoji必须映射为其中一种类型才能添加反应。 remove: true若未指定可识别的点按回应类型,则会移除所有点按回应类型。若指定了可识别类型,则仅移除该类型。
反应级别¶
各渠道的 reactionLevel 会限制代理发送自身反应的频率。可选值:off、ack、minimal 或 extensive。
- Telegram 反应级别 -
channels.telegram.reactionLevel(默认minimal) - WhatsApp 反应级别 -
channels.whatsapp.reactionLevel(默认minimal) - Signal 反应 -
channels.signal.reactionLevel(默认minimal)
相关¶
- Agent Send - 包含
react操作的message工具 - 渠道 - 渠道特定配置
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw