调用Zendesk Requests API提交工单报错Email cannot be blank如何解决?
问题根因
你收到的报错中field_key: 360013402611对应的不是请求体里requester.email字段,是你的Zendesk实例配置的必填自定义工单字段,该字段要求传入邮箱值,你未在请求参数中传递该字段才触发了校验错误。你调用/api/v2/requests和/api/v2/requests.json返回结果一致是正常的,两个是Zendesk的同功能接口。
解决方案
按以下步骤排查修改即可:
- 步骤1:处理自定义字段校验
登录Zendesk管理后台,进入「管理中心」→「对象和规则」→「工单」→「字段」,查找ID为360013402611的字段:- 如果该字段不需要在匿名提交时必填,直接关闭「工单提交时必填」的开关即可
- 如果该字段为必填字段,在请求体的
request节点下新增custom_fields参数传递对应值,修改后的请求体构造代码如下:
export const sendZendeskTicket = async (description, email, name) => { let body = { "request": { "requester": { "email": email, "name": name }, "subject": "some test subject", "comment": { "body": description }, // 新增自定义字段传参 "custom_fields": [ { "id": 360013402611, "value": email } ] } } console.log(body) let request = await fetch(`https://*some_domain*.zendesk.com/api/v2/requests`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }) let response = await request.json() console.log(JSON.stringify(response)) return response.ok }
- 步骤2:确认匿名提交权限开启
进入Zendesk后台「工单设置」页面,确认「任何人都可以提交工单」开关已开启,避免匿名提交触发额外校验。 - 步骤3:排查CORS配置
确认你的React Native应用请求源已经加入Zendesk后台的CORS白名单,防止请求参数被过滤导致字段丢失。
内容的提问来源于stack exchange,提问作者Anton A.
相关产品推荐
相关产品推荐

