如何从docusign信封中检索模板ID

时间:2015-10-14 13:12:20

标签: docusignapi

我已经从模板创建了一个DocuSign信封。我已存储信封ID 以供将来操作使用。使用此信封ID ,我只能检索我创建的信封,但我也需要模板ID 。有没有办法从envelope或FolderItems中检索模板ID ?请帮忙:(

3 个答案:

答案 0 :(得分:0)

如果templateId在信封中的任何位置保存为元数据,我不确定您是否从模板创建信封(我不相信)。因此,您可以自行完成此操作 - 尝试使用信封自定义字段在创建时存储templateId,然后将templateId存储为元数据整个生命周期中的那个信封。

在DocuSign API文档中进行搜索,以了解有关“信封自定义字段”的更多信息。例如,here是如何创建它们的页面。

答案 1 :(得分:0)

谢谢@Ergin。我试图实现你的想法,它正在发挥作用。但是,无论我做了什么,还有其他一些问题。我正在分享我代码的一些部分。

//Getting available folder list of my DocuSign account.
DocuSignServiceRef.AvailableFolders folders = DocuSignHelper.GetDocuSignServiceClient().GetFolderList(new DocuSignServiceRef.FoldersFilter { AccountId = DocuSignHelper.UserID });

//Creating a FolderFilter item to get folder items using this filter.
DocuSignServiceRef.FolderFilter filter = new DocuSignServiceRef.FolderFilter();
filter.AccountId = DocuSignHelper.UserID;
filter.FolderTypeInfo = new DocuSignServiceRef.FolderTypeInfo();
filter.FolderTypeInfo = folders.Folders[1].FolderTypeInfo; //Filter Send Items

//Getting sent items
DocuSignServiceRef.FolderResults results = DocuSignHelper.GetDocuSignServiceClient().GetFolderItems(filter);

if (results != null && results.ResultSetSize > 0)
{
    foreach (DocuSignServiceRef.FolderItem item in results.FolderItems)
    {
        foreach (DocuSignServiceRef.RecipientStatus recipient in item.RecipientStatuses)
        {
            //Filtering items by Recipient
            if (recipient.Email.Equals(RecipientEmail))
            {   
                //Getting envelope of the folder item
                DocuSignServiceRef.Envelope sentEnvelope = DocuSignHelper.GetDocuSignServiceClient().RequestEnvelope(item.EnvelopeId, false);
                if (sentEnvelope.CustomFields != null)
                {
                    //Checking envelope's custom fields for template id
                    foreach (DocuSignServiceRef.CustomField customField in sentEnvelope.CustomFields)
                    {
                        if (string.Equals(customField.Name, "TemplateID"))
                        {
                            if (customField.Value == "{CurrentTemplateID}")
                            {
                                HasAlreadySignedSameTemplate = true;
                                //I will not request the recipient for another signature on same template.
                            }
                        }
                    }
                }
            }
        }
    }
}

以上代码对我有用。但是加载所有已发送的项目需要花费太多时间。我看不到在FolderFilter中设置收件人信息的任何方法。如果我在加载已发送邮件时首先在过滤器中设置收件人的电子邮件,则会为我保存时间。否则此代码将无法使用。

您对修改我的实施有什么想法吗?

答案 2 :(得分:0)

如果您要创建带有REST呼叫的信封,可以通过呼叫templatesv2/accounts/:accountId/envelopes/:envelopeId/templates检索信息 快去in the envelope tab。我注意到使用SOAP sdk创建的信封没有填写此信息。