這個討論適用於任何集成,但作爲一個例子我會談談Messenger。另外,爲了給出上下文,我的後端是用Java編寫的。邏輯的API.AI流程
從我讀過的,對於自定義場景(例如賬戶鏈接),我們不應該直接使用API.AI。相反,Messenger設置(developer.facebook.com
)中的「回撥URL」應該指向我們自己託管的應用,後者又調用api.api.ai/v1/query
。那是對的嗎?
其次,我在API.AI中的意圖已經有Use webhook
打勾。我假設邏輯流將如下所示:
Messenger → my app (webhook for Messenger) → api.ai → my app (webhook for api.ai)
顯然,這不是case-API.AI從未調用網絡掛接。
這是我送到 API.AI的JSON:
{"query":"hey","originalRequest":{"source":"facebook","data":{"object":"page","entry":[{"id":"xxx","time":yyy,"messaging":[{"sender":{"id":"zzz"},"recipient":{"id":"xxx"},"timestamp":yyy,"message":{"mid":"aaa","seq":bbb,"text":"hey"}}]}]}},"v":"20170704","sessionId":"1","lang":"en"}
這是從 API.AI響應:
{
"id": "xxx",
"timestamp": "yyy",
"lang": "en",
"result": {
"source": "agent",
"resolvedQuery": "hey",
"speech": "",
"action": "",
"parameters": {
"greeting": "hey"
},
"metadata": {
"inputContexts": [],
"outputContexts": [],
"intentName": "greeting",
"intentId": "zzz",
"webhookUsed": "true",
"webhookForSlotFillingUsed": "false",
"contexts": []
},
"score": 1.0
},
"status": {
"code": 200,
"errorType": "success"
},
"sessionId": "1"
}
這是否意味着我的應用程序應該調用webhook(這是相同的應用程序,但不同的端點)本身?
我已經選中「使用網絡掛接」,並已更新了我更好的流程圖問題,請閱讀更新。 – wiradikusuma
您的操作丟失。 – MrOerni
@wiradikusuma我已經添加了另一種方式來使用與api.ai帳戶鏈接。 API.ai的行爲就像直接從facebook獲取消息一樣。 (調用webhook的邏輯。) – MrOerni