vania-janet/multiturn-rag-retrieval-data huggingface dataset:
: You can add an assistant image to the web chat header to brand the window. You can add an avatar image that represents your assistant or a brand logo, for example. For more information, see [Integrating with your own web site](https://cloud.ibm.com/docs/assistant?topic=assistant-deploy-web-chat).

Know your plan
: Now your service plan is displayed in the page header. And if you have a Plus Trial plan, you can see how many days are left in the trial.





 21 April 2020 

Fuzzy matching support was expanded
: Added support for stemming and misspelling in French, German, and Czech dialog skills. This enhancement means that the assistant can recognize an entity value that is defined in its singular form but mentioned in its plural form in user input. It also can recognize conjugated forms of a verb that is specified as an entity value.

For example, if your French-language dialog skill has an entity value of animal, it recognizes the plural form of the word (animaux) when it is mentioned in user input. If your German-language dialog skill has the root verb haben as an entity value, it recognizes conjugated forms of the verb (hast) in user input as mentions of the entity.





 2 April 2020 

New and improved access control
: Now, when you give other people access to your Watson Assistant resources, you have more control over the level of access they have to individual skills and assistants. You can give one person read-only access to a production skill and manager-level access to a development skill, for example. For more information, see [Managing access to resources](https://cloud.ibm.com/docs/assistant?topic=assistant-access-control).

Can't see Analytics anymore? If you cannot do things that you could do before, you might not have appropriate access. Ask the service instance owner to change your service access role. For more information, see [How to keep your access](https://cloud.ibm.com/docs/assistant?topic=assistant-access-controlaccess-control-prep).
Anyone who has these IDs could use them to send messages to your assistant and receive its replies. However, these IDs cannot be used to log in to your account, make any changes to your assistant, or retrieve logs or analytics information about your assistant.

If you are concerned about unauthorized access to your assistant, you can enable the web chat security feature for additional security, such as verifying message origin and authenticating users. Enabling the security feature requires additional development work on your website. For more information, see [Web chat security](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-web-chat-security).



 Updating site security policies 

If your website uses a Content Security Policy (CSP), you must update it to grant permission to the web chat.

The following table lists the values to add to your CSP.



CSP properties

 Property Additional values 

 default-src 'self' *.watson.appdomain.cloud fonts.gstatic.com 'unsafe-inline' 
 connect-src *.watson.appdomain.cloud 



The following example shows a complete CSP metadata tag:

<meta
http-equiv="Content-Security-Policy"
content="default-src 'self' .watson.appdomain.cloud fonts.gstatic.com 'unsafe-inline';connect-src .watson.appdomain.cloud" />



 Allowing elements 

If your CSP uses a nonce to add elements such as <script> and <style> tags to an allowlist, do not use unsafe-inline to allow all such elements. Instead, provide a nonce value to the web chat widget as a configuration option. The web chat will then set the nonce on any of the <script> and <style> elements that it generates dynamically.

A CSP that passes a nonce to the web chat widget might look like this:

<meta
http-equiv="Content-Security-Policy"
For more information, see [Changing the inactivity timeout setting](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-settingsassistant-settings-change-timeout).
5. To test the assistant from a separate web page, copy and paste the Share this link URL into a web browser.

A simple IBM-branded web page is displayed that contains a chat window where you can interact with your assistant. You can share the page with others by sending them the Share this link URL. If necessary, you can click the toggle on the Preview page to disable the link.

Previewing your assistant within the Watson Assistant user interface does not incur any charges. If you use the Share this link URL to preview the assistant from elsewhere, you might be charged for messages that you submit, according to the terms of your plan. You can review metrics about the test user conversations from the Analytics page.
6. Click X to close the Preview page.







 Dialog considerations 

The rich responses that you add to a dialog are displayed in the web-hosted chat widget as expected, with the following exceptions:



* Connect to human agent: This response type is ignored.
* Pause: This response type pauses the assistant's activity in the chat widget. However, activity does not resume after the pause until another response is triggered. Whenever you include a pause response type, add another, different response type, such as text, after it.



See [Rich responses](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overviewdialog-overview-multimedia) for more information about response types.
* If you are using the web chat integration, add the learningOptOut parameter to the script that you embed in your web page, and set it to true.

For more information, see [Configuration](https://integrations.us-south.assistant.watson.cloud.ibm.com/web/developer-documentation/api-configuration).







 Labeling and deleting data in Watson Assistant 

Do not add personal data to the training data (actions and steps, including user examples) that you create. In particular, be sure to remove any personally-identifiable information from files that contain real user utterances that you upload to mine for user example recommendations.

Experimental and beta features are not intended for use with a production environment and therefore are not guaranteed to function as expected when labeling and deleting data. Experimental and beta features should not be used when implementing a solution that requires the labeling and deletion of data.

If you need to remove a customer's message data from a Watson Assistant instance, you can do so based on the customer ID of the client, as long as you associate the message with a customer ID when the message is sent to Watson Assistant.

Removing message data must be an occasional event only for individual customer IDs. To disable analytics logs, you can upgrade to an Enterprise with Data Isolation plan.



* The assistant preview and automatic Facebook integration do not support the labeling and therefore deletion of data based on customer ID. They should not be used in a solution that must support the ability to delete data based on a customer ID.
* For Intercom, the customer_id is the user_id prepended with intercom_. The Intercom user_id property is the id of the author message object in the Conversation Model that is defined by Intercom.



* To get the ID, open the channel from a web browser. Open the web developer tools to view the console. Look for author.



The full customer ID looks like this: customer_id=intercom_5c499e5535ddf5c7fa2d72b3.
* For Slack, the customer_id is the user_id prepended with slack_.
For more information, see [Configuring the web chat](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-web-chat-config).



 Launcher appearance and behavior 

The web chat launcher welcomes and engages customers so they know where to find help if they need it. By default, the web chat launcher appears in a small initial state as a circle in the bottom right corner:

![An example of the initial launcher](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/web-chat-icon.png)

After 15 seconds, the launcher expands to show a greeting message to the user. In this expanded state, a customer can still click the launcher to open the web chat. (If the customer reloads the page or navigates to a different page before the launcher has expanded, the 15-second timer restarts.)

The appearance of this expanded state differs slightly depending on whether the customer is using a desktop browser or a mobile browser:



* For desktop browsers, the expanded launcher shows two primary buttons the customer can click to open the web chat, and a Close button that closes the launcher.

![An example of the desktop launcher](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/desktop-launcher.png)

The expanded launcher remains in its expanded state even if the customer reloads the page or navigates to a different page. It stays in its expanded state until the customer either opens it by clicking on either of the two primary buttons, or closes it, at which point it returns to its initial small state for the rest of the session.
* For mobile browsers, the launcher shows only a single primary button.

!
"channel": "voice_telephony"
}
]
}
]
}
Show more







 Transferring the conversation to the web chat integration 

You can transfer the caller from the current phone call to a [web chat](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-deploy-web-chat) session by using the channel_transfer response type.

The assistant sends an SMS message to the caller that includes a URL that the caller can tap to load the web chat widget in the phone's browser. The web chat session displays the history of the phone call and can start the process of collecting information needed to complete the transaction.

This can be useful in situations where the customer can provide information more easily in writing than by speaking (for example, changing an address).

After the transfer has successfully completed, the caller can hang up the phone and continue the copnversation using the web chat. The channel_transfer response type can be used with the phone integration only if the SMS with Twilio integration is also configured for the assistant.

{
"generic": [
{
"response_type": "text",
"values":
{
"text": "I will send you a text message now with a link to our website."
}
],
"selection_policy": "sequential"
},
{
"response_type": "channel_transfer",
"message_to_user": "Click the link to connect with an agent using our website.",
"transfer_info": {
"target": {
"chat": {
"url": "https://example.com/webchat"
}
}
}
}
]
}
Show more





 Ending the call 

You can instruct your assistant end a phone call by using the end_session response type, as shown in this example.

{
"generic": [
{
"response_type": "end_session"
}
]
}
On the ![Integrations icon](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/integrations-icon.png)Integrations page, find the Web chat tile and click Open. The Open web chat window opens.
2. In the Environment field, select the environment you want the web chat widget to connect to. Click Confirm.

The Web chat page opens, showing the settings for the web chat integration in the selected environment.





 Setup tasks 

You can configure the web chat in the following ways:

Style and appearance
: You can configure the overall appearance of the web chat widget, including the assistant name, the colors of various elements, and the avatar image. For more information, see [Configuring style and appearance](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-web-chat-style).

Launcher
: You can change the greeting text that is shown by the launcher that invites users to open the web chat. On the Launcher tab, you can specify separate greeting messages for the desktop launcher and the mobile launcher.

The message you specify is immediately reflected by the launcher preview that is shown on the page. However, no configuration changes are applied to the environment until you click Save and exit.

Home screen
: You can configure the contents of the home screen that greets customers and helps them start the conversation. For more information, see [Configuring the home screen](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-web-chat-configure-home-screen).

Suggestions
: You can configure how and when the web chat offers offers suggestions to customers when the assistant isn't delivering what they expect. For more information, see [Configuring suggestions](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-web-chat-suggestions).

Security
* If you created your web chat integration before May 2020, check the code snippet that you embedded in your web page to see if it refers to watsonplatform.net. If so, you must edit the code snippet to use the new URL syntax. For example, change the following URL:

<script src="https://assistant-web.watsonplatform.net/loadWatsonAssistantChat.js"></script>

The correct syntax to use for the source service URL looks like this:

src="https://web-chat.global.assistant.watson.appdomain.cloud/loadWatsonAssistantChat.js"



* If your web chat integration connects to a Salesforce service desk, then you must edit the API call that is included in the code snippet that you added to the Visualforce Page that you created in Salesforce. From Salesforce, search for Visualforce Pages, and find your page. In the <iframe> snippet that you pasted into the page, make the following change:

Replace: src=“https://assistant-integrations-{location}.watsonplatform.net/public/salesforceweb” with a url with this syntax:

src="https://integrations.{location}.assistant.watson.appdomain.cloud/public/salesforceweb/{integration-id}/agent_application?version=2020-09-24"

From the Web chat integration Salesforce live agent setup page, find the Visualforce page markup field. Look for the src parameter in the <iframe> element. It contains the full URL to use, including the appropriate {location} and {integration-id} values for your instance.
* For a Slack integration that is over 7 months old, make sure the Request URL is using the proper endpoint.



* Go to the [Slack API](https://api.slack.com/) web page. Click Your Apps to find your assistant app. Click Event Subscriptions from the navigation pane.
* Edit the Request URL.
Two new history events, [history:begin](https://web-chat.global.assistant.watson.cloud.ibm.com/docs.html?to=api-eventshistorybegin) and [history:end](https://web-chat.global.assistant.watson.cloud.ibm.com/docs.html?to=api-eventshistoryend) announce the beginning and end of the history of a reloaded session. These events can be used to view the messages that are being reloaded. The history:begin event allows you to edit the messages before they are displayed.

See this example for more information on saving the state of [customResponse](https://web-chat.global.assistant.watson.cloud.ibm.com/testfest.html?to=api-eventscustomresponse) types in session history.

Channel switching
: You can now create a dialog response type to functionally generate a connect-to-agent response within channels other than web chat. If a user is in a channel such as Slack or Facebook, they can trigger a channel transfer response type. The user receives a link that forwards them to your organization's website where a connection to an agent response can be started within web chat. For more information, see [Adding a Channel transfer response type](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overviewdialog-overview-add-channel-transfer).





 11 March 2021 

Actions skill improvement
: Updated the page where you configure a step with an Options reply constraint. Now it's clearer that you have a choice to make about whether to always ask for the option value or to skip asking.





 4 March 2021 

Support for every language!
: You now can build an assistant in any language you want to support. If a dedicated language model is not available for your target language, create a skill that uses the universal language model. The universal model applies a set of shared linguistic characteristics and rules from multiple languages as a starting point. It then learns from training data written in the target language that you add to it.

The universal model is available as a beta feature.
Using variables to manage conversation information 

When customers reply to your assistant, they share information about themselves and what they want. Your assistant remembers this information, and other information about a conversation, as variables. Your assistant can use variables to provide a more personalized and customized experience, and to get users quickly to the solutions they need.

Variables are a powerful tool that you can use to build a better assistant. Variables make possible all of the following benefits:



* Personalization. The best virtual assistant experiences are targeted and personalized for each customer. When an assistant greets a customer by saying "Hello, Frank! Welcome back," it tells Frank that it remembers his name and that it has talked to him before. By storing this kind of information in variables and then referencing them in your assistant's output, you can personalize the conversation and help your assistant seem more human.
* Acceleration. Over the course of a conversation, your customers answer questions and make choices. These customer responses are stored as variables, which your assistant can then use to guide a conversation. By choosing the right steps and not wasting your customers' time, you can get them as quickly as possible to the right solution.
* Modularity. Some information might be useful for many different purposes (for example, a customer's current account balance or contact information). Rather than retrieving or recalculating this information in multiple locations, you can do so once, by using a variable to store the result and then access it wherever you need it.



A variable is simply a named container for a piece of information; by referencing this container by name, your assistant can store or retrieve the information at run time. For example, a variable that is called account_balance might store your customer's current account balance, a value your assistant can update or retrieve as needed.

The data that is stored by a variable is characterized by the type of data that it contains, such as text, a numeric value, a date, or even a list of multiple values. The operations that you can perform with a variable vary depending on its data type.



 Action variables and session variables 

Watson Assistant supports two categories of variables:



* Action variables: When a step collects information from the customer, the customer response is automatically stored in an action variable.
"transfer_info": {
"target": {
"chat": {
"url": "https://example.com/webchat"
}
}
}
},
{
"response_type": "connect_to_agent",
"channels":
{
"channel": "chat"
}
],
"message_to_human_agent": "User asked to speak to an agent.",
"agent_available": {
"message": "Please wait while I connect you to an agent."
},
"agent_unavailable": {
"message": "I'm sorry, but no agents are online at the moment. Please try again later."
},
"transfer_info": {
"target": {
"zendesk": {
"department": "Payments department"
}
}
}
}
]
}
Show more







 connect_to_agent 

Requests that the conversation be transferred to a live agent for help. Service desk support must be configured for the channel integration.



 Integration channel support 



 Web chat Phone WhatsApp 

 ![Yes](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/checkmark-icon.svg) ![Yes](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/checkmark-icon.svg) !
connect-src *.watsonplatform.net *.watson.appdomain.cloud 



The following example shows a complete CSP metadata tag:

<meta
http-equiv="Content-Security-Policy"
content="default-src 'self' .watson.appdomain.cloud fonts.gstatic.com 'unsafe-inline';connect-src .watsonplatform.net .watson.appdomain.cloud" />



 Allowing elements 

If your CSP uses a nonce to add elements, such as <script> and <style> tags, to an allowlist, do not use unsafe-inline to allow all such elements. Instead, provide a nonce value to the web chat widget as a configuration option. The web chat will then set the nonce on any of the <script> and <style> elements that it generates dynamically.

A CSP that passes a nonce to the web chat widget might look like this:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' *.watson.appdomain.cloud fonts.gstatic.com 'nonce- ';connect-src *.watsonplatform.net *.watson.appdomain.cloud"

You can pass the nonce to the web chat by editing the embed script as follows:

window.watsonAssistantChatOptions = {
integrationID: "YOUR_INTEGRATION_ID",
region: "YOUR_REGION",
serviceInstanceID: "YOUR_SERVICE_INSTANCE",

cspNonce: "<server generated value>",

onLoad: function(instance) {
instance.render();
}
};







 Security measures 

The web chat integration undergoes tests and scans on a regular basis to find and address potential security issues, such as cross-site scripting (XSS) vulnerabilities.

Be sure to run your own security reviews to see how the web chat fits in with your current website structure and policies. The web chat is hosted on your site and can inherit any vulnerabilities that your site has.
* Pause: This response type pauses the assistant's activity in the chat. However, activity does not resume after the pause until another response is triggered. Whenever you include a pause response type, add another, different response type, such as text, after it.



For more information about rich response types, see [Rich responses](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overviewdialog-overview-multimedia).

If you want to use the same dialog for an assistant that you deploy to many different platforms, add custom responses per integration type. You can add a conditioned response that tells the assistant to show the response only when the web chat integration is being used. For more information, see [Building integration-specific responses](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-integrationsdialog-integrations-condition-by-type).





 Web chat security 

Configure the web chat to authenticate users and send private data from your embedded web chat. For more information, see [Securing the web chat](https://cloud.ibm.com/docs/assistant?topic=assistant-web-chat-security).





 Adding service desk support 

Delight your customers with 360-degree support by integrating your web chat with a third-party service desk solution.

The following service desk offerings are supported:



* [Zendesk](https://cloud.ibm.com/docs/assistant?topic=assistant-deploy-zendesk)
* [Salesforce](https://cloud.ibm.com/docs/assistant?topic=assistant-deploy-salesforce)



Fully functional reference implementations are provided for the following service desks:



* [Genesys Cloud](https://github.com/watson-developer-cloud/assistant-web-chat-service-desk-starter/tree/main/src/genesys/webChat)
* [NICE inContact](https://github.com/watson-developer-cloud/assistant-web-chat-service-desk-starter/tree/main/src/incontact/webChat)