如何在 Watson Conversation 中进行个性化问候?

How to give personalised greeting in Watson Conversation?

在 Watson Conversation 中定义对话时,我无法使用 his/her 姓名问候用户,或者我无法检测到用户发送的联系电话号码并将其改写给用户。能不能在Watson Conversation中做到Api 还是不行

您是否已经可以访问此信息?您可以将这些值作为上下文发送,并使用 $context_variable 引用它们 从用户那里收集信息也是如此。您可以通过您的应用程序使用正则表达式或使用一些 Spring 表达式来捕获内容,您可以在此处查看 text.matches: https://www.ibm.com/watson/developercloud/doc/conversation/dialog_reference.shtml 您可以将其存储为上下文,然后再次使用 $context_variable 引用它。 名称和 phone 数字等信息是完全开放的,因此如果不使用开放的实体提取引擎可能很难捕获,我们正在研究将其整合的最佳方法。

尽管 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,那么您需要在发送之前将您的上下文变量合并到前面的上下文对象中。您只需要在您确实知道对话需要该上下文的地方执行此操作。

要获取用户的输入,请使用:

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

并显示:

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