在Watson对话中定义Dialog时,我无法向用户问候他/她的名字,或者我无法检测到用户发送的联系号码并将其重新表述给用户。是否可以在Watson对话Api中执行此操作。
发布于 2016-08-31 02:09:50
您是否已经有权访问此信息?您可以将这些值作为上下文发送,并使用$context_variable引用它们,从用户那里收集信息也是如此。您可以通过您的应用程序使用正则表达式来捕获内容,或者使用一些Spring表达式,您可以在这里看到text.matches:https://www.ibm.com/watson/developercloud/doc/conversation/dialog_reference.shtml您可以将其存储为上下文,然后使用$context_variable再次引用它。像姓名和电话号码这样的信息是相当开放的,所以如果不使用一个开放的实体提取引擎,就很难捕捉到,我们正在研究结合这一点的最好方法。
发布于 2016-08-31 17:10:11
尽管米奇的回答是正确的,但这里有一个个性化回答的例子。
将conversation_start节点文本设置为"Hello <? context.username ?>“。

在你的代码中,你可以这样做(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)当你运行它时,它应该输出下面的内容,"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":{}
}需要注意的一点是,context对象用于维护会话的状态。因此,如果您计划只使用REST API,那么在发送上下文变量之前,您需要将上下文变量合并到前面的上下文对象中。您只需要在您确实知道对话需要该上下文的情况下执行此操作。
发布于 2016-09-30 02:36:25
要获取用户的输入,请使用:
"context": {"yourVariable": "<?input.text?>"}并展示:
"output": {"text": "You entered this $yourVariable"}https://stackoverflow.com/questions/39232950
复制相似问题