使用 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 是返回的字段)。