2016-08-30 90 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"}