【问题标题】:How to give personalised greeting in Watson Conversation?如何在 Watson Conversation 中进行个性化问候?
【发布时间】:2016-08-30 16:44:26
【问题描述】:

在 Watson 对话中定义对话框时,我无法用他/她的名字打招呼,或者我无法检测到用户发送的联系号码并将其改写给用户。是否可以在 Watson Conversation Api 中进行。

【问题讨论】:

    标签: ibm-cloud ibm-watson watson-conversation


    【解决方案1】:

    虽然米奇的回复是正确的,但这里是一个做个性化回复的例子。

    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。当您运行它时,它应该输出以下内容,其中“文本”部分是用户看到的内容。

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

    【讨论】:

    • 当你说“在你的代码中你会做这样的事情(Python)”是什么意思。我应该在哪里包含这个代码 sn-p?另外,有没有办法不对用户名进行硬编码?(我看到你已经硬编码了 Simon),而是让用户输入他的名字并使用它。附言我是 Bluemix 的新手
    • 它是硬编码的,但你可以通过你的应用程序加载它。
    • 我应该在哪里编写python代码sn-p?我应该在我的电脑上本地运行它还是应该将它集成到对话服务中?如果我要集成到对话服务中,我应该如何处理它?如果你能提供任何教程的链接,那就太好了
    • @AthifShaffy 我的博客上有一些例子。 sodoherty.com 但您也可以查看对话示例:ibm.com/watson/developercloud/doc/conversation/…
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      并显示:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多