我想要实现的是Web钩子应该等待,直到我从api调用获得响应为止。PS:API正在起作用,只是机器人不等待响应到来。任何帮助将不胜感激。谢谢
const rp = require('request-promise'); function convert(params){ return rp('https://data.fixer.io/api/convert?access_key=[my key]&from='+ params['currency-from']+'&to='+params['currency-to']+'&amount='+params.amount) .then((data) => { let responseData = JSON.parse(data); let message = responseData.result; console.log('Success'); return Promise.resolve(message); }).catch((err)=> { return Promise.reject(err); }); } function currencyConversion(agent) { let params = request.body.result.parameters; return convert(params) .then((message)=> { agent.add(`${params.amount} ${params['currency-from']} is ${message} ${params['currency-to']}`); return Promise.resolve() }) .catch((err) => { console.log(err); agent.add("Uh oh, something happened."); return Promise.resolve(); }) } let intentMap = new Map(); intentMap.set('Default Welcome Intent', welcome); intentMap.set('Default Fallback Intent', fallback); intentMap.set('currency.convert', currencyConversion);
您没有说明要在什么环境中运行,但是鉴于您的代码以及agent.parameters上面概述的更改,我可以使用Firebase Cloud Functions和node.js 6.14复制您的问题。
agent.parameters
我可以通过使用request-promise-native包而不是来使它正常工作request- promise。顾名思义,它使用本机Promises而不是Bluebird Promise软件包,但除此之外,您进行的调用是相同的。
request-promise-native
request- promise