简体   繁体   中英

@ character is not displayed in Watson Conversation Service response string

In working with IBM Watson Conversation Service (WCS) I want to print an email address in the response. The problem is that WCS is neglecting all the characters after @ symbol and the @ character itself.

I tried using ' and \\ to escape it, but it didn't help much.

How can I print an email address in a response string?

If the email address is passed into the Watson Conversation service as a context variable, then it can be returned (printed) as part of the response string. Assuming the variable is named "email" and its value is "henrik@example.com", the following would do as response:

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

It would return:

Hello, your mail address is henrik@example.com

However, you need to be careful if you want to print out special characters such as @ . The reason is that it refers to entities. It is a shorthand . In that case you need to escape that sign with \\ , eg, \\@ . Here is a hardcoded response:

Please contact support at support\@example.com

I'm not sure about your question, but, if you want to return the mail address inside the conversation, you can add the mail address value inside the context variable [advanced response]:

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

And use $mail [ method for access contexts variables ] for access this value and return in your conversation something like:

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

But, if you want to use some custom code for that, you can add the return from your Conversation message call, something like:

//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);

  });
}); 

And in your Watson Conversation Service, you can use this variable inside every response message with $mail .

This is the same problem. I had faced it. and the solution is very pretty simple.

if you are using watson assistant UI try in response like,

youremail\@gmail.com

it will work, if you are using watson assistant API to manipulate the dialog. you have to give

"youremail\\@gmail.com"

I don't know the reason for that. but, the solution seems to work.

If you need to write a static email address, you might have to hack it. It seems like WCS assumes you know what you're doing if you add a (dummy) variable in the response.

ex: Email addr@gmail.com!

results in: Email addr! (text)

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

results in: Email addr@gmail.com! (link)

the former is just the literal 'addr'

the latter is the link: ( addr@gmail.com ) < a href="mailto:addr@gmail.com" class="WAC__Link WAC__Link-email" target="_blank" rel="noopener noreferrer" > addr@gmail.com < / a >

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM