vania-janet/multiturn-rag-retrieval-data huggingface dataset:
Filter variables and saved responses by name
: You can now find variables and saved responses more easily. On the Actions page, you can filter variables you created or saved responses you added. Click the search icon, then enter a search string. Your list of variable or saved responses filters to match what you enter.





 1 September 2022 

Conditioning on days of the week
: You can now condition a step on days of the week. This feature is available with the date response type and the Current date built-in variable.

For example, you might [define a customer response](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-collect-infochoose-type) in step 1 with the date response type. When the customer responds to that step, they choose a date. You can then condition a later step on whether the date that the customer chose is Wednesday.

New operators available for building conditions
: Several new operators are available for building conditions in your actions. The free text response type now has the contains, does not contain, matches, and does not match operators available. For more information, see [Operators](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-step-conditionsoperators).

Extensions support for arrays
: Custom extensions now support passing arrays as parameters and accessing arrays in response variables. For more information, see [Calling a custom extension](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-call-extension).





 26 August 2022 

New filter on the Analyze page
: You can now filter customer conversation data by the Greet customer system action. From the Conversations tab of the Analyze page, open the Actions filter and select Greet customer. For more information, see [Filtering conversations](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-analytics-conversationsanalytics-conversations-filtering).

Filter actions by name
: You can now find actions more easily. On the Actions page, you can filter actions by name. Click the search icon, then enter a search string.
Unique user is anyone who interacts with your assistant. User ID identifies each user, using a unique label to track the level of service usage. A unique user can have multiple conversations, but a conversation never has more than one unique user.

Conversation is a set of messages consisting of the messages that an individual user sends to your assistant, and the messages your assistant sends back. Conversations can have multiple requests within a single conversation, but a single request doesn't span more than 1 conversation.

Request is a root-level utterance, such as an initial question or request, that signals the start of a specific flow. A user can initiate multiple requests. Requests are meant to represent the core concepts or topics your users are asking about. A request can have multiple steps within it, for example I want to order a pizza is a request. Delivery/takeout, Small/Medium/Large, Cheese/Pepperoni/Mushrooms/Peppers are all steps within the request of ordering a pizza.





 Completion and recognition 

The completion and recognition charts provide information about the actions in your assistant.

![Completion and recognition](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/analytics-completion-recognition-2.png)



 Completion 

Completion is the measurement of how often users are able to successfully get through all steps of an action.

Your assistant measures when someone reaches the final step of an action. The completion chart provides an overview of all the actions you have built and how many of these are being completed or not.

Completion is only applicable when a user question or request matched to an action, and the action starts.

One action can be triggered multiple times, so to better understand individual action performance, click Action completion to understand each action in more detail.





 Recognition 

Recognition is the measurement of how many requests are being recognized by the assistant and routed into starting an action.

The recognition chart provides you with a view into how many requests are matched to actions.
* To return the entity name as it was specified by the user in the dialog response, use the .literal property: So you want to go to <?entities.airport[0].literal?>... or So you want to go to @airport.literal ...

Both formats evaluate to `So you want to go to Kennedy Airport...' in the response.
* Expressions like @airport:(JFK) or @airport.contains('JFK') always refer to the value of the entity (JFK in this example).
* To be more restrictive about which terms are identified as airports in the input when fuzzy matching is enabled, you can specify this expression in a node condition, for example: @airport && @airport.confidence > 0.7. The node will only execute if your assistant is 70% confident that the input text contains an airport reference.



In this example, the user input is Are there places to exchange currency at JFK, Logan, and O'Hare?



* To capture multiple occurrences of an entity type in user input, use syntax like this:

"context":{
"airports":"@airport.values"
}

To later refer to the captured list in a dialog response, use this syntax: You asked about these airports: <? $airports.join(', ') ?>. It is displayed like this: You asked about these airports: JFK, Logan, O'Hare.
* To capture the literal values for multiple entity mentions, use the following syntax:

entities['myEntityName'].literal]









 Accessing intents 

The intents array contains one or more intents that were recognized in the user input, sorted in descending order of confidence.

Each intent has one property only: the confidence property. The confidence property is a decimal percentage that represents your assistant's confidence in the recognized intent.

While testing your dialog, you can see details of the intents that are recognized in user input by specifying this expression in a dialog node response:

<? intents ?>

For the user input, Hello now, your assistant finds an exact match with the #greeting intent. Therefore, it lists the #greeting intent object details first.
Define one intent for each goal that can be identified in a user's input. For example, you might define an intent that is named store_hours that answers questions about store hours. For each intent, you add sample utterances that reflect the input customers might use to ask for the information they need, such as, What time do you open?

Or use prebuilt content catalogs that are provided by IBM to get started with data that addresses common customer goals.
* Dialog: Use the dialog tool to build a dialog flow that incorporates your intents. The dialog flow is represented graphically in the tool as a tree. You can add a branch to process each of the intents that you want your assistant to handle.
* Entities: An entity represents a term or object that provides context for an intent. For example, an entity might be a city name that helps your dialog to distinguish which store the user wants to know store hours for. After you add entities, update your dialog to use them. Add dialog nodes that handle the many possible permutations of a request based on the entities that are found in the user input.



As you add training data, a natural language classifier is automatically added to the skill. The classifier model is trained to understand the types of requests that you teach your assistant to listen for and respond to.
3. Create a search skill. Configure a connection to a Discovery instance. If the dialog is configured to perform a search or is not designed to answer a particular type of question, the assistant searches the configured external data sources to find a response.
4. Add the skills to your assistant.
5. Bring the assistant to your customers where they are by adding integrations.

Build your own client application as the user interface for the assistant. Or add the built-in web chat integration to your company website.



Read more about these steps by following these links:



* [Assistant overview](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-assistant-add)
The message is labeled with the customer ID my_id. customer_id::my_id 
 The message was sent to a specific assistant. assistant_id::dcd5c5ad-f3a1-4345-89c5-708b0b5ff4f7 
 The user input text contains the word "order" or a grammatical variant (for example, orders or ordering. request.input.text:order 
 An intent name in the response exactly matches place_order. response.output.intents:intent::place_order 
 An entity name in the response exactly matches beverage. response.output.entities:entity::beverage 
 The user input text does not contain the word "order" or a grammatical variant. request.input.text:!order 



| The user input text contains the string !hello. | request.input.text:!hello | | The user input text contains the string IBM Watson. | request.input.text:"IBM Watson" | | The user input text contains a string that has no more than 2 single-character differences from Watson. | request.input.text:Watson2 | | The user input text contains a string consisting of comm, followed by zero or more additional characters, followed by s. | request.input.text:comms | | The user input text is not empty. | request.input.text::!"" | | An intent name in the response exactly matches either hello or goodbye. | response.output.intents:intent::(hellogoodbye) | | An intent name in the response exactly matches order, and an entity name in the response exactly matches beverage. | [response.output.intents:intent::order,response.output.entities:entity::beverage] |





 Filtering v1 logs 

If your application is still using the v1 API, you can query and filter logs using the v1 /logs method. The filtering syntax is the same, but the structure of v1 logs and message requests is different. For more information, see [API Reference](https://cloud.ibm.com/apidocs/assistant-data-v1listlogs).
See [Expression language methods for String](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-methodsdialog-methods-strings) to learn about more methods you can use.
* Dealing with multiple intents: A user enters input that expresses a wish to complete two separate tasks. I want to open a savings account and apply for a credit card. How does the dialog recognize and address both of them? See the [Compound questions](https://sodoherty.ai/2017/02/06/compound-questions/) entry from Simon O'Doherty's blog for strategies you can try. (Simon is a developer on the Watson Assistant team.)
* Dealing with ambiguous intents: A user enters input that expresses a wish that is ambiguous enough that your assistant finds two or more nodes with intents that could potentially address it. How does the dialog know which dialog branch to follow? If you enable disambiguation, it can show users their options and ask the user to pick the correct one. See [Disambiguation](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtimedialog-runtime-disambiguation) for more details.
* Handling multiple entities in input: If you want to evaluate only the value of the first detected instance of an entity type, you can use the syntax @entity == 'specific-value' instead of the @entity:(specific-value) format.

For example, when you use @appliance == 'air conditioner', you are evaluating only the value of the first detected @appliance entity. But, using @appliance:(air conditioner) gets expanded to entity['appliance'].contains('air conditioner'), which matches whenever there is at least one @appliance entity of value 'air conditioner' detected in the user input.







 Condition usage tips
Accessing context data in dialog 

The context is an object that contains variables that persist throughout a conversation and can be shared by the dialog and the client application. Both the dialog and the client application can read and write context variables.

You can choose whether you want the context to be maintained by your application or by the Watson Assistant service:



* If you use the stateful v2 message API, the context is automatically maintained by the assistant on a per-session basis. Your application must explicitly create a session at the beginning of each conversation. The context is stored by the service as part of the session and is not returned in message responses unless you request it. For more information, see the [v2 API Reference](https://cloud.ibm.com/apidocs/assistant/assistant-v2message).
* If you use the stateless v2 message API (or the legacy v1 message API) your application is responsible for storing the context after each conversation turn and sending it back to the service with the next message. For a complex application, or an application that needs to store personally identifiable information, you might choose to store the context in a database.

A session ID is automatically generated at the beginning of the conversation, but no session data is stored by the service. With the stateless message API, the context is always included with each message response. For more information, see the [v2 API Reference](https://cloud.ibm.com/apidocs/assistant/assistant-v2messagestateless).



Important: One use of the context is to specify a unique user ID for each user who interacts with the assistant. For user-based plans, this ID is used for billing purposes. For more information, see [User-based plans explained](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-admin-managing-planadmin-managing-plan-user-based).

There are two types of context:



* Global context: context variables that are shared by all skills that are used by an assistant, including internal system variables that are used to manage conversation flow.
Controlling the dialog flow 

Understand how your dialog is processed when a person interacts with your assistant at run time. Learn to use the conversation flow to your advantage and alter the flow if necessary.



 Digressions 

A digression occurs when a user is in the middle of a dialog flow that is designed to address one goal, and abruptly switches topics to initiate a dialog flow that is designed to address a different goal. The dialog has always supported the user's ability to change subjects. If none of the nodes in the dialog branch that is being processed match the goal of the user's latest input, the conversation goes back out to the tree to check the root node conditions for an appropriate match. The digression settings that are available per node give you the ability to tailor this behavior even more.

With digression settings, you can allow the conversation to return to the dialog flow that was interrupted when the digression occurred. For example, the user might be ordering a new phone, but switches topics to ask about tablets. Your dialog can answer the question about tablets, and then bring the user back to where they were in the process of ordering a phone. Allowing digressions to occur and return gives your users more control over the flow of the conversation at run time. They can change topics, follow a dialog flow about the unrelated topic to its end, and then return to where they were before. The result is a dialog flow that more closely simulates a human-to-human conversation.



* [Before you begin](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtimedialog-runtime-digression-prereqs)
* [Customizing digressions](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtimedialog-runtime-enable-digressions)
* [Digression usage tips](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtimedialog-runtime-digress-tips)
* For more information about pricing, see the [pricing page](https://www.ibm.com/cloud/watson-speech-to-text/pricing) for the Speech to Text service or the [Pricing FAQs](https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-faq-pricing).







 16 March 2020 

Speaker labels now supported for German and Korean
: The service now supports speaker labels (the speaker_labels parameter) for German and Korean language models. Speaker labels identify which individuals spoke which words in a multi-participant exchange. For more information, see [Speaker labels](https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-speaker-labels).

Activity Tracker now supported for asynchronous HTTP interface
: The service now supports the use of Activity Tracker events for all operations of the asynchronous HTTP interface. IBM Cloud Activity Tracker records user-initiated activities that change the state of a service in IBM Cloud®. For more information, see [Activity Tracker events](https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-at-events).





 24 February 2020 

Updates to multiple models for improved speech recognition
: The following models have been updated for improved speech recognition:



* Dutch broadband model (nl-NL_BroadbandModel)
* Dutch narrowband model (nl-NL_NarrowbandModel)
* Italian broadband model (it-IT_BroadbandModel)
* Italian narrowband model (it-IT_NarrowbandModel)
* Japanese narrowband model (ja-JP_NarrowbandModel)
* US English broadband model (en-US_BroadbandModel)



By default, the service automatically uses the updated models for all speech recognition requests. If you have custom language or custom acoustic models that are based on the models, you must upgrade your existing custom models to take advantage of the updates by using the following methods:



* POST /v1/customizations/{customization_id}/upgrade_model
So, which conversational skill type should you use?

Use both. Leverage advanced capabilities that are available from a dialog skill and build individual actions to perform finite tasks that you want to support. You can call the actions in your actions skill from your dialog skill.

For more information, see [Choosing a conversational skill](https://cloud.ibm.com/docs/assistant?topic=assistant-skills-choose).





 Do you have existing content to leverage? 

The answer to many a common question is already documented somewhere in your organization's technical information collateral. If only you could find it!

Give your assistant access to this information by adding a search skill to your assistant. The search skill uses Discovery to return smart answers to natural language questions.





 Expand your assistant's responsibilities 

If you start small, and choose the goals with the highest impact first, you'll have room and time to grow the expertise of your assistant. The built-in metrics of active user conversations help you understand what your customers are asking about and how well your assistant is able to meet their needs.

Nothing beats real customer data. It will tell you what areas to tackle next.





 Ready to start building? 

See [Creating an assistant](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add) to get started.
You can use this method to extract a specific occurrence of a regular expression pattern that recurs in user input. For more details, see the [dialog methods](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-methodsdialog-methods-strings-getMatch) topic.





 9 August 2019 

Introductory product tour
: For some first-time users, a new introductory product tour is shown that the user can choose to follow to perform the initial steps of creating an assistant.





 6 August 2019 



* Webhook callouts and Dialog page improvements are available in Dallas.







 1 August 2019 

Webhook callouts are available
: Add webhooks to dialog nodes to make programmatic calls to an external application as part of the conversational flow. The new Webhook support simplifies the callout implementation process. (No more action JSON objects required.) For more information, see [Making a programmatic call from a dialog node](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-webhooks).

Improved dialog page responsiveness
: In all service instances, the user interface of the Dialog page was updated to use a new JavaScript library that increases the page responsiveness. As a result, the look of some graphical user interface elements, such as buttons, changed slightly, but the function did not.





 31 July 2019 

Search skill and autocorrection are generally available
: The search skill and spelling autocorrection features, which were previously available as beta features, are now generally available.



* Search skills can be created by users of Plus or Premium plans only.
* You can enable autocorrection for English-language dialog skills only. It is enabled automatically for new English-language dialog skills.







 26 July 2019 

Missing skills issue is resolved
: In some cases, workspaces that were created through the API only were not being displayed when you opened the Watson Assistant user interface. This issue has been addressed. All workspaces that you create by using the API are displayed as dialog skills when you open the user interface.





 23 July 2019 

Dialog search is fixed
[Location](https://cloud.ibm.com/docs-content/v1/content/a2b18c153837bce00a5b4de496e4b4ca64bbf56e/assistant-data/images/location.png) icon next to it.

If you are not already on the Dialog page, open it.
7. To check or set the value of a context variable, click the Manage context link.

Any context variables that you defined in the dialog are displayed.

In addition, a $timezone context variable is listed. The Try it out pane user interface gets user locale information from the web browser and uses it to set the $timezone context variable. This context variable makes it easier to deal with time references in test dialog exchanges. Consider doing something similar in your user application. If not specified, Greenwich Mean Time (GMT) is used.

You can add a variable and set its value to see how the dialog responds in the next test dialog turn. This capability is helpful if, for example, the dialog is set up to show different responses based on a context variable value that is provided by the user.



1. To add a context variable, specify the variable name, and press Enter.
2. To define a default value for the context variable, find the context variable you added in the list, and then specify a value for it.



See [Context variables](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtime-contextdialog-runtime-context-variables) for more information.
8. Continue to interact with the dialog to see how the conversation flows through it.



* To find and resubmit a test utterance, you can press the Up key to cycle through your recent inputs.
* To remove prior test utterances from the chat pane and start over, click the Clear link. Not only are the test utterances and responses removed, but this action also clears the values of any context variables that were set as a result of your interactions with the dialog. Context variable values that you explicitly set or change are not cleared.