如何在一个函数中从 2 api 获取数据并在 dialogflow 卡片实现中显示
How to get data from 2 api in one function and display in dialogflow card fulfilment
我正在使用 Dialogflow 的内联编辑器实现来显示从 API 获取的动态数据。
我尝试从 1 API 获取并且工作正常,现在我必须同时从 2 获取并在卡片中显示所有信息。
这是代码:
function GetProductAPI(agent) {
let prodnr1 =agent.parameters.prodnr1;
const webApiUrl = 'http://www.xxxxxxx.xx/api/products/';
// return axios.get(webApiUrl + prodnr1, { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} })
axios.all([
axios.get(webApiUrl + prodnr1, { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} }),
axios.get(webApiUrl + prodnr1 + '/images', { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} })
])
// .then(res => {
.then(axios.spread((user1, user2) => {
const launchData = user1.data;
const launchData2 = user2.data;
agent.add(`Product number is: ${launchData[0].ID} . Tile is : ${launchData[0].TITLE}, best price is : ${launchData[0].BEST_PRICE} , image url : ${launchData2[0].IMAGE_URL} `);
agent.add(new Card({
title: `${launchData[0].TITLE}`,
imageUrl: 'https://www.xxxx.xxx/cache/images/product/345345345334.jpg',
text: `${launchData[0].META_DESCRIPTION}`,
buttonText: 'Text from api',
buttonUrl: '${launchData[0].URL}'
})
);
}));
}
评论的代码我只用于一个 API 调用并且运行良好,现在我尝试从 2 获取并在一个响应中使用数据不起作用。
你能帮我看看我的问题在哪里吗?
您错过了 axios.all()
前面的 return
。
工作代码是 return axios.all([...])
我正在使用 Dialogflow 的内联编辑器实现来显示从 API 获取的动态数据。 我尝试从 1 API 获取并且工作正常,现在我必须同时从 2 获取并在卡片中显示所有信息。
这是代码:
function GetProductAPI(agent) {
let prodnr1 =agent.parameters.prodnr1;
const webApiUrl = 'http://www.xxxxxxx.xx/api/products/';
// return axios.get(webApiUrl + prodnr1, { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} })
axios.all([
axios.get(webApiUrl + prodnr1, { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} }),
axios.get(webApiUrl + prodnr1 + '/images', { headers: {Authorization: `TOKEN zzzzzzzzzzzzz`} })
])
// .then(res => {
.then(axios.spread((user1, user2) => {
const launchData = user1.data;
const launchData2 = user2.data;
agent.add(`Product number is: ${launchData[0].ID} . Tile is : ${launchData[0].TITLE}, best price is : ${launchData[0].BEST_PRICE} , image url : ${launchData2[0].IMAGE_URL} `);
agent.add(new Card({
title: `${launchData[0].TITLE}`,
imageUrl: 'https://www.xxxx.xxx/cache/images/product/345345345334.jpg',
text: `${launchData[0].META_DESCRIPTION}`,
buttonText: 'Text from api',
buttonUrl: '${launchData[0].URL}'
})
);
}));
}
评论的代码我只用于一个 API 调用并且运行良好,现在我尝试从 2 获取并在一个响应中使用数据不起作用。 你能帮我看看我的问题在哪里吗?
您错过了 axios.all()
前面的 return
。
工作代码是 return axios.all([...])