Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Dialogflow无法解析来自Google Apps脚本的Webhook响应_Google Apps Script_Webhooks_Dialogflow Es - Fatal编程技术网

Google apps script Dialogflow无法解析来自Google Apps脚本的Webhook响应

Google apps script Dialogflow无法解析来自Google Apps脚本的Webhook响应,google-apps-script,webhooks,dialogflow-es,Google Apps Script,Webhooks,Dialogflow Es,当我尝试将webhook响应从Google Apps脚本传递到Dialogflow时,我遇到以下错误 我用Postman检查我的Google Apps脚本是否返回JSON(确实是) 我按照DialogFlowV2 API正确格式化了响应JSON 我不知道怎么了。我不知道它是如何接收HTML文件而不是JSON的。创建自定义webhook响应应该不难,但是Dialogflow文档非常糟糕 任何帮助都将不胜感激 编辑: Google Web应用程序已经发布,可以匿名使用 编辑: Stackdriver

当我尝试将webhook响应从Google Apps脚本传递到Dialogflow时,我遇到以下错误

我用Postman检查我的Google Apps脚本是否返回JSON(确实是)

我按照DialogFlowV2 API正确格式化了响应JSON

我不知道怎么了。我不知道它是如何接收HTML文件而不是JSON的。创建自定义webhook响应应该不难,但是Dialogflow文档非常糟糕

任何帮助都将不胜感激

编辑: Google Web应用程序已经发布,可以匿名使用

编辑:
Stackdriver提供了更多信息。

我认为这不是重定向问题。在处理JSON之后,可能JSON的格式不正确(您省略的行)。尝试将doPost作为回音进行测试,以查看其是否有效:

function doPost(e) {
      var content = JSON.parse(e.postData.contents);

      return ContentService
              .createTextOutput()
              .setMimeType(ContentService.MimeType.JSON)
              .setContent(JSON.stringify(content));
}

检查webapp的权限/可用性。您可能会得到一个404/401错误页面,调用
/exec
版本,而只有
/dev
版本正在输出json等。感谢您的回复。我已经用Postman用
/dev
/exec
测试了这个webapp。我还确保该Web应用程序已发布,并且可以匿名使用。没有骰子。调试是来自谷歌模拟器上的操作吗?你可能还想打开“谷歌云的日志交互”——你可以通过设置(点击Gear图标)进入,向下滚动并添加一些扩展的日志条目到你的问题中。嗨,囚犯,我在这里认出了你的用户名。我已经包括了该项目的所有日志,我意识到谷歌应用程序的响应是指向另一个URL的重定向链接!您知道Dialogflow是否可以识别此重定向吗?@Campair位于第15行的hastebin链接中,在该链接中,实现响应为。在我看来,这就像是气体返回气流的反应。嗯,好的,我会尝试找到另一种方法来解决这个问题。我已经用你的代码试过了,但是Dialogflow仍然得到相同的HTML响应。我记得在别的地方读过关于重定向的文章,但我似乎找不到链接。IIRC主要的要点是Dialogflow不能遵循HTTP重定向请求。这就解释了为什么当Dialogflow在床上拉屎时,Postman可以很好地接收JSON响应。谢谢你的建议,至少现在我很清楚为什么会这样D@yeowx您有付费的gsuite帐户吗?你可以尝试使用云功能而不是GAS web应用程序来实现这一点。我没有付费帐户,但我可以尝试四处闲逛。我想知道Dialogflow是否被视为“Google API”@yeowx Dialogflow有一个REST API…请查看:
function doPost(e) {
    var myData = JSON.parse(e.postData.contents);
    ...
    ...
    var replyJSON = ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
    return replyJSON;
}
{
    "fulfillmentText": "Hello",
    "fulfillmentMessages": [{
        "text": {
            "text": [
                "Hello"
            ]
        }
    }],
}
function doPost(e) {
      var content = JSON.parse(e.postData.contents);

      return ContentService
              .createTextOutput()
              .setMimeType(ContentService.MimeType.JSON)
              .setContent(JSON.stringify(content));
}