在使用IBM Watson Conversation Service(WCS)时,我想在响应中打印一个电子邮件地址。问题是WCS忽略了@符号和@字符本身之后的所有字符。
我尝试使用'
和\
来逃避它,但它没有多大帮助。
如何在回复字符串中打印电子邮件地址?
答案 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