通知与集成
「通知与集成」用于在收到有效提交后通知团队,或将指定答案发送到外部系统。一个表单可以有多个处理方案,每个方案可以包含多个动作。
每次收到有效提交后通知指定 Halo 用户,属于免费的普通提交通知。新增或扩展按回答条件执行的方案、Webhook,需要在「保存并启用」时具备有效许可证,方案草稿仍可保存。已有方案的维护范围见免费与授权。
创建第一条提交通知
- 从表单中心进入目标表单的「通知与集成」。建议先发布表单,再配置依赖回答字段的方案。
- 在「处理方案」旁点击「新建」,填写名称并确认关联的表单。
- 在「什么时候执行」中选择「每次收到有效提交」。
- 点击「通知团队成员」,搜索并选择一个或多个 Halo 用户。
- 点击页面顶部「保存并启用」。
- 到真实投放页面提交测试内容,再查看「投递历史」和收件人的 Halo 通知中心。
「保存草稿」不会启用新方案。修改已启用方案后,同样需要「保存并启用」才会更新执行版本。

通知中包含什么
Halo 通知包含表单标题、回执编号、提交时间、回答数量及收件箱入口,不直接发送完整答案。收件人需要相应的收件箱权限才能查看详情。
通知是否继续通过邮件等渠道送达,取决于 Halo 的通知器及用户接收设置。联系表单的投递成功表示通知已交给 Halo,不代表外部邮箱必然送达。
内部跟进记录只供团队查看,不会自动给提交者发送回复。
按回答条件分流
选择「回答满足条件时」,添加字段、判断方式和比较内容。多个条件可以要求全部满足或满足任一。
例如,「咨询类型」等于「商务合作」时通知销售团队,等于「技术支持」时通知支持团队,可分别创建两个方案。条件使用表单回答,不是收件箱后续设置的处理状态。
表单改动后,请检查条件引用的字段、选项,以及 Webhook 允许发送的字段是否仍然符合预期。
连接外部系统(Webhook)
适合连接能够接收 HTTP 请求的客户管理系统、工单服务或自动化平台。消息机器人若要求特定请求结构,通常需要接收服务转换后再转发,不能假定任意机器人地址都能直接使用。
配置前准备
- 一个可从 Halo 服务器访问的公网 HTTPS 接收地址。不支持本机或私有网络地址,也不会跟随重定向。
- 一个已在 Halo 中配置的签名 Secret,以及接收端使用的相同密钥。该配置通常由站点或集成服务维护者完成。
- 明确需要发送哪些答案。
添加 Webhook 动作
- 点击「连接外部系统」。
- 填写「接收地址(HTTPS)」。
- 在「允许发送哪些回答」中勾选需要的字段。默认不发送任何答案,但仍发送事件和提交的基本信息。
- 展开「高级安全设置」,填写必需的「Halo Secret 引用」,格式为
secret-name/key:斜杠前是 Secret 名称,后是其中的密钥项名称,不能直接填密钥明文。 - 点击「保存并启用」,用测试提交验证接收端,再检查投递历史。
此页面只引用已有 Secret,不负责创建它。不要把密钥填入表单字段、分享链接或公开代码中。
接收端需要处理什么
插件发送 JSON 格式的 POST 请求。事件包含事件编号、类型、时间,以及表单路径、回执编号、发布版本、接收时间和被允许发送的答案。data.answers 的键使用字段标识,应在接入时确认字段映射,不要将其直接等同于访客看到的标题或自定义 API 字段名。
接收端可通过以下请求头验证签名:
| 请求头 | 内容 |
|---|---|
webhook-id | 事件编号 |
webhook-timestamp | Unix 秒级时间戳 |
webhook-signature | v1, 后接 Base64 编码的 HMAC-SHA256 签名 |
签名原文为 webhook-id.webhook-timestamp.原始请求体,三个部分用英文句点连接。应使用收到的原始请求体校验,不能先解析再重新序列化;若密钥使用 whsec_ 前缀,计算前需将前缀后的内容按 Base64 解码。
接收端应校验时间戳与签名,并按事件、提交及业务动作去重,避免重试或手动重放造成重复处理。处理成功返回 2xx;429 和 5xx 会进入可重试失败,其他拒绝响应或重定向通常需要先修改配置。
查看投递历史与处理失败
在方案中切换到「投递历史」,查看动作、尝试次数和结果。通知失败不会撤销已经成功接收的表单提交。
| 状态 | 处理方式 |
|---|---|
| 等待中 / 执行中 | 等待任务执行,必要时刷新 |
| 成功 | 动作已完成;Halo 通知仍需结合通知器状态检查最终送达 |
| 等待重试 | 根据失败原因检查外部服务,系统按重试策略继续尝试 |
| 终止失败 | 检查地址、签名、收件人及接收端拒绝原因,再判断是否适合重放 |
| 结果不确定 | 先核对接收端是否已经处理,再决定是否重放 |
| 已取消 | 按实际需要决定是否重放 |
终止失败、结果不确定或已取消的记录可重放。重放仍使用原投递所对应的方案版本,不会自动采用后来修改的地址或动作;签名密钥通过原 Secret 引用在执行时读取。若问题在旧方案配置本身,仅发布新版再重放旧记录不能替换旧配置。
手动重放会产生新的事件编号,可能再次触发外部动作。接收端不能只依靠事件编号防止手动重放造成的业务重复,操作前应核对原提交是否已经处理。
启停与重试设置
已有发布版本的方案可以启用或停用。停用用于停止后续触发,已有投递任务仍应在投递历史中核对处理。
「高级失败重试设置」控制最大尝试次数、初始延迟、最大延迟和最长保留时间。没有明确的接收端要求时可保持默认值;重试次数用尽后,应先查原因再重放,避免重复制造失败任务。