- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
两部分问题:
我们正在尝试接收文档已准备好签署的通知(我们并不完全清楚通知中提供的内容)。我们不想做电子邮件通知;我们想关闭那些。我们假设嵌入式签名的信息包含在非电子邮件通知中。有没有一种简单的方法可以向另一个程序发送推送通知,表明文档已准备好发送,如果是这样,跟进通知以进行签名 API POST 并从 DocuSign 请求信息的最佳方法是什么?
在我们的测试中,我们已经能够通过 API 调用接收嵌入的签名 URL,但它会将我们带到一个页面,该页面指向未显示选项卡的签名 View ;这意味着签名者不能签名,对于其他角色也是如此。这与 this 中解释的问题相同在大多数情况下,SO post。我正在用 JavaScript 编码,而不是 PHP。我不知道这是否会对回答问题产生影响,如果是这样,请在评论中提出更多问题,我可以提供更多信息。
这就是我们得到的,但我们应该得到一个包含签名标签的文档
这是我们应该看到的。我们在手动登录 DS 并单击文档时看到此版本。
我们认为 templateRoleName 字段可能是导致此问题的原因,但我们已经测试了使用和不使用它,它似乎没有什么不同。
这是我们在演练中使用的 API 调用的 JS 文件。
//
// to run this sample
// 1. copy the file in your own directory - say, example.js
// 2. change "***" to appropriate values
// 3. install async and request packages
// npm install async
// npm install request
// 4. execute
// node example.js
//
var async = require("async"), // async module
request = require("request"), // request module
email = "email@email.com", // your account email
password = "password1", // your account password
integratorKey = "DEEZ-010ebc24-01cc-143a-98c3-d9dbf7561cb1", // your account Integrator Key (found on Preferences -> API page)
recipientName = "email@email.com", // recipient (signer) name
templateId = "1C504DBA-B03F-4E57-B6BB-FD2ABD15837C", // provide valid templateId from a template in your account
templateRoleName = "Signer", // template role that exists on template referenced above
baseUrl = "", // we will retrieve this
envelopeId = "bc14310c-57c0-4168-91be-1fb71ea24c1c"; // created from step 2
async.waterfall(
[
//////////////////////////////////////////////////////////////////////
// Step 1 - Login (used to retrieve accountId and baseUrl)
//////////////////////////////////////////////////////////////////////
function(next) {
var url = "https://demo.docusign.net/restapi/v2/login_information";
var body = ""; // no request body for login api call
// set request url, method, body, and headers
var options = initializeRequest(url, "GET", body, email, password);
// send the request...
request(options, function(err, res, body) {
if(!parseResponseBody(err, res, body)) {
return;
}
baseUrl = JSON.parse(body).loginAccounts[0].baseUrl;
next(null); // call next function
});
},
//////////////////////////////////////////////////////////////////////
// Step 2 - Send envelope with one Embedded recipient (using clientUserId property)
//////////////////////////////////////////////////////////////////////
function(next) {
var url = baseUrl + "/envelopes";
var body = JSON.stringify({
"emailSubject": "DocuSign API call - Embedded Sending Example",
"templateId": templateId,
"templateRoles": [{
"email": email,
"name": recipientName,
"roleName": templateRoleName,
"clientUserId": "1001" // user-configurable
}],
"status": "sent"
});
// set request url, method, body, and headers
var options = initializeRequest(url, "POST", body, email, password);
// send the request...
request(options, function(err, res, body) {
if(!parseResponseBody(err, res, body)) {
return;
}
// parse the envelopeId value from the response
envelopeId = JSON.parse(body).envelopeId;
next(null); // call next function
});
},
//////////////////////////////////////////////////////////////////////
// Step 3 - Get the Embedded Signing View (aka the recipient view)
//////////////////////////////////////////////////////////////////////
function(next) {
var url = baseUrl + "/envelopes/" + envelopeId + "/views/recipient";
var method = "POST";
var body = JSON.stringify({
"returnUrl": "http://www.docusign.com/devcenter",
"authenticationMethod": "email",
"email": email,
"userName": recipientName,
"clientUserId": "1001", // must match clientUserId in step 2!
});
// set request url, method, body, and headers
var options = initializeRequest(url, "POST", body, email, password);
// send the request...
request(options, function(err, res, body) {
if(!parseResponseBody(err, res, body))
return;
else
console.log("\nNavigate to the above URL to start the Embedded Signing workflow...");
});
}
]);
//***********************************************************************************************
// --- HELPER FUNCTIONS ---
//***********************************************************************************************
function initializeRequest(url, method, body, email, password) {
var options = {
"method": method,
"uri": url,
"body": body,
"headers": {}
};
addRequestHeaders(options, email, password);
return options;
}
///////////////////////////////////////////////////////////////////////////////////////////////
function addRequestHeaders(options, email, password) {
// JSON formatted authentication header (XML format allowed as well)
dsAuthHeader = JSON.stringify({
"Username": email,
"Password": password,
"IntegratorKey": integratorKey // global
});
// DocuSign authorization header
options.headers["X-DocuSign-Authentication"] = dsAuthHeader;
}
///////////////////////////////////////////////////////////////////////////////////////////////
function parseResponseBody(err, res, body) {
console.log("\r\nAPI Call Result: \r\n", JSON.parse(body));
if( res.statusCode != 200 && res.statusCode != 201) { // success statuses
console.log("Error calling webservice, status is: ", res.statusCode);
console.log("\r\n", err);
return false;
}
return true;
}
编辑 这是此模板的 DocuSign 经典 View 中的收件人和路由部分,因为它是此问题的原始帖子
这是请求日志中的 Created_RequestRecipientToken 文件:
POST https://demo.docusign.net:7802/restapi/v2/accounts/1037192/envelopes/deez83c9-b1fg-46ab-bo0c-e4576d952ac6/views/recipient
Content-Length: 185
Connection: keep-alive
Host: demo.docusign.net
X-DocuSign-Authentication: {"Username":"sender@email.com","Password":"[omitted]","IntegratorKey":"[omitted]"}
X-Forwarded-For: 543.155.155.55
{"returnUrl":"http://www.docusign.com/devcenter","authenticationMethod":"email","email":"sender@email.com","userName":"signer@email.com","clientUserId":"1002"}
201 Created
Content-Type: application/json; charset=utf-8
{
"url": "https://demo.docusign.net/Signing/startinsession.aspx?t=3c06d2a3-e521-4e52-b669-01e24c81c3bf"
}
这是请求日志中的 Created_CreateEnvelopeFromTemplateAndForms 文件:
POST https://demo.docusign.net:7802/restapi/v2/accounts/1037192/envelopes
Content-Length: 272
Connection: keep-alive
Host: demo.docusign.net
X-DocuSign-Authentication: {"Username":"sender@email.com","Password":"[omitted]","IntegratorKey":"[omitted]"}
X-Forwarded-For: 143.115.155.55
{"emailSubject":"DocuSign API call - Embedded Sending Example","templateId":"9AF271E2-D38E-4E61-8083-928A3CCE056C",
"templateRoles":[{"email":"sender@email.com","name":"signer@email.com","roleName":"Signer","clientUserId":"1002"}],
"status":"sent"}
201 Created
Content-Type: application/json; charset=utf-8
{
"envelopeId": "deez83c9-b1fg-46ab-bo0c-e4576d952ac6",
"uri": "/envelopes/deez83c9-b1fg-46ab-bo0c-e4576d952ac6",
"statusDateTime": "2015-07-08T15:56:23.5930000Z",
"status": "sent"
}
最佳答案
当您从模板发送签名请求时,如果您希望收件人继承您之前创建的所有选项卡和工作流,那么您必须将它们与角色匹配。要匹配它们,您需要使用 roleName
属性,该属性是通过您引用的 templateRoleName
示例 Node 脚本设置的。
首先,我想提一下,在您的第一个屏幕截图中没有选项卡,收件人仍然可以通过将任何选项卡从左侧拖动到文档上来签名。这称为自由形式签名,当它们与模板角色不匹配时,他们会选择将哪些选项卡、多少以及将它们放置在文档中的什么位置。
我在您的代码中看到您正在将模板角色名称设置为值 Signer
,这只有在您在 Web 控制台中为占位符(模板)角色命名时才有效创建它。将 Web 控制台中角色名称的值更改为 Signer
,它应该可以工作。
关于node.js - DocuSign 嵌入式签名 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31011314/
我正在关注此处显示的 React OAuth 隐式示例:https://github.com/docusign/eg-02-react-implicit-grant我很困惑,我们的 React SPA
当我登录到我的 docusign 真实账户管理面板时,我在 API 和 key 菜单下看不到任何添加集成商 key 按钮。 那么现在,我如何生成积分器 key ? 最佳答案 直播 Integrator
在我的帐户中,我创建了一个 Connect webhook 配置。我添加了一个 key ,还选中了 Include HMAC signature 复选框。 在我签署信封后,DocuSign Conne
在我的帐户中,我创建了一个 Connect webhook 配置。我添加了一个 key ,还选中了 Include HMAC signature 复选框。 在我签署信封后,DocuSign Conne
我是 DocuSign 集成的新手。看来我需要使用 OAuth 授权代码授予,所以我正在使用类似这样的 GET 方法: https://account-d.docusign.com/oauth/aut
我在使用由“https://demo.docusign.net”提供的 Docusign Rest API 时遇到 ssl 认证错误' 在 IBM websphere 中。我下载'演示 ssl 证书并
我正在尝试为客户创建解决方案。客户经营一所大学并想要一个系统,他们可以使用该系统将包含标记/评分的批量信件发送给家长/监护人。这些信件必须由大学院长(单一用户)签名。 用户(院长)是否必须进入 Doc
如何检查文档是否使用 DocuSign API 签名?是否存在让我知道文档状态的任何 API 服务? 我试图获取“已完成”文件夹中的所有对象,但响应不包含 documentId,我不知道每个对象是哪个
我正在尝试让 Docusign 处理基于几个参数生成的 PDF 文档。工作流程是,用户将生成 PDF,然后当单击按钮时,它将带来带有此 PDF 的 docusign iFrame。用户签名和文档签名会
是否可以通过 API 获取 DocuSign 文档的每个收件人的状态?获取收件人状态的 xml/java 是什么?我用不同人的电子邮件发送信封,但是当我使用此处描述的过程时 http://iodocs
我已经尝试了 API 中给出的代码授权示例 (PHP),它们工作得非常好,但是对于那些示例,我尝试了隐式身份验证,但它不起作用。我不熟悉如何使用 twig 函数。 我也是 Docusign 的新手,任
我正在使用 DocuSign Java SDK 并尝试使用 JWT 流获取访问 token 。当我调用 ApiClient.requestJWTUserToken 时,出现错误: "POST http
我正在构建一个基于信封的 Webhook 来接收来自 DocuSign 的状态更新,而不是我当前基于“轮询”的方法。我有以下代码来创建 RecipientEvent RecipientEvent au
我对Docusign embedded Edit View.有疑问 我的应用程序通过 JWT 连接到 Docusign。使用 API,我允许用户通过我自己的应用程序编辑现有信封(处于草稿状态时)。到文
$(document).ready(function () { debugger; $.ajax({ type: "GET", headers: { "
我需要使用带有数据验证的自定义标签创建 DocuSign 信封。收件人在自定义标签中输入的值需要进行验证,以便收件人输入的值不会超过特定值。 我尝试使用正则表达式,但它们只验证特定范围内输入的数字。
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在 iOS 应用程序中使用 DocuSign 的 API 来签署文档。除了抄送体验之外,一切都很顺利。 我有两个签名者,路由顺序为 1 和 2。然后,我有几个 CC 收件人,全部路由顺序为 3。
我在我的应用程序中生成 PDF,我应该将该 PDF 发送给特定人员(电子邮件 ID)以进行电子签名。我使用 DocuSign Sandbox 开发环境。收件人会收到一封电子邮件通知,要求其查看文档并进
我在正确理解 DocuSign API 时遇到了一些问题。 我的第一个任务是简单地发送和创建一个信封。我使用 UIView 和 Core Graphics 创建了一个 PDF(在 iOS 中)。然后我
我是一名优秀的程序员,十分优秀!