Dialogflow实现中的API请求(JavaScript)

时间:2019-03-03 01:14:47

标签: api dialogflow dialogflow-fulfillment

因此,我正在尝试使用需要外部API的Dialogflow进行Google操作。我一直使用jQuery .getJSON()进行API调用,所以我不知道该怎么做。在网上搜索此内容后,我找到了一种使用香草javascript的方法(我也在我的网站上测试了该方法,效果很好)。的代码如下:

function loadXMLDoc() {
  var xmlhttp = new XMLHttpRequest();

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == XMLHttpRequest.DONE) {
      console.log(xmlhttp.responseText);
    }
  };

  xmlhttp.open("GET", "https://translate.yandex.net/api/v1.5/tr.json/translate?lang=en-es&key=trnsl.1.1.20190105T052356Z.7f8f950adbfaa46e.9bb53211cb35a84da9ce6ef4b30649c6119514a4&text=eat", true);
  xmlhttp.send();
}

该代码在我的网站上运行良好,但是一旦将其添加到Dialogflow中,它就会给我错误

  

未定义XMLHttpRequest

很明显,发生这种情况是因为我没有定义它(使用var),除了它不需要我做任何事情就可以工作。因此,我尝试添加此行

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

代码,它停止给我错误(因为我定义了XMLHttpRequest)。但是后来,我的代码无法正常工作。

TL; DR:如何使用Dialogflow实现来进行外部API调用?

2 个答案:

答案 0 :(得分:1)

您可以使用--network=host。但是请确保您升级到Blaze Pay(或任何其他计划)以进行外部API调用,否则会收到诸如

之类的错误
https

进行外部api调用的代码,

Error:
Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictions.

答案 1 :(得分:0)

这篇文章是一颗钻石!确实有助于弄清Dialogflow完整程序中正在发生的事情和需要什么。

一个小建议是正常捕获与Web服务的连接中的错误:

{{ui.button.edit.text | translate}}