在Watson对话中定义对话框时,我无法用他/她的名字问候用户,或者我无法检测用户发送的联系号码并将其改写给用户。是否可以在Watson Conversation Api中进行。
答案 0 :(得分:6)
虽然Mitch的回答是正确的,但这是一个做个性化回复的例子。
1。将conversation_start
节点文本设置为“Hello <? context.username ?>
”。
2。在你的代码中,你会做这样的事情(Python)。
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。当你运行它时,它应输出以下内容,“text”部分是用户看到的部分。
{
"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,则需要在发送之前将上下文变量合并到前面的上下文对象中。您只需要在知道对话需要该上下文的位置执行此操作。
答案 1 :(得分:4)
您是否已有权访问此信息?您可以通过上下文发送这些值,并使用$ context_variable引用它们 从用户收集信息也是如此。您可以通过应用程序使用正则表达式捕获事物,或者使用一些Spring表达式,您可以在此处查看text.matches: https://www.ibm.com/watson/developercloud/doc/conversation/dialog_reference.shtml 您可以将其存储为上下文,然后再次使用$ context_variable引用它。 名称和电话号码等信息是非常开放的,因此如果不使用开放式实体提取引擎就很难捕获,我们正在研究合并它的最佳方法。
答案 2 :(得分:-1)
要获取用户的输入,请使用:
"context": {"yourVariable": "<?input.text?>"}
并表示:
"output": {"text": "You entered this $yourVariable"}