@字符未显示在Watson Conversation Service响应字符串中

时间:2017-08-16 11:36:01

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

在使用IBM Watson Conversation Service(WCS)时,我想在响应中打印一个电子邮件地址。问题是WCS忽略了@符号和@字符本身之后的所有字符。

我尝试使用'\来逃避它,但它没有多大帮助。

如何在回复字符串中打印电子邮件地址?

4 个答案:

答案 0 :(得分:4)

如果电子邮件地址作为上下文变量传递给Watson Conversation服务,则可以将其作为响应字符串的一部分返回(打印)。假设变量名为“email”且其值为“henrik@example.com”,则以下内容将作为响应:

Hello, your mail address is <? $email ?>

它将返回:

Hello, your mail address is henrik@example.com

但是,如果要打印@等特殊字符,则需要小心。 The reason is that it refers to entities. It is a shorthand。在这种情况下,您需要使用\转义该符号,例如\@。这是一个硬编码的回复:

Please contact support at support\@example.com

答案 1 :(得分:1)

我不确定您的问题,但是,如果您想在对话中返回邮件地址,可以在mail变量中添加context地址值[高级回复]:

{
  "context": {
    "mail": "mail@domain.com"
  },
  "output": {
    "text": {
      "values": [
        "Your mail address is $mail"
      ],
      "selection_policy": "sequential"
    }
  }
}

使用$mail [方法访问上下文变量]来访问此值并在对话中返回如下内容:

if bot recognizes yourCondition response "Your mail address is $mail

但是,如果您想为此使用一些自定义代码,您可以添加来自对话消息调用的返回,例如:

//add inside your call, like:
conversation.message(payload, function (err, data) {
    data.context.mail= "mail@domain.com";
    if (err) {
      return res.status(err.code || 500).json(err);
    }
    updateMessage(payload, data, req, res);

  });
}); 

在您的Watson Conversation Service中,您可以在每个带有$mail的回复消息中使用此变量。

答案 2 :(得分:1)

这是同样的问题。我已经面对了。解决方案非常简单。

如果您使用的是Watson Assistant UI,请尝试响应

youremail\@gmail.com

它将起作用, 如果您使用Watson Assistant API来操作对话框。 你必须给

"youremail\\@gmail.com"

我不知道原因。但是,该解决方案似乎有效。

答案 3 :(得分:0)

如果您需要编写静态电子邮件地址,则可能需要对其进行破解。好像WCS假设您在响应中添加(虚拟)变量后就知道自己在做什么。

例如:Email addr@gmail.com!

导致:Email addr!(文本)

但是:Email addr@gmail.com! <? $x >

导致:Email addr@gmail.com!(链接)

前者只是文字“ addr”

后者是链接:(addr@gmail.com addr @ gmail.com