我希望单个DocuSign Template / PowerForm创建的所有文档都配置了webhook,这样我就不需要continuously poll every 15 minutes来获取已完成的文档。我已经完成了很多阅读,并想知道在DocuSign API中是否可以实现这一点。
我有一个自助服务豁免文件:用户导航到URL,填写他们的联系信息(即定义收件人角色),并期望他们完成的豁免被链接系统识别。
我在DocuSign template中使用PowerForm:用户导航到PowerForm的URL,PowerForm会让他们从关联的模板中创建一个新的信封。< / p>
我希望此设置创建的文档能够在完成后通过标准webhook自动通知HTTPS端点。
Envelopes::create
方法(POST /v2/accounts/{accountId}/envelopes
)接受可用于配置webhook的eventNotification
参数。 webhook recipe非常适合使用此端点。如果我通过API请求创建每个Envelope,这将解决我的问题,但我喜欢PowerForm附带的可复制URL的简易性。
没有记录,但似乎Envelopes::update
(PUT /v2/accounts/{accountId}/envelopes/{envelopeId}
)可能支持在已创建的信封上配置通知。我可以多次query the most current envelopes获取我的模板,更新正在进行的信封中的通知并处理已完成的信封,但这并不比轮询更好。
我浏览了REST API,特别是Templates和PowerForms类别,但我没有看到任何明显的方法来配置任何资源来设置eventNotification
创造了信封。
这是我已完成的一些API探索的快速代码转储:
#!/usr/bin/env python3
import requests
username = 'user@example.com'
password = 'some-sensitive-password'
integrator_key = 'abcdef01-2345-6789-0abcdef0123456789'
# Authenticate to the DocuSign API, get the base URL for subsequent requests
authenticate_str = (
"<DocuSignCredentials>"
"<Username>" + username + "</Username>"
"<Password>" + password + "</Password>"
"<IntegratorKey>" + integrator_key + "</IntegratorKey>"
"</DocuSignCredentials>"
)
headers = {'X-DocuSign-Authentication': authenticate_str,
'Accept': 'application/json'}
api_base = 'https://demo.docusign.net/restapi/v2/'
resp = requests.get(api_base + 'login_information', headers=headers)
base_url = resp.json()['loginAccounts'][0]['baseUrl']
# Identify all templates in my account
resp = requests.get(base_url + '/templates', headers=headers)
all_templates = resp.json()['envelopeTemplates']
# (Find my template, explore ways I could modify it with PUT, etc.)
template_id = find_desired_template(all_templates)
resp = requests.get(base_url + '/templates/{}'.format(template_id), headers=headers)
# Find just status changed envelopes from some recent date/datetime
resp = requests.get(base_url + '/envelopes',
params={'from_date': '2018-01-26'}, headers=headers)
# Configure just a single envelope to have push notifications
envelope_id = resp.json()['envelopes'][0]['envelopeId']
# Configure this _one_ envelope to notify us when completed.
# WARNING: This isn't repeatable: The next auto-created envelope won't work
event_notification = {
"url": "https://my-own-api.example.com/some/endpoint",
"loggingEnabled": "true",
"requireAcknowledgment": "true",
"useSoapInterface": "false",
"includeCertificateWithSoap": "false",
"signMessageWithX509Cert": "false",
"includeDocuments": "true",
"includeEnvelopeVoidReason": "true",
"includeTimeZone": "true",
"includeSenderAccountAsCustomField": "true",
"includeDocumentFields": "true",
"includeCertificateOfCompletion": "true",
# Only notify on completion
"envelopeEvents": [
{"envelopeEventStatusCode": "completed"}
],
"recipientEvents": [
{"recipientEventStatusCode": "Completed"},
],
}
requests.put(base_url + '/envelopes/{}'.format(envelope_id),
headers=headers,
json={'eventNotification': event_notification})
我的帐户未配置为DocuSign Connect,这样我就可以在帐户中的文档完成时每隔时通知HTTPS端点。我使用的是共享帐户(正在使用其他不相关的信封/模板),因此无论如何这都不是理想的解决方案。
答案 0 :(得分:1)
出于商业原因,如果购买了帐户级连接选项,则连接网络挂钩只能与所有信封(或模板/电源表中的所有信封)关联。它可作为许多帐户类型的附加组件使用。
在这种情况下,如您所述,您的webhook监听器将收到其不感兴趣的信封事件的通知。对于这些通知消息,请回复200(已接收),然后丢弃该信息。