簡體   English   中英

如何在Wit.ai機器人對話結束時刪除context / session_id

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM