[英]How to delete context/session_id at end of conversation in Wit.ai bot
我在Wit.ai遇到問題,在結束對話后,我的Python機器人將保留上下文。 在Facebook客戶端和pywit交互式客戶端中,此行為相同。
對話以簡單的“嗨”開始,如果用戶在成功查詢后點擊“謝謝,再見”快速回復,則可以在不同分支中的不同點結束。
如果對話隨后再次以“ Hi”開始,則會話狀態從之前保存下來,從而導致錯誤的響應。 用戶說再見后刪除上下文的最佳方法是什么?
我嘗試創建一個再見功能,該功能在機器人發送了最終消息后觸發,但是它沒有用,例如
def goodbye(request):
del request['context'] # or request.clear()
return request
該文檔( https://wit.ai/docs/http/20160526#post--converse-link )建議您清除session_id並生成一個新的session_id,但沒有給出任何提示。
您可以使用uuid
生成新的會話ID。 會話ID必須是唯一的任何文本,甚至可以是系統日期。 我建議你使用uuid
在這里檢查如何生成它。
我遇到了同樣的問題,並通過以下方式解決了這個問題。
我首先創建了一個簡單的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的建議)。
我不確定這是否是最好的解決方案,但它對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.