如何将自定义属性(如user_id
)添加到DocuSign信封中,以便当我收到来自DocuSign的回调时,我可以检索关联的user_id
? (在VB.Net中)
我已经阅读了有关Custom Fields的文档,虽然这似乎是我在管理面板中的模板上创建它们 - 如果可能的话,我宁愿在代码中动态创建它们。尽管如此,我试图使用这种方法(失败)。代码包含在下面。
手动设置EnvelopeID:
envDef.EnvelopeId = app_Id
EnvelopID被DocuSign自动生成的GUID覆盖
创建自定义字段:
(在管理面板中创建名为User_ID
的文本自定义文件后...)
Dim user_id_field As New TextCustomField()
user_id_field.Name = "User_ID"
user_id_field.Value = user_id
Dim custom_fields As New CustomFields()
custom_fields.TextCustomFields.Add(user_id_field)
envDef.CustomFields = custom_fields
DocuSign XML有效负载中完全没有自定义字段
我可以创建一个关联表,在创建信封时将DocuSign的EnvelopeID
GUID与user_id
相关联。然后我可以使用EnvelopeID
在回调中查找user_id
。
以下代码效果很好。用户收到文档,签名,我们会在文档已发送时以及文档已完成时收到回调。当然,缺少的部分是将DocuSign传递给我的自定义属性。
(为了简洁起见,我排除了很多信息,如角色,模板等。)
Dim envDef As New EnvelopeDefinition()
Dim envelope_events As New List(Of EnvelopeEvent)
envelope_events.Add(New EnvelopeEvent("sent", True))
envelope_events.Add(New EnvelopeEvent("completed", True))
Dim recipient_events As New List(Of RecipientEvent)
recipient_events.Add(New RecipientEvent(True, "Sent"))
recipient_events.Add(New RecipientEvent(True, "Completed"))
recipient_events.Add(New RecipientEvent(True, "AuthenticationFailed"))
Dim notification As New EventNotification
' -- Notification properties excluded for brevity --
notification.EnvelopeEvents = envelope_events
notification.RecipientEvents = recipient_events
envDef.EventNotification = notification
Dim apiClient As New ApiClient("https://demo.docusign.net/restapi")
Dim cfi As New Configuration(apiClient)
Dim authHeader As String = "{""Username"":""" + userName + """, ""Password"":""" + password + """, ""IntegratorKey"":""" + INTEGRATOR_KEY + """}"
cfi.AddDefaultHeader("X-DocuSign-Authentication", authHeader)
Dim envelopesApi As New EnvelopesApi(cfi)
Dim envelopeSummary As EnvelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef)
答案 0 :(得分:1)
您不必总是在管理面板中创建自定义字段。您可以在通过API创建信封期间动态指定自定义字段。
以下内容应该有效。请参阅完整代码here。
Dim envDef = New EnvelopeDefinition()
envDef.EmailSubject = "[DocuSign C# SDK] - Custom Fields"
envDef.Status = "sent"
envDef.CustomFields = New CustomFields()
Dim textCustomField = New TextCustomField()
textCustomField.Name = "User_Id"
textCustomField.Value = "KTI456"
Dim textCustomFields = New List(Of TextCustomField)()
textCustomFields.Add(textCustomField)
envDef.CustomFields.TextCustomFields = textCustomFields