Freshservice工单自动化:/Changes接口POST请求返回400/403/404错误
排查Freshservice工作流Webhook POST变更请求错误的方案
1. 修正API认证方式
- Freshservice API的Basic Auth要求:将你的个人API密钥加上冒号(
your_api_key:),然后做Base64编码。不要直接编码API密钥本身,缺失冒号会导致403权限错误。 - 在Webhook的自定义请求头里添加:
Authorization: Basic <base64编码后的字符串>,确保头名和值的格式正确,不要有多余空格。 - 验证编码是否正确:可以在本地终端执行
echo -n "your_api_key:" | base64生成正确的编码串,避免手动输入错误。
2. 修复请求体格式与必填字段
400错误几乎都是请求体不符合要求,按以下步骤检查:
- 确保Webhook内容格式选择高级,并严格使用JSON格式,不要有语法错误(比如逗号遗漏、引号不配对)。
- 参考Freshservice变更请求API的必填字段:至少包含
description、subject、priority、status、change_type这些核心字段。示例请求体:
{ "change": { "subject": "{{ticket.subject}}", "description": "从服务请求转换而来:{{ticket.description}}", "priority": 2, "status": 1, "change_type": 1 } }
- 检查工单变量引用是否正确:确保使用的变量(如
{{ticket.subject}})与Freshservice工作流提供的变量名称一致,不要拼写错误。
3. 验证Webhook配置细节
- 确认回调URL正确:
https://myurl.freshservice.com/api/v2/changes,注意替换为你的Freshservice实例域名,不要有拼写错误。 - 请求方法必须选POST,误选PUT会返回404(PUT需要指定具体变更ID)。
- 手动添加
Content-Type: application/json到自定义请求头,确保API能正确识别JSON格式的请求体。
4. 排查工作流触发逻辑
- 确认“主题包含‘change’”的判断条件:注意是否区分大小写,可设置为不区分大小写的匹配规则,避免因大小写问题导致工作流不触发或触发错误。
- 测试时手动创建一个主题明确包含“change”的服务请求,用抓包工具查看实际发送的请求内容,对比官方文档要求,快速定位差异点。
内容的提问来源于stack exchange,提问作者arridadiyaat
相关产品推荐
相关产品推荐

