全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何获取DocuSign信封取消原因:解析审计日志

DocuSign的`getEnvelope` API调用通常无法直接获取信封的详细取消原因。要获取这一信息,需要通过DocuSign API访问信封的审计日志。审计日志记录了信封生命周期内的所有事件,包括取消操作及其原因。通过解析这些事件,可以准确提取出信封被拒绝或取消的具体理由。

在DocuSign的API中,标准获取信封状态的调用,如getEnvelope,通常会返回信封的基本信息和当前状态,但对于信封被取消或拒绝的具体原因,这些信息往往不会直接提供。为了获取这一关键细节,开发者需要深入到信封的审计事件(Audit Events)中进行查找。

1. 理解DocuSign审计日志

DocuSign信封的审计日志是一个时间序列的事件列表,记录了信封从创建到完成或取消的每一个重要操作。这包括发送、签名、查看、拒绝、取消等。当一个信封被取消(Voided)时,相关的取消原因也会作为事件的一部分被记录下来。

2. 获取信封审计事件

要获取信封的审计事件,您需要使用EnvelopesApi中专门用于此目的的方法,通常是getEnvelopeAuditEvents。这个方法会返回一个包含所有审计事件的列表。

以下是一个使用PHP的示例代码,演示如何配置DocuSign API客户端并调用getEnvelopeAuditEvents来获取信封的审计日志:

accessToken = $accessToken;
        $this->accountId = $accountId;
        $this->envelopeId = $envelopeId;

        $config = new Configuration();
        $config->setHost($baseUrl);
        $config->addDefaultHeader('Authorization', 'Bearer ' . $this->accessToken);
        $this->apiClient = new ApiClient($config);
    }

    /**
     * 获取信封的审计事件,并尝试解析取消原因
     *
     * @return string|null 返回取消原因,如果未找到则返回null
     */
    public function getEnvelopeCancellationReason()
    {
        try {
            $envelopeApi = new EnvelopesApi($this->apiClient);

            // 调用API获取信封的审计事件
            // 注意:具体方法名和参数可能因SDK版本而异,请参考DocuSign官方SDK文档
            $auditEvents = $envelopeApi->getEnvelopeAuditEvents(
                $this->accountId,
                $this->envelopeId
            );

            $cancellationReason = null;

            if ($auditEvents && isset($auditEvents->auditEvents)) {
                foreach ($auditEvents->auditEvents as $event) {
                    // 寻找描述中包含“Envelope Voided”或“Envelope Cancelled”的事件
                    // 具体的描述文本可能因DocuSign系统语言或事件类型而异
                    if (isset($event->description) && strpos($event->description, 'Envelope Voided') !== false) {
                        // 取消原因通常包含在eventData属性中,它是一个JSON字符串
                        if (isset($event->eventData)) {
                            $eventData = json_decode($event->eventData, true);
                            if (isset($eventData['voidReason'])) {
                                $cancellationReason = $eventData['voidReason'];
                                break; // 找到原因后即可退出循环
                            }
                        }
                    }
                }
            }
            return $cancellationReason;

        } catch (\DocuSign\eSign\ApiException $e) {
            // 处理API调用异常
            echo "DocuSign API 错误: " . $e->getMessage() . "\n";
            return null;
        } catch (\Exception $e) {
            // 处理其他异常
            echo "发生错误: " . $e->getMessage() . "\n";
            return null;
        }
    }
}

// 示例用法
// $accessToken = env('DOCUSIGN_ACCESS_TOKEN');
// $accountId = env('DOCUSIGN_ACCOUNT_ID');
// $envelopeId = 'YOUR_ENVELOPE_ID'; // 替换为实际的信封ID
// $baseUrl = env('DOCUSIGN_BASE_URL'); // 例如:'https://demo.docusign.net/restapi'

// $service = new DocuSignEnvelopeService($accessToken, $accountId, $envelopeId, $baseUrl);
// $reason = $service->getEnvelopeCancellationReason();

// if ($reason) {
//     echo "信封取消原因: " . $reason . "\n";
// } else {
//     echo "未找到信封取消原因,或信封未被取消。\n";
// }

?>

3. 解析审计事件以提取取消原因

获取到auditEvents列表后,您需要遍历这个列表,查找与信封取消相关的事件。通常,取消事件会在其description属性中包含关键词,例如“Envelope Voided”(信封已作废)。

一旦找到这样的事件,取消的具体原因通常会存储在事件的eventData属性中。eventData通常是一个JSON格式的字符串,其中包含详细的事件元数据,包括voidReason(作废原因)。您需要解析这个JSON字符串来提取所需的原因。

注意事项

  • API版本兼容性: DocuSign API和SDK会不断更新,上述代码示例中的方法名、属性名或返回结构可能随版本变化。请始终参考DocuSign官方开发者文档或SDK的最新示例。
  • 错误处理: 在实际应用中,务必对API调用进行健壮的错误处理,包括网络问题、认证失败、权限不足或信封ID无效等情况。
  • 性能考量: 对于包含大量事件的信封,getEnvelopeAuditEvents可能会返回大量数据。在处理这些数据时,应考虑性能优化。
  • 事件描述多样性: 尽管“Envelope Voided”是常见的描述,但在某些特定场景或多语言环境中,描述文本可能会有所不同。如果无法找到,可能需要检查其他相关的事件描述或属性。

总结

通过利用DocuSign的审计日志功能,即使标准API调用无法直接提供,您也能够获取到信封被取消或拒绝的详细原因。关键在于调用getEnvelopeAuditEvents方法,并仔细解析返回的事件列表,特别是关注那些描述为“Envelope Voided”的事件,并从其eventData中提取voidReason。这一方法为开发者提供了深入了解信封生命周期中关键事件的强大能力。


# php  # js  # json  # composer  # access  # 多语言  # api调用  # 网络问题  # .net  # 字符串  # 事件  # 性能优化  # 关键词  # 是一个  # 这一  # 您需要  # 通常会  # 未找到  # 而异  # 文档  # 也会  # 遍历 


相关文章: 制作农业网站的软件,比较好的农业网站推荐一下?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  想学网站制作怎么学,建立一个网站要花费多少?  如何基于云服务器快速搭建个人网站?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何快速重置建站主机并恢复默认配置?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何在七牛云存储上搭建网站并设置自定义域名?  山东云建站价格为何差异显著?  济南网站制作的价格,历城一职专官方网站?  如何零基础开发自助建站系统?完整教程解析  济南网站建设制作公司,室内设计网站一般都有哪些功能?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何制作一个表白网站视频,关于勇敢表白的小标题?  如何选购建站域名与空间?自助平台全解析  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  ,巨量百应是干嘛的?  如何使用Golang table-driven基准测试_多组数据测量函数效率  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  C++如何编写函数模板?(泛型编程入门)  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  建站之星图片链接生成指南:自助建站与智能设计教程  免费视频制作网站,更新又快又好的免费电影网站?  如何有效防御Web建站篡改攻击?  如何高效完成独享虚拟主机建站?  如何选择高性价比服务器搭建个人网站?  建站之星展会模版如何一键下载生成?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何彻底卸载建站之星软件?  小程序网站制作需要准备什么资料,如何制作小程序?  如何快速建站并高效导出源代码?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何通过宝塔面板实现本地网站访问?  如何通过VPS搭建网站快速盈利?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何正确选择百度移动适配建站域名?  宝塔新建站点报错如何解决?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何快速查询网址的建站时间与历史轨迹?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星如何取消后台验证码生成?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  中山网站制作网页,中山新生登记系统登记流程?  建站之星客服服务时间及联系方式如何?  如何通过.red域名打造高辨识度品牌网站?  如何用PHP快速搭建高效网站?分步指南  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。