如何在 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);
        });
}

(如果您这样做,您可能需要使用日志中的确切错误来更新您的问题。)