node.js 操作 google 保存对话数据
node.js actions on google save conversation data
我有一个问题,我可以 return 来自 AXIOS 请求的数据,但我无法使用 Google 上的操作将该数据保存到对话用户存储 (conv.user.storage.caseNumber) Node.js 图书馆。我尝试了很多不同的方法,但 none 有效。我可以很好地保存意图中的数据(例如 conv.user.storage.subject 和 conv.user.storage.description)。我已经通过 console.log() 验证数据(即 caseNumber)在响应中被正确 returned。任何帮助将不胜感激。
代码如下:
// Index
const SalesForceProxy = require('./classes/SalesForceProxy');
let proxy = new SalesForceProxy();
app.intent('getDescription - yes - CreateConfirmation', proxy.createCase);
// Proxy.js
module.exports = function () {
this.createCase = function (conv) {
return new Promise(function( resolve, reject) {
axios.post('https://mysite.my.salesforce.com/services/oauth2/token',querystring.stringify(params)).then(function(response){
var caseData = {
"account" : conv.user.storage.accountId,
"recordType" : conv.user.storage.recordTypeId,
"priority" : conv.user.storage.priority,
"subject" : conv.user.storage.subject,
"description" : conv.user.storage.description
};
axios.post('https://mysite.my.salesforce.com/services/apexrest/voicetocase/create',caseData,
{
headers:
{
'Authorization': "Bearer " + response.data.access_token,
'Content-Type': 'application/json'
}
}
)
.then(function(response){
conv.user.storage.caseNumber = response.data.caseNumber;
}.bind({conv: conv}))
.catch((error) => {
console.log(error);
});
resolve()
}.bind({conv: conv})).catch((error) => {
console.log(error);
reject(err);
});
});
}
}
看起来你过早地解决了这个承诺,在你设置用户存储之前,这是第二个承诺。
axiom.post(...)
.then() {
conv.user.storage.X = "";
resolve();
}
这应该按预期工作。
我有一个问题,我可以 return 来自 AXIOS 请求的数据,但我无法使用 Google 上的操作将该数据保存到对话用户存储 (conv.user.storage.caseNumber) Node.js 图书馆。我尝试了很多不同的方法,但 none 有效。我可以很好地保存意图中的数据(例如 conv.user.storage.subject 和 conv.user.storage.description)。我已经通过 console.log() 验证数据(即 caseNumber)在响应中被正确 returned。任何帮助将不胜感激。
代码如下:
// Index
const SalesForceProxy = require('./classes/SalesForceProxy');
let proxy = new SalesForceProxy();
app.intent('getDescription - yes - CreateConfirmation', proxy.createCase);
// Proxy.js
module.exports = function () {
this.createCase = function (conv) {
return new Promise(function( resolve, reject) {
axios.post('https://mysite.my.salesforce.com/services/oauth2/token',querystring.stringify(params)).then(function(response){
var caseData = {
"account" : conv.user.storage.accountId,
"recordType" : conv.user.storage.recordTypeId,
"priority" : conv.user.storage.priority,
"subject" : conv.user.storage.subject,
"description" : conv.user.storage.description
};
axios.post('https://mysite.my.salesforce.com/services/apexrest/voicetocase/create',caseData,
{
headers:
{
'Authorization': "Bearer " + response.data.access_token,
'Content-Type': 'application/json'
}
}
)
.then(function(response){
conv.user.storage.caseNumber = response.data.caseNumber;
}.bind({conv: conv}))
.catch((error) => {
console.log(error);
});
resolve()
}.bind({conv: conv})).catch((error) => {
console.log(error);
reject(err);
});
});
}
}
看起来你过早地解决了这个承诺,在你设置用户存储之前,这是第二个承诺。
axiom.post(...)
.then() {
conv.user.storage.X = "";
resolve();
}
这应该按预期工作。