2017-09-27 5 views
0

답변을 얻으려면 많은 처리 (5 초 이상)가 필요한 Webhook으로 요청을 보내주는 API.ai 에이전트가 있습니다. 내가 아는 한, API.ai에서 응답 시간 초과를 늘릴 방법이 없다.API.AI에서 요청 시간 초과

그래서 2 개의 인 텐트를 만들었습니다. 첫 번째 것은 단순히 결과를 처리하기 위해 내 webhook에 전화를 걸고 동시에 webhook은 "귀하의 요청은 처리 중입니다 ..."라고 대답합니다. 두 번째 의도에는 이벤트와 작업이 있습니다. 새로운 이벤트의 목적은 결과를 사용자에게 표시하는 것입니다. 결과가 준비되면 내 백엔드 애플리케이션이 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" } 

내 백엔드에 의해 전송 된 컬 문입니다.

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에서 에이전트를 사용해 보았습니다. 그들 중 아무도 나에게 (사용자로서) 지정된 응답을 보여주지 못했습니다.

내가 잘못했는지 잘 모르겠습니까? screenshot of the second intent

답변

1

API.AI는 실제로 이벤트 중심 활동을 처리하기위한 것이 아닙니다. 대화의 중개로 의미 - 그래서 일반적인 패턴은 다음과 같습니다

  1. 사용자 가능성은 webhook으로 뭔가를
  2. API.AI 과정이 말한다, 그리고 응답을 보냅니다. 사용자가 뭔가 말했다하지 않는, 그래서 구글 홈으로

장치는 통지를 얻을 수있는 방법이 없습니다 (1 단계), 당신은 당신이 트리거 할 때 2.

단계로 얻을하지 않습니다 수동으로, API.AI가 트리거를 1 단계로 처리하고 트리거에 응답합니다. 그 순간에 길잡이와 대화가 없으므로 길잡이를 다시 길잡이로 보낼 방법이 없습니다. 수동으로 시작했지만 대화가 있습니다.

지금 당장 원하는 것을 할 수있는 좋은 방법은 없습니다. 길잡이 (I/O 2017에서 발표 되었음)에 대한 알림이 제공되지만 Google에 API가 있는지 또는 어떤 모습인지는 알 수 없습니다. Transaction API에는 알림이 포함되어 있지만 거래는 구매 또는 예약하는 활동을위한 것입니다. 필요한 경우 Firebase Cloud Messaging과 같은 기능을 사용하여 결과를 요청할 수 있음을 사용자에게 알릴 수 있지만 이는 최적의 환경이 아닙니다.

+0

곧이 기능을 추가 할 예정입니까? – Maghaj

+0

또 내가 아는 것은 내 대답에서 말한 것입니다. I/O 2017에서 알림을 발표했으나 API가있는 경우 또는 API가 어떻게 표시되는지 알려주지 않았습니다. – Prisoner