2016-08-30 94 views

回答

4

您是否已經有權訪問此信息?您可以通過上下文發送這些值,並使用$ context_variable引用它們。 收集用戶信息的過程也是如此。你可以通過你的應用程序使用正則表達式來捕捉東西,或者使用一些Spring表達式,你可以在這裏看到文本。匹配: https://www.ibm.com/watson/developercloud/doc/conversation/dialog_reference.shtml 你可以將它存儲爲上下文,然後再次使用$ context_variable引用它。 像姓名和電話號碼這樣的信息是相當開放的,所以如果不使用開放的實體提取引擎,我們正在研究將其納入其中的最佳方法,那麼可能很難捕獲。

6

雖然米奇的回答是正確的,但這是一個做個性化迴應的例子。

1.將您的conversation_start節點文本設置爲「Hello <? context.username ?>」。

enter image description here

2.在你的代碼,你會做這樣的事情(蟒蛇)。

import json 
from watson_developer_cloud import ConversationV1 

conversation = ConversationV1(
    username='SERVICE_USERNAME', 
    password='SERVICE_PASSWORD', 
    version='2016-07-11') 

workspace_id = 'WORKSPACE_ID_CONVERSATION' 

response = conversation.message(workspace_id=workspace_id, context= {'username':'Simon'}) 

print json.dumps(response) 

3.當你運行這個,它應該輸出以下內容,其中「文本」部分是用戶看到的。

{ 
    "entities":[], 
    "intents":[], 
    "output":{ 
    "log_messages":[], 
    "nodes_visited":["node_1_1472298724972], 
    "text":["Hello Simon"] 
    }, 
    "context":{ 
    "username":"Simon", 
    "conversation_id":"9dc1501b-ac53-4b51-a299-37f5314ebf89", 
    "system":{ 
     "dialog_turn_counter":1, 
     "dialog_stack":["root"], 
     "dialog_request_counter":1 
    } 
    }, 
    "input":{} 
} 

有一點需要注意的是,上下文對象用於維護對話的狀態。因此,如果您打算只使用REST API,那麼您需要在發送前將上下文變量合併到前面的上下文對象中。你只需要在你知道對話需要這個上下文的點上這樣做。

+0

你是什麼意思時,你說你 - 「在你的代碼,你會做這樣的事情(蟒蛇) 「。我應該在哪裏包含這段代碼?另外,有什麼方法可以不用硬編碼用戶名?(我看你有硬編碼的西蒙),而是讓用戶輸入他的名字並使用它。附:我是Bluemix的新手 –

+0

這是硬編碼的例子,但你會通過你的應用程序加載。 –

+0

我應該在哪裏編碼python代碼片段?我應該在本地運行它,還是應該將它集成到對話服務中?如果我要集成到對話服務中,我應該如何處理它?如果您可以提供指向任何教程的鏈接,那麼它會很棒 –

-1

要得到用戶的輸入,使用:

"context": {"yourVariable": "<?input.text?>"} 

,並顯示出:

"output": {"text": "You entered this $yourVariable"}