2017-04-11 45 views
0

我一直在Wit.ai遇到問題,我的Python bot會在結束對話後保留上下文。這種行爲在Facebook客戶端和pywit交互式客戶端中是相同的。如何在Wit.ai對話結束時刪除context/session_id bot

對話以一個簡單的'Hi'開頭,如果用戶在成功查詢後點擊'Thanks,bye'快速回復,可以在不同分支內的不同點結束。

如果會話再次以'Hi'開始,會話狀態將從之前保存,導致錯誤的響應。在用戶說再見之後刪除上下文的最好方法是什麼?

我試圖創建一個再見功能,在機器人發送了它的最終消息後觸發,但它不起作用,例如,

def goodbye(request): 
    del request['context'] # or request.clear() 
    return request 

文檔(https://wit.ai/docs/http/20160526#post--converse-link)建議您清除SESSION_ID並生成一個新的,但沒有給出提示如何。

回答

0

您可以使用uuid生成新的會話ID。會話ID必須是任何唯一的文本,甚至可以是系統日期。我建議你使用uuid

檢查here至於如何生成它。

0

我遇到了同樣的問題,我用下面的方法解決了這個問題。

我首先創建一個簡單的end_session動作,在每個會話路徑的終點被調用:

def end_session(request):  
    return {'end_session': True} 

然後我插入下面的代碼只是從run_actions返回後:

if 'end_session' in context: 
    context = {} 
    session_hash = uuid.uuid1().hex 

作爲您將看到,除了清除上下文之外,我還重新創建了一個新的會話ID(根據Swapnesh Khare的建議)。

我不確定這是最好的解決方案,但它適用於我。