表单/问卷配置Webhook地址
在表单设置时,发布者可配置一个webhook地址(在表单设置页面底部),以便在自己的服务器中接收表单事件推送。事件包括:验证、用户新增答卷、用户修改答卷、用户通知删除答卷、用户撤回删除通知、管理员删除答卷、发布者清空答卷,下面是各事件推送时携带的信息:
请求方式
POST
发起IP
124.220.208.87(接收端可用于校验请求是否可信)
请求头
x-from-appid: "wx5c9674e6177b0f6a" // 固定值"wx5c9674e6177b0f6a"
x-event-type: "" // 与请求参数eventType的值一致
x-event-requestid: "" // 系统请求ID
验证
在配置webhook地址时,首先需要点击验证,接收到验证事件时,可保存表单信息到自己的服务器中,如果修改表单题目,可再次点击验证以同步题目。
请求参数
eventType: "checkAndInitForm" // 事件类型,固定值"checkAndInitForm"
formId: "" // 表单ID
formName: "" // 表单名称
subjectArray: [{_id:"",name:"",type:"",typeName:"",required:true,optionArray:[]}] // 表单题目列表,以便与用户答卷信息匹配
- 接收端返回
接收端收到验证请求后,应在3秒钟内响应HTTP状态码200,并返回请求参数formId的值,否则视为验证失败。
重试机制
除验证以外的其他事件,接受端在收到事件推送后,应在3秒钟内响应HTTP状态码200,否则将视为推送失败。推送失败的事件将会进入重试队列,最多重试3次。
重试规则如下:
第一次重试,首次失败后2分钟
第二次重试,首次失败后10分钟
第三次重试,首次失败后30分钟
注意:如果重试3次仍然推送失败,系统会将该表单的Webhook配置改为验证失败,请保证你的接收端正常后,去表单设置中重新验证Webhook地址。
用户新增答卷
- 请求参数
eventType: "addAnswer" // 事件类型,固定值"addAnswer"
formId: "" // 表单ID
answerId: "" // 答卷ID
userId: "" // 小程序用户ID
answer: {题目ID:"",spendTime:0} // 答卷信息,题目ID作为key,以便与验证时的表单题目列表匹配。
state: "" // 发布者自定义传的值
- state参数解释
发布者在使用复制路径分发表单时,可选择在路径后面拼接一个自定义参数state,用户提交表单时,系统会将该参数及其值推送给接收端,以便接收端做数据绑定等操作。比如路径是:thorPage/form/show/show?id=xxx,拼接state参数后则为:thorPage/form/show/show?id=xxx&state=xxx。
用户修改答卷
- 请求参数
eventType: "updateAnswer" // 事件类型,固定值"updateAnswer"
formId: "" // 表单ID
answerId: "" // 答卷ID
userId: "" // 小程序用户ID
answer: {题目ID:"",spendTime:0} // 答卷信息,题目ID作为key,以便与验证时的表单题目列表匹配。
state: "" // 发布者自定义传的值
- state参数解释
发布者在使用复制路径分发表单时,可选择在路径后面拼接一个自定义参数state,用户提交表单时,系统会将该参数及其值推送给接收端,以便接收端做数据绑定等操作。比如路径是:thorPage/form/show/show?id=xxx,拼接state参数后则为:thorPage/form/show/show?id=xxx&state=xxx。
用户通知删除答卷
- 请求参数
eventType: "notifyDelete" // 事件类型,固定值"notifyDelete"
formId: "" // 表单ID
answerId: "" // 答卷ID
用户撤回删除通知
- 请求参数
eventType: "cancelDelete" // 事件类型,固定值"cancelDelete"
formId: "" // 表单ID
answerId: "" // 答卷ID
管理员删除答卷
- 请求参数
eventType: "deleteAnswer" // 事件类型,固定值"deleteAnswer"
formId: "" // 表单ID
answerId: "" // 答卷ID
managerName: "" // 数据管理员名字(如是发布者删除,名为"表单发布者")
发布者清空答卷
- 请求参数
eventType: "clearAnswer" // 事件类型,固定值"clearAnswer"
formId: "" // 表单ID