【问题标题】:Dialogflow fulfilment using request-promise-native : unable to parse response使用 request-promise-native 的 Dialogflow 实现:无法解析响应
【发布时间】:2020-02-18 15:34:13
【问题描述】:

我正在通过 DialogFlow 实现在 Salesforce 中执行 REST API 调用,但我无法读取 JSON 响应。我想访问 JSON 响应 esp CaseNumber 的一些字段。查询可以返回 0 条或多条记录。

有人可以帮我解析返回的响应吗?谢谢!

  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 );
    });     
  }

【问题讨论】:

    标签: node.js json rest dialogflow-es request-promise


    【解决方案1】:

    由于您的请求-承诺配置中有json: true,因此返回的body 已经是一个JavaScript 对象。所以你不需要打电话给JSON.parse(body)

    您应该能够使用body.count 读取您想要的值(假设count 是一个返回的字段)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      相关资源
      最近更新 更多