2017-05-29 73 views
4

在將Wit.ai集成到網站中時,是否有某種方法來執行數據庫查詢,因爲用戶問題的答案必須從數據庫中提取,並且不能接受Chatbot的培訓。通過Wit.ai運行mysql查詢

回答

0

如您在tutorial中看到的那樣,您在wit.ai中定義了操作,那些操作可能涉及可作爲對用戶的響應發送的變量。所以,如果你沒有定義它們,那麼你應該在你定義的動作中對數據庫進行查詢,然後去做,因爲你可以在那裏使邏輯發生。另外,考慮到您可能會對數據庫處理非同步請求,那麼您應該實現一個阻止機制,以便在完成查詢後返回每個操作中的上下文。

我知道你想在python中實現一個實現,但是我已經在node.js上有了一個實現,所以這裏是我的示例代碼。

getFullName({sessionId, context, entities}) { 
    let session; 
    let fbid = sessionId.split("-")[0]; 
    return fbTypingOn(fbid) 
     .then(() => { 
     return model.getSesion(fbid); 
     }) 
     .then(sesion => { 
     session = sesion; 
     return callFbUserAPI(session); 
     }) 
     .then(first_name => { 
     session.context.fullNameGreeting = utilsBot.buildGreeting(session); 
     return model.setSesion(session); 
     }) 
     .then(sesion => { 
     return session.context; 
     }) 
     .catch(error => { 
     console.log("Error in getFullName " + error); 
     session.context.fullNameGreeting = "Hola"; 
     return context; 
     }); 
    } 

請確保您閱讀官方頁面中的所有文檔,因爲如果沒有東西,那麼您應該這樣做。另外,我猜,Python 2中已經有了一個實現。

+0

非常感謝你! –

+0

不客氣。正如你所看到的,我的sessionId是用戶的facebook id和另一個字符串的複合體,因爲當你在wit.ai中重新啓動流程時,你應該清除上下文並生成一個新的sessionId。另外,我在數據庫中存儲的sessionId和上下文不止。 – ruselli