关于 sent-messaging
sent-messaging 是通过 Sent 检查直接消息并准备模板发送的技能,强调范围核验、明确确认,以及谨慎报告投递状态和重试情况。
主要功能
- 01检查消息及其活动记录
- 02准备基于模板的发送
- 03按时区安排消息
- 04使用发送幂等键
- 05发送前要求明确确认
- 06区分已接受与已送达
适用场景
- 01查看消息当前状态
- 02检查投递生命周期事件
- 03准备经审核的模板消息
- 04安排指定时间发送消息
MCP 相关
该技能使用 `messages.get`、`messages.activities.list` 和 `messages.send` 等 MCP 工具。MCP 客户端处理 OAuth 授权;技能在变更前核验当前组织和 Sender Profile。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sentdm/ sent-plugin --skill sent-messaging安装后在 Claude Code 中输入/sent-messaging确认已加载。
附带文件agents/openai.yaml
详细介绍
发送消息
使用 messages.send、messages.get 和 messages.activities.list 操作直接消息工作流。
建立连接并确认范围
- 让 MCP 客户端执行 OAuth 2.1/PKCE 授权。绝不要请求、接受、打印或存储令牌、API 密钥、授权标头、客户端 ID 或机密。
- 执行变更前,显示当前连接所选的组织和 Sender Profile。如果客户端上下文未同时提供两者,则使用
sent-account-readiness检查已授权范围后再继续。 - 如果组织授权支持显式指定操作身份,请使用经过验证的操作身份。
- 尽量减少敏感信息输出。在可行时遮蔽电话号码;操作人员查看消息正文后,不要再次复述。
如果不支持 MCP 或授权失败,仍应让此技能可用于规划请求载荷。说明执行操作需要兼容的客户端或重新授权;绝不要要求用户粘贴凭据。
组织授权可以通过工具架构中的可选 profileId 选择自有 Sender Profile;省略该字段时,将以已认证账户身份操作。使用 sender_profiles.list 或 sender_profiles.get 验证所有权,并在预检读取、变更和后续读取中使用相同的选择器。Profile 授权不能使用此选择器。若要切换到其他组织或授权范围之外的 Profile,请重新授权。绝不要臆造范围字段或索取凭据。
检查消息
- 已知消息标识符时,使用
messages.get获取当前记录。 - 使用
messages.activities.list获取生命周期事件和投递证据。 - 说明发送已接受或已排队并不能证明已投递。只有返回状态或活动能证实已投递时,才报告为已投递。
- 返回回答问题所需的标识符、时间戳和状态证据;遮蔽收件人数据,除非确有必要,否则省略消息正文。
对于涉及大量投递记录的汇总趋势、漏斗或根因分析,转交给 messaging-performance-analyzer。
准备发送
- 确定目标渠道、Sender Profile、收件人、现有模板、变量、
scheduledAt和idempotencyKey。发送仅支持模板:先在相同的操作范围内使用templates.list或templates.get,在template中引用其真实 ID 或名称,并在template.parameters中提供所有已声明变量。绝不要将消息文本作为模板名称传入,也不要臆造自由文本参数。不要臆造缺失值。 - 对于高量发送,在准备变更前使用
sent-account-readiness检查balance.get。如果可用余额或账户就绪状态不足或不明确,则停止操作。 - 构建完整的
messages.send参数,但不要调用工具。 - 显示请求载荷预览,其中包含所选组织、Sender Profile、渠道、确切的目标地址、现有模板标识符及其已审核内容、变量,以及排期和幂等性输入。敏感内容仅显示一次;在操作人员仍能确认目标的前提下对其进行遮蔽。
- 针对此确切的请求载荷征求明确确认。对话中更早给出的概括性同意不够。
- 确认后立即调用
messages.send。如果任何请求载荷值、范围或上下文时效发生变化,请作废此次确认并重新显示预览。
绝不要在调用前未立即显示预览并取得明确确认的情况下调用 messages.send。
安排发送
scheduledAt 是可选的。将用户提供的日期、时间和时区解析为带有明确 UTC 偏移量或 Z 的 ISO-8601 时间戳;不带偏移量的时间戳会被拒绝。执行时,发送时间必须在未来 1 分钟至 30 天内。在预览中注明确切的本地时间和 UTC 时间,并在调用前重新验证时间范围。
接受后会返回 QUEUED 和 scheduledAt;随后消息会变为 SCHEDULED,可通过 messages.get 查看,并会在请求时间前后几分钟内发送。收件人的免打扰时段可能会使发送推迟到下一个允许的时间,该时间会通过 message.scheduled 报告。不要承诺精确的送达时间。账户的定时发送限制可能会导致发送被拒绝。没有 MCP 改期或取消工具;不要虚构此类工具。
对于架构支持的幂等性,请使用驼峰形式的 idempotencyKey;相同的键可在 24 小时内重放缓存的发送结果。恢复同一操作时,请保留原始键和参数。另一个不同的发送意图需要使用自己的键。幂等性不能替代审核和确认。
处理结果和重试
- 报告消息标识符和返回的接受状态。如果响应仅能确认已接受或已排队,就说“已接受”或“已排队”;不要说“已送达”。
- 用户询问后续送达状态时,使用
messages.get或messages.activities.list。 - 将每次重试都视为新的变更:重新构建载荷、展示新的预览,并在重试前立即获取新的明确确认。
- 绝不要盲目重试结果不明确的发送。如果首次调用超时或结果未知,且存在标识符,则检查
messages.get和messages.activities.list。如果没有确凿证据,请报告结果未知及重复发送风险。只有在操作人员选择重试并完成新的预览和确认后,才能再次尝试发送。