无法从Google dialogflow Web挂钩调用外部api?

时间:2019-04-05 18:37:02

标签: dialogflow actions-on-google

我尝试从Google对话流程的内联编辑器调用外部api。但是没有用。我正在使用内联编辑器。我在日志中看到的错误是“错误:找不到模块” request-promise-native”。我还有其他需要添加此参考的地方吗? package.JSON?如果可以,怎么办?

function AccountNumberHandler(agent) {
    const AccountNumber = agent.parameters.AccountNumber;

    if (AccountNumber) {
      //console.log(AccountNumber);
      const request = require('request-promise-native');
      agent.add('Unable to get result');
      const url = "xxxx";
      const data = "";
     return request.post(url, data)
          .then(jsonBody => {
              var body = JSON.parse(jsonBody);
              agent.add(body);
              return Promise.resolve(agent);
          })
          .catch(err => {
              console.error('Problem making network call', err);
              agent.add('Unable to get result');
              return Promise.resolve(agent);
          });      

        //agent.add(`Wow! I didn't know you knew ${AccountNumber}`);
    } 

2 个答案:

答案 0 :(得分:1)

@Prisoner上面的回答是正确的,但是,使用内联编辑器调用外部API时,您仍然可能会遇到一些问题。这是因为内联编辑器使用firebase阻止了免费计划中对外部API的调用。

因此,您需要升级到其出色的计划,该计划允许调用外部API。但是,您需要输入卡的详细信息,因此请记住这一点。

我创建了一个视频教程,介绍如何将您的dialogflow代理连接到外部API。请看这个视频。 https://www.youtube.com/watch?v=n4IPOeFCDxI

希望这会有所帮助。

答案 1 :(得分:0)

是的,您需要将其添加到package.json文件中。

要使用Dialogflow内联编辑器执行此操作,您将在编辑器顶部看到两个文件名:index.js和package.json。只需单击“ package.json”,然后对其进行编辑,即可将所需内容添加到“依赖项”部分。

enter image description here