用于与docusign集成的python docassemble包
docassemble-docusign的Python项目详细描述
docassemble docusign
用于与docusign集成的python docassemble包。更具体地说,它提供了一种简单的方法来创建和发送带有锚文本标准的信封,而锚文本必须放在文档中。
如何使用
该模块围绕一个神奇的方法create_envelope
构建在一个神奇的类EnvelopeCreator
上。该函数接受更多通常可以接受的参数,但是,它需要传递三个不同的docusign凭据,这些凭据可以存储(jason help here)并调用为(jason please)。
在此之前,您必须创建一个集成键。这可以在docusign管理部分找到,在这里您还可以找到您的用户id,稍后我们将需要它。
第一步是征得你要模仿的用户的同意,这通常是礼貌的。您最多需要打开一个网页浏览器:
https://account-d.docusign.com/oauth/auth?
response_type=token
&scope=signature%20impersonation
&client_id=YOUR_INTEGRATION_KEY
&redirect_uri=YOUR_REDIRECT_URI
这应该是一行,就像一个普通的url,它的格式是这样的,以显示不同的部分是什么。重定向uri并不一定重要,但它必须与集成密钥一起指定,否则docusign将崩溃。哦,如果你是在生产,那就是https://account.docusign.com
。
下面是一些示例代码,我们将在后面一部分一部分地讨论它。
importdocassemble-docusignasdocasignenvelope_creator=docasign.EnvelopeCreator(integrator_key='INTEGRATOR KEY HERE',user_id='USER ID HERE',private_key='PRIVATE KEY HERE')envelope_creator.create_envelope(recipients=[{'name':'Doug Rattman','email':'doug.rattman@aperturescience.com','group':'signers','routingOrder':1,'tabs':[{'type':'signHere','anchorString':docasign.generate_anchor('signHere','doug.rattman@aperturescience.com')},{'type':'date','anchorString':docasign.generate_anchor('date','doug.rattman@aperturescience.com')}]},{'name':'Cave Johnson','email':'ceo@aperturescience.com','group':'certifiedDeliveries','routingOrder':2}],documents=[{'name':"Bring Your Daughter To Work Day",'fileExtension':'docx','documentBase64':docasign.make_document_base64('bydtwd.docx')},{'name':"Lemon Grenade Acquisition",'fileExtension':'docx','documentBase64':docasign.make_document_base64('lemongrenadeacquisition.docx')}],send_immediately=True,email_subject="Very Important Documents To Sign",production=True,assign_recipient_ids=True,assign_doc_ids=True)
好吧,一次一个。
首先,我们将docassemble-docusign
导入为docasign
(这是一个portmanteau),并创建一个EnvelopeCreator
:
importdocassemble-docusignasdocasignenvelope_creator=docasign.EnvelopeCreator(integrator_key='INTEGRATOR KEY HERE',user_id='USER ID HERE',private_key='PRIVATE KEY HERE')
现在我们运行这个方法。让我们从recipients
开始,逐个查看这些参数。实际上,您将传递一个字典列表,每个字典代表一个收件人。需要注意的是,这只列出了最小值;在DocuSign REST API中的任何附加键值对都可以包含在您传递的任何字典中,而不会有任何麻烦(或者至少不应该有……听着,这是一个巨大的api,好吧!)
Key | Value |
---|---|
^{ | Name of recipient |
^{ | Email address of recipient |
^{ | Type of recipient, must be part of: ^{ |
^{ | Order in which recipients receive the envelope. All of routing order 1 must complete their task (usually sign) before routing order 2, who must complete before 3, and so on. |
^{ | See below... |
我们将在最后讨论制表符,因为它们需要额外的工作放入您将在docassemble中创建的文档中。相反,现在让我们看看documents
参数。就像recipients
,您将传递一个字典列表,每个字典代表一个文档。每个文档需要三个键值对:
Key | Value |
---|---|
^{ | Name of document |
^{ | File extension of the document (such as ^{ |
^{ | A base64 encoding of your document; can be generated with the ^{ |
最后,还有一些可选参数…
Argument | Effect |
---|---|
^{ | If ^{ |
^{ | Subject of email sent to recipients. Defaults to ^{ |
^{ | If ^{ |
^{ | Normally the API requires every recipient to have their own arbritrary id. If set to ^{ |
^{ | Same deal as ^{ |
标签
如果不想让签名者在文档上的任何位置涂鸦(称为“自由格式签名”),则需要定义一些选项卡。制表符是为了签署文档而单击或键入的位,例如签名框或文本字段,以及一些具有锁定值的制表符,例如显示签署日期的制表符。有很多标签类型,但是你可以通过在docusign沙盒上玩来探索它们。
每个签名者都有自己的标签列表。为了让docusign知道标签的放置位置,我们必须将它们定位到文档中的某个文本。这是我们创建标准化锚的重要功能所在。使用generate_anchor
函数,向其传递一个选项卡类型和一封电子邮件,您可以生成一个锚,该锚必须同时放置在文档中要放置选项卡的位置,并设置为选项卡的'anchorString'
。建议您使用接近11点的文本,以便很好地适应选项卡(签名需要两行!),并将文本设置为白色,以便用户看不到它。
标准锚定的格式如下:
[FIRST TEN CHARACTERS OF THE SHA1 HASH OF THE EMAIL]-[UP TO FIVE CHARACTER LONG ABBREVIATION OF THE TAG TYPE]
由于sha1散列的原因,这对于每一个收件人使用的每种类型的选项卡都是唯一的,所以一切都应该正常工作。实际上,你可以使用任何你喜欢的系统作为锚,我们只是做了这个系统,因为它非常简单和容易!但我不会告诉你该怎么做,也许你的自动骰子弹出锚生成器只是你的系统。
与收件人和文档一样,附加到rec的选项卡ipient是一个字典列表,每个字典都有最小的键值对:
Key | Value |
---|---|
^{ | Type of tab. There are LOTS of these, here's a list. |
^{ | String in document to anchor tab to |
制表符还有很多功能,例如可以锁定通常可编辑的制表符,并偏移定位点。Read all about that here if you're interested!它都可以添加到词典中。
依赖关系
您需要pip才能安装:
- 请求(用于发送http请求)
- PYJWT(用于身份验证)
希望这对你的工作有帮助!现在如果你有钥匙让我离开这个文件地牢…
如果你正在阅读这篇文章,这意味着我需要为redis设置日志记录,但这也意味着jason需要帮助,所以就像,hi jason!还有助于文档传递,比如,文档在docassemble中是如何表示的?如果它只是一个文件的路径,那么这很酷,但我假设它要复杂一些