vania-janet/multiturn-rag-retrieval-data huggingface dataset:
If you make no changes, the backup contact for all of the nodes remains unassigned.
3. Click New rule.
4. From the Choose node drop-down list, choose the node for the dialog branch you want to configure.

Remember, branches are identified by their node name. If you did not specify a node name, then the node's ID is displayed instead.
5. Choose the team or human agent teammate to be the backup contact for this dialog branch. The user query will be escalated to this person if the assistant cannot answer the query or hits a child node with a Connect to human agent response type, indicating that it should be answered only by a human.
6. To define routing rules for other dialog branches, click New rule again, and repeat the previous steps.

Don't forget to set up an assignment for any root nodes that have a Connect to human agent response type in a child node in their branch. If you do not transfer the associated root node to a specific person or team, a sensitive matter can be transferred to the Unassigned inbox.
7. After adding rules, click Return to overview to exit the page.







 Give the assistant permission to monitor and answer user queries 

When you want the assistant to start monitoring an Intercom inbox, and answering messages on its own, turn on monitoring.

Your assistant watches user inquiries as they are logged in Intercom. When the assistant is confident that it knows how to answer a user query, the assistant responds to the user directly. (The assistant is confident when the top intent identified by your assistant has a confidence score of 0.75 or higher.)

If you do not want the assistant to answer certain types of user queries, then you can add rules to specify other actions for the assistant to take per dialog branch. For example, you might want to start incorporating the assistant into the Intercom team more conservatively, allowing the assistant only to suggest responses as it transfers user messages to other teammates for them to answer. Over time, after the assistant proves itself, you can give it more responsibility.

To configure how you want the assistant to handle specific dialog branches, define rules.



1.
The context in which the mention is used in the user input takes precedence over any exact matches that might be present. See [Entity evaluation overview](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-entitiesentities-described) for more information about how each type is evaluated.



* [Dictionary-based entities](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-entitiesentities-create-dictionary-based)
* [Annotation-based entities](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-entitiesentities-create-annotation-based)









 Adding dictionary-based entities 

Dictionary-based entites are those for which you define specific terms, synonyms, or patterns. At run time, your assistant finds entity mentions only when a term in the user input exactly matches (or closely matches if fuzzy matching is enabled) the value or one of its synonyms.



1. In the Value name field, type a value. For example, for the @city entity, you might type New York City.

An entity value can be any string up to 64 characters in length.

Important: Don't include sensitive or personal information in entity names or values. The names and values can be exposed in URLs in an app.
2. {: #entities-synonyms}Add synonyms for the value. For example, you might add NYC and The Big Apple as synonyms for New York City.

A synonym can be any string up to 64 characters in length.

If you want to define a pattern for your assistant to look for in user input, such as a product order number or email address, define a pattern value instead. See [Adding entities that recognize patterns](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-entitiesentities-patterns) for more details.

Note: You can add either synonyms or patterns for a single entity value, not both.

Watson can also recommend synonyms for your entity values.
Action: Remove references to @sys-person and @sys-location from your dialogs. Turn off the @sys-person and @sys-location system entities to prevent yourself or others from adding them to a dialog inadvertently.
* Irrelevance detection

We revised the irrelevance detection classification algorithm to make it even smarter out of the box. Now, even before you begin to teach the system about irrelevant requests, it is able to recognize user input that your skill is not designed to address. For more information, see [Irrelevance detection](https://cloud.ibm.com/docs/assistant?topic=assistant-irrelevance-detection).

Action: In each dialog skill, go to the Options>Irrelevance detection page and turn on the new classification model. Make sure everything works as well, if not better, than it did before. Share your feedback.
* Old API version dates

v1 API versions that are dated on or before 2017-02-03 are being deprecated. When you send calls to the service with earlier API version dates, they will receive properly formatted and valid responses for a time, so you can gracefully transition to using the later API versions. However, the confidence scores and other results that are sent in the response will reflect those generated by a more recent version of the API.

Action: Do some testing of calls with the latest version to verify that things work as expected. Some functionality has changed over the last few years. After testing, change the version date on any API calls that you make from your applications.







 28 February 2020 

IBM Watson® Assistant is available in IBM Cloud Pak for Data
: The service can be installed on-premises in environments where IBM Cloud Pak for Data 2.5 is installed on OpenShift or standalone. See the [IBM Cloud Pak for Data documentation](https://www.ibm.com/support/knowledgecenter/SSQNUZ_2.5.0/cpd/svc/watson/assistant-overview.html) for more information.





 26 February 2020 

Slot Save it as field retains your edits
In [our example](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-topicid), authentication is simulated with a simple button click. The same button also simulates logging out by deleting the cookie:

async function onClick() {
if (getCookieValue('SESSION_INFO')) {
document.cookie = 'SESSION_INFO=; Max-Age=0';
} else {
await fetch('http://localhost:3001/authenticate');
}

const result = await fetch('http://localhost:3001/createJWT');
const newToken = await result.text();

webChatInstance.updateIdentityToken(newToken);

updateUI();
}

The anonoymous ID in the sub claim will continue to be used to track the customer for billing purposes, but now the customer's real user ID is stored separately in the user payload.
2. In your actions, you can now access the customer's real user ID by referencing the user_payload private context variable:



${system_integrations.chat.private.user_payload}.custom_user_id

For complete working code, see the [Enabling security for Watson Assistant web chat](https://github.com/watson-developer-cloud/assistant-toolkit/tree/master/integrations/webchat/examples/web-chat-security) example.

If you are required to comply with GDPR requirements, you might need to persistently store any generated anonymous user IDs, especially for anonymous users who later log in with user credentials. Storing these user IDs makes it possible for you to later delete all data associated with an individual customer if requested to do so.
This response type only returns a valid response if the assistant to which you added this dialog skill also has a search skill associated with it.



2. Click Add response to add another response type to the current response.

You might want to add multiple response types to a single response to provide a richer answer to a user query. For example, if a user asks for store locations, you could show a map and display a button for each store location that the user can click to get address details. To build that type of response, you can use a combination of image, options, and text response types. Another example is using a text response type before a pause response type so you can warn users before pausing the dialog.

You cannot add more than 5 response types to a single response. Meaning, if you define three conditional responses for a dialog node, each conditional response can have no more than 5 response types added to it.

A single dialog node cannot have more than one Connect to human agent or more than one Search skill response.
3. If you added more than one response type, you can click the Move up or down arrows to arrange the response types in the order you want your assistant to process them.









 Conditional responses 

A single dialog node can provide different responses, each one triggered by a different condition. Use this approach to address multiple scenarios in a single node.

The node still has a main condition, which is the condition for using the node and processing the conditions and responses that it contains.

In this example, your assistant uses information that it collected earlier about the user's location to tailor its response, and provide information about the store nearest the user. See [Context variables](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-runtime-contextdialog-runtime-context-variables) for more information about how to store information collected from the user.

![Shows a node that shows a user ask, Where are you located, and the dialog has three different responses depending on conditions that use info from the $state context variable to specify locations in those states.]
* user_id – Useridto be associated with the device. where you want to target your notification
* tag – This is used to send notifications on registered tags
* platform - You can target all registered device by platforms.



Following are the corresponding platform values for each type of target.



* FCM: push_android
* APNS: push_ios
* Chrome: push_chrome
* Firefox: push_firefox
* Safari: push_safari
* fcm_devices – Unique identifier of the FCM device where you want to target your notification
* apns_devices - Unique identifier of the APNS device where you want to target your notification
* chrome_devices - Unique identifier of the Chrome Web device where you want to target your notification
* firefox_devices - Unique identifier of the Firefox Web device where you want to target your notification
* safari_devices - Unique identifier of the Safari Web device where you want to target your notification





 Example 

"ibmenpushto": "{"fcm_devices": ["9c75975a-37d0-3898-905d-3b5ee0d7c172","C9CACDF5-6EBF-49E1-AD60-E25BA23E954C"]}"
"ibmenpushto": "{"apns_devices": ["1c75972a-37d0-3898-905d-3b5ee0d7c172","M9CACDF5-1EBF-49E1-AD60-E25BA23E954C"]}"
"ibmenpushto": "{"chrome_devices": ["2c75972a-37d0-3898-905d-3b5ee0d7c182","N9CACDF5-1EBF-49E1-AD60-E25BA23E994D"]}"
Creating a service ID 

To create a service ID, complete the following steps:



1. In the IBM Cloud console, go to Manage > Access (IAM), and select Service IDs.
2. Click Create.
3. Follow the process to create a name and description for your service ID.
4. Click Create.



Then, hover on the row of a service ID to click the Actions icon ![Actions icon](https://cloud.ibm.com/docs-content/v1/content/4d8c6eec891cff72b666dc24bd3211810c77fb42/icons/action-menu-icon.svg) to manage your service ID. You can start by assigning a policy and creating API keys. For more information about working with API keys, see [Managing service ID API keys](https://cloud.ibm.com/docs/account?topic=account-serviceidapikeys).





 Creating a service ID by using the API 

To create a service ID, call the [IAM Identity Services API](https://cloud.ibm.com/apidocs/iam-identity-token-apicreate-service-id) as shown in the following example:



* Curl
* Java
* Python
* Go
* Node



curl -X POST 'https://iam.cloud.ibm.com/v1/serviceids' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
"name": "My-serviceID",
"description": "my special service ID",
"account_id": "ACCOUNT_ID"
}'

CreateServiceIdOptions createServiceIdOptions = new CreateServiceIdOptions.Builder()
.accountId(accountId)
.name(serviceIdName)
.description("Example ServiceId")
.build();

Response<ServiceId> response = service.createServiceId(createServiceIdOptions).execute();
For testing purposes, create a Cloud Directory user by using the App ID GUI.



1. In the Users tab, click Add User. A form displays.
2. Enter a first and surname, an email, and password.
3. Click Save.



2. Encode your client ID and secret.



1. In the Service Credentials tab of the App ID GUI, copy your client ID and Secret.
2. Use a base64 encoder to encode your authorization information.
3. Copy the output to use in the following command.



It is not recommended to use a browser-based encoder in production applications.
3. Sign in by using the APIs to obtain your access token information. The token that is returned is encoded.

curl --request PUT https://appid.cloud.ibm.com/oauth/v4/<tenantID>/token --header 'Authorization: Basic {<encodedClient>:<secret>}' --header 'Content-Type: application/x-www-form-urlencoded' --header Accept: application/json
-d 'grant_type=password&username=<userEmail>%40<userEmailDomain>&password=<userPassword>
4. Decode your access token.



1. Copy the token in the response output from the previous command.
2. In a browser, navigate to [https://jwt.io/](https://jwt.io/).
3. Paste the token into the box labeled Encoded.



It is not recommended to use a browser-based decoder in production applications.
5. In the Decoded section, verify that you can see the food preference.

{
"iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
"exp": 1551903163,
"aud": [
This example in this tutorial, which is based on an Express server for Node.js, shows how to start a session with an anonymous user ID and then authenticate the user during the session.



1. Create a function called getOrSetAnonymousID() that generates a unique anonymous user ID for each customer and stores it in a cookie (or, if the cookie already exists, uses the stored user ID).

Use a cookie that lasts for at least 45 days. If you do not store the user ID for more than 30 days, the same customer might be counted as multiple different users during the same billing period. (This can still happen if the same user deletes the cookie or uses a different browser.)



function getOrSetAnonymousID(request, response) {
let anonymousID = request.cookies['ANONYMOUS-USER-ID'];
if (!anonymousID) {
anonymousID = anon-${uuid()};
}

response.cookie('ANONYMOUS-USER-ID', anonymousID, {
expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 45), // 45 days.
httpOnly: true,
});

return anonymousID;
}



1. In the function you use to create a JWT, use the anonymous ID returned from the getOrSetAnonymousID() function as the value of the sub claim. This sets the value of the user ID that will be used to uniquely identify the customer for billing purposes.

In addition, retrieve any value from the SESSION_INFO cookie, which we will use to store authenticated login information. If a value exists, store it in the user_payload private claim of the JWT. (If the user has not yet authenticated, this cookie does not yet exist.)



const jwtContent = {
sub: anonymousUserID,
user_payload: {
name: 'Anonymous',
custom_user_id: anonymousUserID,
},
};

if (sessionInfo) {
jwtContent.user_payload.name = sessionInfo.userName;
Managing users and groups 

The Users and groups view displays all of your database user accounts and groups.



 Users 



 Creating users 



1. Go to Users and groups > Users.
2. Click Create user.
3. In the General settings section, select the following:



1. Authentication type
2. Username
The name must begin with a letter or an underscore. The name cannot contain embedded spaces. It must be unique within the system. It can have 128 characters.
3. Password
The password must have 15 characters, 1 upper case letter, 1 lower case letter, 1 special character, and a number.
4. Resource group
5. Account expiration date
Specify whether the user account never expires or select an expiration date.
6. Password expiration date
Specify whether the password of the user account never expires or select an expiration date.



4. Optionally, you can add the user account to any available groups by ticking the box next to the name of the group.

If you want a user to have the necessary privileges to do scaling, pause and resume operations, and backup and restore, you must add the user to the ADMINISTRATORS group.







 Information about users 



Table 1. The table lists group-related values and their definitions.

 Value Description 

 Username Specifies the database user name. 
 Resource group Specifies the database group to which the user belongs and which controls the workload settings such as GRA and resource percentages. 
 Owner Specifies the owner of the user account. 
 Tables Specifies the number of tables that are owned by the user account. 
 Password expiration Specifies when a user password expires. 
 Created on Specifies when the user was created. 
 Authentication type Specifies the authentication type. 







 User actions 

In the users list view, there is an overflow menu that lists the actions that can be taken on the user.



Table 1. The table lists user actions and their definitions.

 Value Description 

 Assign owner Set the owner of the user account. 
 Change password Change the password for the system user.
How to Create a New User 

Managers in the Access Management application are able to create new users. These users can be another Manager or Standard User. When the new user is created they are granted access to submit access requests for the customer the Manager user is managing.

Only users that will be responsible for approving/rejecting access requests should be assigned the Manager role.

Follow these steps to create a new user if your user role is Manager.



1. Sign into the Self-Service Portal: [https://devops.maximo.com](https://devops.maximo.com)
2. Navigate to the Access Management application.

![SSP-AM-Create-User-1](https://cloud.ibm.com/docs-content/v1/content/bd177462727ef0a849ddcf8c842a6203b41f0625/mas-ms/images/SSP-AM-Create-User-1.png)
3. Click on the "New Access" icon (Plus sign) to create a new user.

![SSP-AM-Create-User-2](https://cloud.ibm.com/docs-content/v1/content/bd177462727ef0a849ddcf8c842a6203b41f0625/mas-ms/images/SSP-AM-Create-User-2.png)
4. Enter the requested information for the new user in the following order:



 Value Description 

 IBMid The user's IBMid (email address). The new user's IBMid. This will be the new user's username when they login to the Self-Service Portal. <br>If the user does not have an IBMid, they can create one [here](https://myibm.ibm.com)) 
 First Name The user's First Name 
 Last Name The user's Last Name 
 Primary Email The email for contacting the new user.
* UI
* Terraform







 Restricting users from creating service IDs 

By default, all members of an account can create service IDs. However, access can be restricted so that only members with the correct access can create service IDs by using the Service ID creation setting. For more information about Service IDs, see [Creating and working with service IDs](https://cloud.ibm.com/docs/account?topic=account-serviceids).



 Enabling the restriction to create service IDs in the console 

To enable the setting to restrict users from creating service IDs, you must have the following assigned access:



* An IAM policy with the Administrator, Operator, or Editor role on the [IAM Identity Service](https://cloud.ibm.com/docs/account?topic=account-account-servicesidentity-service-account-management).



If you enable the Service ID creation setting, users in your account require specific access to create service IDs, including the account owner. To restrict who can create service IDs, use the following steps:



1. In the IBM Cloud console, go to Manage > Access (IAM), and select Settings.
2. In the Account section, enable the Service ID creation setting.
3. Click Yes to confirm.



Now that the setting is enabled to restrict users from creating service IDs, you can assign the required access to enable specific users to continue creating service IDs. Remember, the account owner is also required to be assigned this explicit access.





 Enabling the restriction to create service IDs by using Terraform 

If you enable the Service ID creation setting, users in your account require specific access to create service IDs, including the account owner.

To enable the setting to restrict users from creating service IDs, you must have the following assigned access:



* An IAM policy with the Administrator, Operator, or Editor role on the [IAM Identity Service](https://cloud.ibm.com/docs/account?topic=account-account-servicesidentity-service-account-management).



Before you can set limits for login sessions by using Terraform, make sure that you have completed the following:
If you manage your service through the IBM Cloud CLI and the [cloud databases plug-in](https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli), you can create a new user with cdb user-create. For example, to create a new user for an "example-deployment", use the following command.

ibmcloud cdb user-create example-deployment <newusername> <newpassword>

Once the task has finished, you can retrieve the new user's connection strings with the ibmcloud cdb deployment-connections command.





 Creating Users from the API 

The Foundation Endpoint that is shown on the Overview panel Deployment details of your service provides the base URL to access this deployment through the API. To create and manage users, use the base URL with the /users endpoint.

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' -H "Authorization: Bearer $APIKEY" -H "Content-Type: application/json" -d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

Once the task has finished, you can retrieve the new user's connection strings, from the /users/{userid}/connections endpoint.





 Adding users to Service Credentials 

Creating a new user from the CLI doesn't automatically populate that user's connection strings into Service Credentials. If you want to add them there, you can create a new credential with the existing user information.

Enter the user name and password in the JSON field Add Inline Configuration Parameters, or specify a file where the JSON information is stored. For example, putting {"existing_credentials":{"username":"Robert","password":"supersecure"}} in the field generates Service Credentials with the username "Robert" and password "supersecure" filled into connection strings.

Generating credentials from an existing user does not check for or create that user.