使用 request-promise-native 的 Dialogflow 实现:无法解析响应
Dialogflow fulfilment using request-promise-native : unable to parse response
我正在 Salesforce 中通过 DialogFlow fulfillment 执行 REST API 调用,但我无法读取 JSON 响应。我想访问 JSON 响应的某些字段,尤其是 CaseNumber。查询可以return0条或多条记录。
有人可以帮我解析一下 returned 的回复吗?谢谢!
function ticket(agent) {
agent.add('Looking for ticket --> ' + agent.parameters.numero);
var rpTicket = require('request-promise-native');
var optionsTicket = {
method: 'GET',
uri: "https://eu26.salesforce.com/services/data/v44.0/query?q=select CaseNumber from Case where ContactID='XXXXXXX'+order+by+CreatedDate+desc",
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer XXXXXXXXXX'
},
json: true
};
return rpTicket( optionsTicket )
.then( body => {
console.log( 'Ok here is the JSON --> ' + util.inspect(body,false,null)); // I can read the JSON response in the Google Log console so I m fine
var myTickets = JSON.parse(util.inspect(body,false,null));
// or
//var myTickets = JSON.parse(body);
console.log( 'Ok here is the # of tickets --> ' + myTickets.count); // Throws an error
return Promise.resolve( true );
})
.catch( err => {
// You should also return a message here of some sort
console.log( 'Error ... --> ' + err);
return Promise.resolve( true );
});
}
由于您的请求-承诺配置中有 json: true
,因此返回的 body
已经是一个 JavaScript 对象。所以你不需要调用 JSON.parse(body)
.
您应该能够使用 body.count
读取您想要的值(假设 count
是返回的字段)。
我正在 Salesforce 中通过 DialogFlow fulfillment 执行 REST API 调用,但我无法读取 JSON 响应。我想访问 JSON 响应的某些字段,尤其是 CaseNumber。查询可以return0条或多条记录。
有人可以帮我解析一下 returned 的回复吗?谢谢!
function ticket(agent) {
agent.add('Looking for ticket --> ' + agent.parameters.numero);
var rpTicket = require('request-promise-native');
var optionsTicket = {
method: 'GET',
uri: "https://eu26.salesforce.com/services/data/v44.0/query?q=select CaseNumber from Case where ContactID='XXXXXXX'+order+by+CreatedDate+desc",
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer XXXXXXXXXX'
},
json: true
};
return rpTicket( optionsTicket )
.then( body => {
console.log( 'Ok here is the JSON --> ' + util.inspect(body,false,null)); // I can read the JSON response in the Google Log console so I m fine
var myTickets = JSON.parse(util.inspect(body,false,null));
// or
//var myTickets = JSON.parse(body);
console.log( 'Ok here is the # of tickets --> ' + myTickets.count); // Throws an error
return Promise.resolve( true );
})
.catch( err => {
// You should also return a message here of some sort
console.log( 'Error ... --> ' + err);
return Promise.resolve( true );
});
}
由于您的请求-承诺配置中有 json: true
,因此返回的 body
已经是一个 JavaScript 对象。所以你不需要调用 JSON.parse(body)
.
您应该能够使用 body.count
读取您想要的值(假设 count
是返回的字段)。