У меня есть агент API.ai, который отправляет запрос (исходит от пользователя) на веб-хук, который требует много обработки (более 5 секунд), чтобы получить ответ. Насколько я знаю, что нет возможности увеличить время ожидания ответа в API.ai
Итак, я создал 2 намерения. Первый просто вызовет мой вебхук, чтобы начать обработку результата, и в то же время вебхук ответит пользователю: "Ваш запрос находится в обработке...". Второе намерение имеет событие и действие. Цель нового события — просто отобразить результат пользователю. Как только результат будет готов, мое серверное приложение отправит оператор curl для запуска события во втором намерении с необходимыми изменениями параметров, такими как sessionID, v, часовой пояс и т. д.
Я получил следующий JSON от API.AI (я создал пример, чтобы упростить мой случай):
{ "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" }
Вот оператор curl, который был отправлен моим бэкэндом.
The curl statement is: curl -X POST -H "Content-Type: application/json; charset=utf-8" -H "Authorization: Bearer I INSERTED THE CORRECT CODE HERE" --data "{'event':{ 'name': 'custom_event', 'data': {'name': 'Sam'}}, 'timezone':'America/New_York', 'lang':'en', 'sessionId':'a6ac2555-4b19-40f8-92ec-397f6a042dde'}" "https://api.api.ai/v1/query?v=20150910"
Как видно из приведенного выше JSON, агент API.ai успешно получил триггер. Но ответ, который я указал в «Разделе ответов», не отображается пользователю.
Я приложил скриншот для второго намерения в агенте API.ai.
Примечание. Я пробовал агент в консоли разработчика, WebDemo и Slack. Ни один из них не показал мне (как пользователю) указанный ответ.
Я не уверен, что я сделал что-то не так? скриншот второго намерения