API.AI中的请求超时

时间:2017-09-27 20:30:08

标签: nlp actions-on-google api-ai

我有一个API.ai代理,它将请求(来自用户)发送到webhook,需要大量处理(超过5秒)才能得到答案。据我所知,没有办法增加API.ai

中的响应超时

所以,我创造了2个意图。第一个只是调用我的webhook开始处理结果,同时webhook将回复用户,"您的请求正在处理..."。 第二个意图有一个事件和行动。新事件的目的只是向用户显示结果。 一旦结果准备好,我的后端应用程序将发送一个curl语句来触发第二个intent中的事件,并进行必要的参数修改,如sessionID,v和time zone ......等。

我从API.AI收到了以下JSON(我创建了一个示例来简化我的案例):

Client error: `POST https://XXXX.api.mailchimp.com/3.0/lists/XXXX/members?email_address=donnie%40test.com&email_type=html&status=subscribed`
resulted in a `400 Bad Request`
response: {
  "type": "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
  "title": "Invalid Resource",
  "status": 400,
  "detail": "The resource submitted could not be validated. For field-specific details, see the 'errors' array.",
  "instance": "f32e7076-b970-4f5c-82c6-eec5875e83b4",
  "errors": [{
    "field": "",
    "message": "Schema describes object, NULL found instead"
  }]
}

这是我的后端发送的卷曲声明。

{   "id": "de31ee96-c42f-4f2d-8461-ee39279ec2ed",   "timestamp": "2017-09-27T13:39:46.932Z",   "lang": "en",   "result": {
    "source": "agent",
    "resolvedQuery": "custom_event",
    "action": "test",
    "actionIncomplete": false,
    "parameters": {
      "user_name": "Sam"
    },
    "contexts": [
      {
        "name": "welcoming-followup",
        "parameters": {
          "name.original": "",
          "user_name": "Sam",
          "name": "",
          "user_name.original": ""
        },
        "lifespan": 2
      }
    ],
    "metadata": {
      "intentId": "c196a388-16ac-4966-b55c-7cd999a7d680",
      "webhookUsed": false,
      "webhookForSlotFillingUsed": "false",
      "intentName": "Welcoming"
    },
    "fulfillment": {
      "speech": "Hello Sam",
      "messages": [
        {
          "type": 0,
          "speech": "Hello Sam"
        }
      ]
    },
    "score": 1.0   },   "status": {
    "code": 200,
    "errorType": "success"   },   "sessionId": "67cb28fd-6871-750c-d668-d0b736b763ec" }

如上面的JSON所示,API.ai代理成功收到了触发器。但是,我在“响应部分”中指定的响应对用户不起作用。

我在API.ai代理中附加了第二个意图的屏幕截图。

注意:我在开发者控制台,WebDemo和Slack中尝试了代理。它们都没有向我(作为用户)显示指定的响应。

我不确定我做错了什么? screenshot of the second intent

1 个答案:

答案 0 :(得分:1)

API.AI并不是真正意味着处理事件驱动的活动。它意味着成为对话中的中间人 - 所以正常的模式是:

  1. 用户说了些什么
  2. API.AI可以使用webhook对此进行处理,并发送响应。
  3. Google Home等设备无法获取通知,因此除非用户说出某些内容(步骤1),否则您将永远无法进入第2步。

    当您尝试手动触发时,API.AI会将您的触发器视为第1步,并且它会回复您的触发器。它无法将该回复发送回助理,因为当时没有与助理进行对话 - 它正在与您进行对话,但是您手动触发了它。

    现在没有什么好办法可以做你想做的事。我们知道最终会向助理发送通知(它是在2017年I / O上宣布的),但我们不知道它是否会有API或它会是什么样子。 Transaction API确实有通知作为其中的一部分,但是交易适用于您购买或预订某些内容的活动。如果需要,您可以使用Firebase云消息传递之类的东西让您的用户知道他们可以询问结果,但这是次优的体验。