跳到主要内容

Webhook

Webhook 在答卷新增或修改时,把所选数据发送到业务系统的 HTTP 接口。适合报名信息同步、工单创建和业务状态更新。

本文截图来自当前 Chrome 中的“培训报名与反馈(文档演示)”。示例地址使用 example.com 占位,演示任务保持关闭;实际接入时应替换为自己的接收地址。

进入自动推送​

打开项目,进入 设置 → 消息通知 → 自动推送。首次配置点击 点击新增;已有任务时点击 新增消息推送任务。

当前消息通知入口,自动推送列表中有一条关闭的演示任务

每条任务可以独立开启、关闭、编辑或复制。新建任务保存后默认开启;如果还未准备好接收接口,保存后先将任务关闭。项目设置显示“已自动保存”后生效。

1. 设置触发条件​

填写任务名称,例如“报名信息同步”,再选择触发事件和数据范围。

配置含义
新增数据答卷第一次正式提交时触发,包含暂存后的首次提交;填写人和管理员操作均适用
修改数据已正式提交的答卷被修改时触发;与第一次提交分开配置
全部数据对符合触发事件的所有答卷执行
符合条件的数据仅对满足所设条件的答卷执行,例如所属部门为“产品中心”

只保存草稿不等于正式提交。编辑了任务配置也不会自动补推历史答卷。

2. 配置请求和数据字段​

在 操作类型 选择 发送 Webhook。

Webhook 基础配置:任务触发条件、请求地址、POST 方法、数据字段与认证方式

字段配置方法
请求地址接收方提供的完整接口地址,例如 https://api.example.com/training/registrations
请求方法支持 POST、PUT、PATCH、GET、DELETE;默认 POST。通常使用接收方支持的 POST JSON 接口
数据字段勾选要放入 answer 的题目答案或系统字段,如姓名、联系邮箱、所属部门、提交时间、答案 ID
认证方式按接收方要求选择无认证、Bearer Token、Basic Auth 或 API Key
请求头默认使用 Content-Type: application/json,可以展开后补充自定义 Header

接收地址由卷王后端服务器访问。浏览器能打开某个地址,并不一定代表服务器能够访问它。

认证怎么填​

认证方式需要填写发送方式
无认证无不附加认证信息
Bearer TokenTokenAuthorization: Bearer …
Basic Auth用户名、密码HTTP Basic 认证
API KeyHeader 名称和 Key把 Key 放入指定请求头,例如 X-API-Key

使用接收系统专门分配的凭证,不要填卷王管理员的登录密码。截图和对外示例中使用占位值。

3. 设置超时、重试和附加参数​

展开 高级设置,按业务需要调整。

高级设置中的超时、自定义 source 参数与重试配置

配置当前范围与说明
超时时间默认 5000 毫秒,可设置 1000 ~ 60000 毫秒
自定义参数在请求体顶层追加字段;可以填写固定内容,也可以通过“插入问题答案”引用答案
启用重试默认未开启,按需勾选
重试次数可填 1 ~ 10;当前实现表示总尝试次数,包含第一次请求。填 3 表示最多发起 3 次请求
重试间隔默认 1000 毫秒,可设置 100 ~ 10000 毫秒

例如增加 source 参数,值填写 training-demo,接收方就可以识别这批数据的来源。不要使用 project、answer、survey 作为自定义参数名,以免覆盖请求体中的同名字段。

接收接口返回 2xx 状态码时视为请求成功。连接失败、超时或非 2xx 响应会按已配置的重试规则处理。业务系统应自行识别重复请求,例如使用“项目 ID + 答案 ID”作为去重依据,避免重复创建记录。

4. 查看推送内容预览​

展开 推送内容预览,核对选中的字段、题目 ID 和问卷结构。

推送内容预览展示 project、所选 answer 字段和 survey 结构

预览里的 {{姓名}}、{{createTime}} 等是占位提示,不是实际答卷值,也不代表已经发送成功。

顶层字段含义
project当前项目 ID
answer仅包含所选的题目答案和系统字段;题目使用题目 ID 作为键
survey当前问卷结构,用于把题目、选项 ID 对应到标题;它不随“数据字段”的勾选而裁剪
自定义参数追加在顶层,例如 source

下面是简化的请求体示例,survey 只保留了理解数据所需的部分;实际推送包含完整问卷结构。

{
"project": "demo-project",
"answer": {
"q_name": { "name_input": "示例用户" },
"q_email": { "email_input": "learner@example.com" },
"q_department": { "product_center": true },
"answerId": "demo-answer-001",
"createTime": 1792339200000
},
"survey": {
"id": "demo-project",
"title": "培训报名与反馈",
"children": [
{
"id": "q_department",
"type": "Radio",
"title": "所属部门",
"children": [
{ "id": "product_center", "title": "产品中心", "type": "Option" }
]
}
]
},
"source": "training-demo"
}

单选、多选等题目通常以选项 ID 为键,文本题以填空项 ID 为键;矩阵题还包含行、列层级。不要把所有答案都当成字符串,也不要直接用题目显示标题取值,应结合 survey 结构解析。

系统字段只在勾选后进入 answer。例如选择“答案 ID”后发送 answerId;选择提交时间后发送 createTime。匿名答卷的提交人不会作为普通实名用户信息推送。

5. 联调和查看执行结果​

  1. 用接收系统的测试地址和测试凭证配置任务。
  2. 核对字段与触发条件后开启任务,提交一份示例答卷。
  3. 在 统计 → 消息推送 查看本次执行的状态、任务详情、HTTP 状态码或错误信息;也可以从对应答卷的数据详情查看自动化执行情况。
  4. 对照接收端日志检查数据格式,再决定是否启用重试或条件筛选。
  5. 失败任务可在执行记录中按页面提供的操作重试。重试前先确认接收方是否已经处理过请求,避免业务重复。

消息通知 → 发送记录用于查看主动发送消息的记录;Webhook 的任务执行应在“统计 → 消息推送”的执行记录中核对。配置页的 JSON 预览不能代替实际联调。

当前消息推送记录页面,可按状态筛选并查看执行详情

截图中的演示任务保持关闭,因此没有执行记录;实际联调后应以记录详情和接收端日志为准。

常见问题​

现象检查方法
提交后没有收到请求检查任务是否开启、答卷是否正式提交、触发事件是否正确、是否满足数据条件
新增能推送,修改不推送新建或调整一条“修改数据”任务,并核对修改后的数据是否满足条件
401 或 403检查认证方式、Token、用户名密码或 API Key Header 名称
404 或连接失败检查后端服务器能否访问目标地址、接口路径和请求方法是否正确
请求成功但业务没处理2xx 只代表 HTTP 层成功,还需检查接收端业务响应和处理日志
收到重复数据检查自动重试、手动重试及答卷修改事件;接收端按业务键去重
答案只有 ID,没有题目名称通过 survey.children 中的题目和选项定义建立映射

需要邮件或短信通知时,使用同一入口选择相应操作类型,详见 邮件服务 和 短信服务。