如何通过HTTP POST将Movidesk附件上传至Azure DevOps工作项?
解决Movidesk与Azure DevOps集成中的附件上传问题
核心问题分析
你当前的问题是:仅通过Movidesk返回的fileName和path字段无法获取文件二进制内容,导致上传到Azure DevOps的附件为空。解决思路分为两步:从Movidesk拉取附件二进制数据,再将数据正确上传到Azure DevOps。
步骤1:通过Movidesk API获取附件二进制内容
Movidesk的path字段是附件的唯一标识符,需调用其附件内容API获取二进制数据(无需本地下载):
- API端点:
GET https://api.movidesk.com/public/v1/tickets/{ticketId}/attachments/{path}/content- 替换
{ticketId}为当前工单的ID(需从你获取attachments列表的Movidesk响应中提取) - 替换
{path}为附件对象里的path值(比如你的示例中的7BDEA1B62A8641FF86982D0CF9F3DEC0)
- 替换
- 认证方式:在请求Query参数中添加
apikey字段,值为你的Movidesk API密钥 - n8n节点配置:
- 添加
HTTP Request节点,方法选GET - 响应类型设置为
Binary(确保直接获取二进制文件数据) - 变量引用示例:URL填写
https://api.movidesk.com/public/v1/tickets/{{$json.ticketId}}/attachments/{{$json.path}}/content,自动从上游节点读取工单ID和附件path
- 添加
步骤2:将二进制数据上传到Azure DevOps
Azure DevOps的附件上传API要求请求体为文件二进制内容,需调整n8n节点配置:
- API端点:
POST https://dev.azure.com/{yourOrg}/{yourProject}/_apis/wit/attachments?fileName={movideskFileName}&api-version=7.1-preview.3- 替换
{yourOrg}和{yourProject}为你的Azure DevOps组织和项目名 - 替换
{movideskFileName}为Movidesk返回的fileName(比如minhaImagem.png)
- 替换
- 认证方式:使用Basic Auth,用户名留空,密码填你的Azure DevOps个人访问令牌(PAT),需确保PAT拥有Work Items的读写权限
- n8n节点配置:
- 添加
HTTP Request节点,方法选POST - 请求体类型选
Binary,并选择步骤1中获取的二进制数据 - 请求头添加
Content-Type,值设为application/octet-stream(通用二进制类型,也可根据文件类型指定,比如image/png)
- 添加
常见排查点
- 确认Movidesk API密钥拥有工单附件的访问权限
- 检查Azure DevOps PAT的权限范围,需包含
Work Items (Read & Write) - 验证n8n节点的变量引用是否正确,确保
ticketId、path、fileName参数传递无误 - 查看Azure DevOps API响应的状态码,200/201表示上传成功,若返回错误需根据提示调整请求头或权限
内容的提问来源于stack exchange,提问作者LosinChances
相关产品推荐
相关产品推荐

