【发布时间】:2020-10-13 23:49:26
【问题描述】:
我需要为一个简单的意图发出两个请求。用户回答了一些问题,我用不同的参数向同一个 API 发出这两个请求。
我尝试了几件事,最后一次尝试使用 Promise 发出这两个请求并返回数据。
这些函数执行我的 put 并获得 return:
async function getData(url, config, body) {
let result = await axios.put(url, body, config);
let returnValues = [];
if(result.data){
if (Array.isArray(result.data)) {
result.data.forEach(item => {
returnValues.push(item.message);
});
} else {
returnValues.push(result.data.message);
}
}
return returnValues;
}
这些函数是我的处理程序
function getDocumentHandler(agent){
const url = 'https://myUrl';
const authorization = 'myBasicAuth';
const dateformat = 'YYYYMMDD';
const config = {
headers: {
'Authorization': 'Basic ' + authorization ,
'Content-Type': 'application/json'
}
};
const value = agent.parameters.value1;
const flag = agent.parameters.flag;
var xmlBody = '<value>' + value + '</value>';
return new Promise((resolve, reject) => {
getData(url, config, xmlBody).then(
(res) => {
if(res != null && res.length > 0){
console.log('Values without flag: ', res.length);
res.forEach(item => {
console.log('Item: ' , item);
agent.add(item);
});
}
}
);
if(flag){
xmlBody += ' <flag>true</flag>';
getData(url, config, xmlBody).then(
(res) => {
if(res != null && res.length > 0){
console.log('Values with flag: ', res.length);
res.forEach(item => {
console.log('Item: ' , item);
agent.add(item);
});
}
}
);
}
resolve();
});
}
重要信息:
- 当我在“节点项目”中执行此代码时,可以正常工作并且控制台日志正确
- 当我在 DialogFlow 中执行时,我通过 Google 控制台看到控制台日志,但在代理中看不到。
谁能帮帮我?
谢谢
【问题讨论】:
标签: javascript node.js promise dialogflow-es dialogflow-es-fulfillment