百积木文档
开发指南组织级基础能力

通知与投递

明确组织通知、渠道消息、已读和业务处理之间的边界,选择公开能力并验证投递结果。

组织通知表达“什么事需要告知谁”。渠道发送表达“把这段内容投递到哪个外部会话”。通知可能需要收件箱、偏好、模板、路由和投递记录;一次渠道发送不能自动代表这些能力都已执行。

按需求选择入口

需求使用方式
给已选定的企微私聊发一条消息按渠道与会话消息调用 sendExternalSessionMessage。
将结果发回原渠道会话调用 channel gateway 的 sendSessionMessage。
向已绑定群聊发送通知文本先查询群聊通讯录,再调用其公开群聊发送方法。
需要统一通知记录、偏好或多渠道路由先确认目标工作区已安装的通知能力和公开方法合同,再由通知能力安排投递。
要求某人处理并提交结果创建人工事项,消息只负责提醒和提供访问入口。

本章确认的 channel gateway 发送方法不承担统一通知收件箱或已读管理。不能因为平台存在通知实现, 就假设任意工作区都已安装同名 Module,或编造一个通用 notifyUser 方法。

从业务事件到投递

  1. 业务操作产生明确事件和业务对象引用,例如一份已生成报告或待处理事项。
  2. 从组织目录确定接收主体,从通讯录解析联系方式;不要把工作流执行用户默认当作接收人。
  3. 根据业务要求选择“通知能力管理投递”或“明确渠道会话直接发送”。
  4. 记录实际调用结果与关联业务对象,失败时进入可观察的处理路径。
  5. 需要用户处理时,查询事项结果;需要已读时,只使用对应渠道或通知能力确实提供的回执。

定时触发、事件触发和工作流编排分别见定时任务、 Event Trigger 开发和工作流。

成功、重试和重复消息

消息方法返回成功或 delivered: true,不等于用户已读,也不等于业务完成。 通过公开 API 调用时按照CModel 错误模型检查业务结果,不能仅凭 HTTP 状态判断。

网络超时可能发生在外部渠道已接受消息之后。给工作流添加自动重试前,必须确认目标方法的幂等合同和投递查询能力; 不能仅凭参数里出现 eventId 就推断整个链路保证去重。不确定是否已发送时,先检查执行记录和投递证据,再决定是否重发。

上线验收

用授权测试接收人验证成功路径、未绑定、渠道停用和权限不足。 区分“业务事件已产生”“通知已受理”“渠道已接受”“对方已读”“事项已完成”,只报告实际可证明的状态。

本页内容