如何在 dialogflow 中使用内联编辑器获取外部 api 数据
How to get external api data using inline editor in dialogflow
我有一个 Dialogflow 代理,我正在为其使用内联编辑器(由 Cloud Functions for Firebase 提供支持)。当我尝试使用 request-promise-native
获取外部 api 数据时,我一直在我的 firebase 控制台中获取 Ignoring exception from a finished function
。
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
});
}
内联编辑器使用 Firebase。如果您没有 Firebase 的付费帐户,您将无法访问外部 API。
您的代码看起来是正确的。这种情况下的例外情况可能是您没有使用付费帐户,因此 Google 以外的网络访问被阻止。您可能可以通过添加一个 catch 块来查看确切的异常:
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
})
.catch(err => {
console.error('Problem making network call', err);
agent.add('Unable to get result');
return Promise.resolve(agent);
});
}
(如果您这样做,您可能需要使用日志中的确切错误来更新您的问题。)
我有一个 Dialogflow 代理,我正在为其使用内联编辑器(由 Cloud Functions for Firebase 提供支持)。当我尝试使用 request-promise-native
获取外部 api 数据时,我一直在我的 firebase 控制台中获取 Ignoring exception from a finished function
。
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
});
}
内联编辑器使用 Firebase。如果您没有 Firebase 的付费帐户,您将无法访问外部 API。
您的代码看起来是正确的。这种情况下的例外情况可能是您没有使用付费帐户,因此 Google 以外的网络访问被阻止。您可能可以通过添加一个 catch 块来查看确切的异常:
function video(agent) {
agent.add(`You are now being handled by the productivity intent`);
const url = "https://reqres.in/api/users?page=2";
return request.get(url)
.then(jsonBody => {
var body = JSON.parse(jsonBody);
agent.add(body.data[0].first_name)
return Promise.resolve(agent);
})
.catch(err => {
console.error('Problem making network call', err);
agent.add('Unable to get result');
return Promise.resolve(agent);
});
}
(如果您这样做,您可能需要使用日志中的确切错误来更新您的问题。)