将自定义属性添加到DocuSign信封

时间:2017-05-05 15:06:55

标签: vb.net controller docusignapi

问题:

如何将自定义属性(如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)

1 个答案:

答案 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