Dialogflow 在 return 之后给出了无法访问的错误代码

Dialogflow is giving error unreachable code after return

我正在通过 axios 从 mini crypto compare api 获取数据以获取 dialogflow 中的加密货币价格,但在我的实现代码中我收到此错误(如果在 [=17= 之后无法访问代码) ]).如果我将 if 部分放入 promise 中,那么 agent.add() 将不起作用,并且它不会给出为控制台中的平台错误定义的响应。

function priceFinder(agent) {
const data = agent.parameters[CRYPTO_NAMES];

let btc = '';
let eth = '';

 return axios.get('https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH,BNB,SOL,LUNA&tsyms=USD')
    .then(response => {
        btc = response.data.BTC.USD;
        eth = response.data.ETH.USD;
   
 
 });

if(data === "btc") {
 agent.add(`BTC Price is : ${btc}`); 
  
}
else if(data === "eth") {
  
 agent.add(`ETH Price is : ${eth}`); 
}



}

我能够让你的功能在我这边工作,这是我根据你提供的块对你的功能更新的代码:

使用的库

const https = require('https');

主要功能

  function getBitcoinInfo(agent){ 
    const url= 'https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH,BNB,SOL,LUNA&tsyms=USD';
    
    const req = https.get(url, res => {
    console.log(`statusCode: ${res.statusCode}`);
      let data = ''; 
      res.on('data', (chunk) => {
        data += chunk;
      });
      res.on('end', () => {
        console.log(data); 
        console.log(JSON.parse(data).BTC);
      });
    });
    agent.add(`I found bitcoins!`);
  }

IntentMap

  let intentMap = new Map(); 
  intentMap.set('Get Bitcoin Info', getBitcoinInfo);
  agent.handleRequest(intentMap);

有用的提示

  • return 将执行最后一条语句,并且不会进一步有效地进行,从而使其余代码行无法访问。
  • 您可以通过云功能 -> my_deployed_ fullfillment -> 日志查看日志
  • 最后的结果总是显示在最后。
  • 如果没有控制台消息到达日志,请确保您的函数正确执行
  • 解析 json 后,您可以从中选取元素并填充变量并将其添加到您的响应中。你可以用 JSON parse 来代替它。

有用链接: