如何在SSIS中调用DocuSign API获取文档并下载至指定文件夹
SSIS处理DocuSign文档接口二进制流落地实现方案

你当前使用JSON源连接器请求文档接口无法获取负载的核心原因是,/restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}接口返回的是application/pdf类型的二进制流,并非JSON格式,JSON源连接器无法识别处理该类响应。
以下是两种可落地的SSIS实现方案:
方案1:脚本任务实现(推荐,适配自定义文件夹/文件名命名规则)
- 保留现有元数据同步流程:继续使用原有JSON源调用拉取所有信封ID(envelopeId)、文档ID(documentId)、文档名称等元数据,将结果存储到SSIS对象变量或者临时表中。
- 新增Foreach循环容器,遍历所有元数据记录,将accountId、envelopeId、documentId、文档名称映射为对应的SSIS字符串变量。
- 在Foreach循环内添加脚本任务,引用已经配置好权限的DocuSign HTTP连接管理器,完成文件下载和保存逻辑,核心C#代码如下:
using System.IO; using Microsoft.SqlServer.Dts.Runtime; using System.Net; public void Main() { // 读取SSIS变量 string accountId = Dts.Variables["User::accountId"].Value.ToString(); string envelopeId = Dts.Variables["User::envelopeId"].Value.ToString(); string documentId = Dts.Variables["User::documentId"].Value.ToString(); string docName = Dts.Variables["User::documentName"].Value.ToString(); string rootPath = Dts.Variables["User::DocuSignSaveRootPath"].Value.ToString(); // 拼接请求路径与保存路径 string reqUrl = $"{Dts.Connections["DocuSign_HTTP"].ConnectionString}/restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/{documentId}"; string saveFolder = Path.Combine(rootPath, envelopeId); string fullSavePath = Path.Combine(saveFolder, $"{docName}.pdf"); // 创建目标文件夹 if (!Directory.Exists(saveFolder)) Directory.CreateDirectory(saveFolder); // 调用HTTP连接下载二进制流 HttpClientConnection httpConn = (HttpClientConnection)Dts.Connections["DocuSign_HTTP"].AcquireConnection(null); httpConn.ServerURL = reqUrl; byte[] fileBytes = httpConn.DownloadData(); // 写入本地文件 File.WriteAllBytes(fullSavePath, fileBytes); Dts.TaskResult = (int)ScriptResults.Success; }
- 后续可直接使用生成的文件完整路径调用OnBase上传接口,已有的元数据可直接传入CRM业务流程,无需额外适配。
方案2:无代码配置实现(适合不希望编写自定义代码的场景)
- 替换文档接口的调用组件:不再使用JSON源连接器请求文档接口,改用「Web服务任务」关联已有的HTTP连接管理器,将接口返回的二进制结果存储到SSIS字节类型变量
User::DocBinary中,同时将envelopeId、文档名称存储为对应字符串变量。 - 添加派生列转换,通过表达式生成完整保存路径:
表达式示例:@[User::RootSavePath] + "\\" + @[User::envelopeId] + "\\" + @[User::documentName] + ".pdf",将结果输出到新列FullSavePath。 - 添加「导出列」转换,配置提取列为
User::DocBinary,文件路径列为FullSavePath,勾选「强制截断」即可自动将二进制流写入目标路径。
注意:如果你的网络路径需要权限验证,请确保SSIS作业运行的服务账号对目标存储文件夹有读写权限。
内容的提问来源于stack exchange,提问作者Matt West
相关产品推荐
相关产品推荐

