我正在创建一种可以在Salesforce平台上完成工作的技能。我正在使用Jsforce库来做到这一点。
是这种情况。
我有2个文件
我想将其余的端点操作分离到第二个文件中,在处理完请求后仅保留响应的索引。我没有进行帐户关联,并且工作正常。我使用下面的代码建立连接(在Alexa应用上进行oAuth身份验证),如here所述。这是我的代码。
function onLaunch(launchRequest, session, response) {
if (!session.user.accessToken) {
response.speechText = "Hi there, to experience the best of our service, request you to link your account. please click on, Link Account in your alexa app";
response.isAccountLinking = "true";
response.shouldEndSession = true;
response.done();
} else {
var conn = new jsforce.Connection({
instanceUrl: process.env.INSTANCE_URL,
accessToken: session.user.accessToken
});
conn.identity(function (err, res) {
session.attributes.loggedInUser = res;
if (err) { return console.error(err); }
console.log("user ID: " + res.user_id);
console.log("organization ID: " + res.organization_id);
console.log("username: " + res.username);
console.log("display name: " + res.display_name);
response.speechText = `Hi ${res.display_name}, How can I help you today?`;
response.repromptText = 'How can I help you today?';
response.shouldEndSession = false;
response.done();
});
}
}
这工作正常,并给出了预期的准确结果。现在,我想使用这个已建立的会话变量并将其传递给我的restServices文件,这样,我就不会最终进行不必要的调用。
我的操作方式是在conn.identity
块之前,我将会话变量设置为
session.attributes.conn = conn;
我收到错误消息
{“ errorType”:“错误”,“ errorMessage”:“无法进行字符串化 响应正文”,“堆栈”:[[错误:无法分类 响应正文“,”在_trySerializeResponse (/var/runtime/RAPIDClient.js:166:11)“,”位于 RAPIDClient._post(/var/runtime/RAPIDClient.js:127:22)“,”
在RAPIDClient.postInvocationResponse (/var/runtime/RAPIDClient.js:39:10)“,”完成 (/var/runtime/CallbackContext.js:34:12)“,”完成时 (/var/runtime/CallbackContext.js:59:7)“,”成功 (/var/runtime/CallbackContext.js:63:5)“,”位于Object.succeed (/var/runtime/CallbackContext.js:105:16)“,”在 Response.done(/var/task/index.js:79:23)“,”位于 /var/task/index.js:200:22“,”位于 /var/task/node_modules/jsforce/lib/promise.js:72:9“]}
对字符串化有一些疑问,并将此行更改为
session.attributes.conn = JSON.stringify(conn);
现在,出现以下错误。
{“ errorType”:“ TypeError”,“ errorMessage”:“转换循环 结构为JSON”,“堆栈”:[“ TypeError:正在转换 JSON的圆形结构“,”在JSON.stringify ()“,”位于/var/task/index.js:198:44“,”
在/var/task/node_modules/jsforce/lib/promise.js:72:9“,”在 process._tickCallback(internal / process / next_tick.js:61:11)“]
这非常令人困惑,无法理解我要去哪里。请让我知道如何修复它。
我也想知道如何将该conn发送到我的restServices文件中
谢谢