2017-09-27 99 views
0

我有一個API.ai代理,它將請求(來自用戶)發送到需要大量處理(超過5秒)以獲取答案的webhook。據我所知,沒有辦法增加API中的響應超時。因此,我創建了2個意圖。第一個人只是打電話給我的webhook開始處理結果,同時webhook會回覆用戶,「你的請求正在處理中......」。 第二個意圖有一個事件和行動。新事件的目的僅僅是將結果顯示給用戶。 一旦結果準備就緒後,我的後端應用程序將發送一個curl語句以第二個intent中的事件觸發事件,並進行必要的參數修改,如會話ID,v和時區...等。API.AI中的請求超時

我收到以下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代理中添加了第二個intent的截圖。

注意:我在開發人員控制檯WebDemo和Slack中嘗試了代理。他們沒有向我(作爲用戶)顯示指定的響應。

我不知道我是否做錯了什麼? screenshot of the second intent

回答

1

API.AI並不真正用於處理事件驅動的活動。它的目的是在交談的中介 - 所以正常模式是:

  1. 用戶說了什麼
  2. API.AI處理此,可能與網絡掛接,併發送響應。

設備,如谷歌主頁沒有辦法得到一個通知,所以除非用戶說了什麼(步驟1),那麼你將永遠不會得到步驟2

當您嘗試觸發它手動執行,API.AI將您的觸發器視爲第1步,並且它正在回覆您的觸發器。它無法將答覆發回給助理,因爲它當時沒有與助理進行對話 - 它正在與您手動觸發它的對話。

沒有一個真正的好方法來做你想要的東西。我們知道通知最終會提交給助手(它在2017年I/O會上宣佈),但我們不知道它是否會有API或它的外觀。交易API確實有通知作爲其中的一部分,但交易適用於您正在購買或保留某些內容的活動。如果需要,可以使用Firebase雲消息傳遞等功能讓用戶知道他們可以詢問結果,但這是次優的體驗。

+0

他們很快就會添加此功能嗎? – Maghaj

+0

再一次,我所知道的是我在回答中所說的 - 他們在2017年I/O上宣佈了通知,但沒有說明何時,是否會有API,或者該API的外觀。 – Prisoner