# Source: https://docs.avaamo.com/user-guide/how-to/build-agents/configure-agents/define-settings.md

# Settings

You can specify the general settings of the agent such as persona, notifications, and question repeat count from the **Configuration -> Settings** option. Also, you can note the agent authentication keys generated by the platform that can help you access certain details about your agent.&#x20;

{% hint style="info" %}
**Notes**:

* Ensure you have met all the [pre-requisites](https://docs.avaamo.com/user-guide/quick-start-tutorials/pre-requisites).
* You can configure the agent immediately after creating an agent. See [Create agent](https://docs.avaamo.com/user-guide/how-to/build-agents/add-skills), for more information.
* If you wish to edit an agent, then:
  * In the **Avaamo Platform UI**, navigate to the **Agents** tab in the top menu. Search and open the required agent. See [Search agents](https://docs.avaamo.com/user-guide/how-to/manage-agents/other-common-actions#search-agents), for more information.&#x20;
  * Click **Edit** to unlock the agent before editing.
    {% endhint %}

## Returning user message handler

You can write a JavaScript code in the **Returning user message handler** that is executed when the returning user accesses the agent and the returning value is sent as an agent response.

{% hint style="info" %}
**Note**: `goto_node` and `goto_output` are not supported in the Returning User Message Handler JS block.
{% endhint %}

**Example**: Consider that you have specified the following JS code in the **Returning user message handler**:

```yaml
return [{
    quick_reply: {
        "content": "Would you like help with any of the following?",
        "links": [{
                "title": "Placing an order",
                "type": "post_message",
                "value": "Just mention type of pizza with your toppings and you are good to go."
            },
            {
                "title": "Kids Menu",
                "type": "post_message",
                "value": "All our menu items are customizable for kids."
            },
            {
                "title": "Others",
                "type": "post_message",
                "value": "We will connect with a customer service representative."
            }
        ]
    }
}]
```

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpXFTiTgns4Ml77XGi3%2F-M-OjXaECz0xvApPFAP-%2F-M-Om4_njXx_XNyLuoIx%2Fhowto-agent-settings-returning.png?alt=media\&token=b517ab70-f58e-4990-9d28-4319640a9f72)

Consider that you have already accessed the agent once and you are accessing it again. The JavaScript code as specified in the **Returning user message handler** is executed, and you can view the following message in the agent as soon as you access it:

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2F9S4M5YFv8OnvaI0BNShG%2Fimage.png?alt=media\&token=205533dc-f3c7-4832-9564-9949933f46ff)

## User authentication handler

You can authenticate the users using the agent in the web, phone, or SMS channels using this block. Here, you can write any custom JS code based on your requirements and it gets executed to authenticate the user before the agent loads. This helps secure all communication through the agent by authenticating the user before using the channel.&#x20;

{% hint style="info" %}
**Note**: You can use global storage (Storage.global.set and Storage.global.get) in the User authentication handler. However, you cannot use user storage variables in the User authentication handler, as the user is not created yet. See [Storage variables](https://docs.avaamo.com/user-guide/how-to/build-skills/create-skill/customize-your-skill/reference-library/storage), for more information.
{% endhint %}

### Web and Phone Channels

Ensure that you have enabled custom user authentication in the Web channel. See [Web channe](https://docs.avaamo.com/user-guide/how-to/build-agents/deploy/web-channel/configure-web-channel#security)l, for more information.

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpXFTiTgns4Ml77XGi3%2F-MbAYUxFomRUcyOx_Vnm%2F-MbAZubOzXQq1Vhg3n0G%2F5.7-web-channel-security.png?alt=media\&token=d3d4a385-9c4c-43a4-ad92-02f3a825fe67)

The JS code has a "key" (uuid) embedded in the agent URL, and this "key" is then parsed through the Avaamo server and then to the client. Once authenticated by the client-server, the user can interact with the agent. The diagram below explains the process of authentication of a user interacting with the agent through the Avaamo server to the client-server:

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpXFTiTgns4Ml77XGi3%2F-M-TK5pQLld2NbPcb0-f%2F-M-TYz-Yx7BTmJShNam8%2Fhowto-agent-settings-authentication.png?alt=media&#x26;token=eabe65f6-db4e-40e3-a5a2-c0b7ff9da95d" alt=""><figcaption></figcaption></figure>

**To add custom user authentication for your agent in the web channel**:

Ensure that you have enabled custom user authentication in the Web channel. See [Web channe](https://docs.avaamo.com/user-guide/how-to/build-agents/deploy/web-channel/configure-web-channel#security)l, for more information.

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpXFTiTgns4Ml77XGi3%2F-MbAYUxFomRUcyOx_Vnm%2F-MbAZubOzXQq1Vhg3n0G%2F5.7-web-channel-security.png?alt=media\&token=d3d4a385-9c4c-43a4-ad92-02f3a825fe67)

* &#x20;In the **Agent -> Settings** page, navigate to the **User authentication handler** block to add the JavaScript code.&#x20;
* You can access the custom properties and other properties passed through the web channel using `context.params` in the User Authentication Handler.
* You can pass any parameters in the return value, however, passing `uuid` is mandatory. Here, `role` and `authStatus` are returned to the agent along with `uuid`.&#x20;

```yaml
if (context.user) {
    return {
        "uuid": context.user.uuid,
        "authStatus": "true",
        "role": "guest"
    };
} else {
    return {
        "uuid": uuid.v4(),
        "role": "guest",
        "authStatus": "fail"
    };
}

```

* Click **Save.**&#x20;

**To test the agent:**

* Navigate to **Agent -> Channels**. Click **View** in Web channel. Click **Test** to test the agent.&#x20;
* A demo test URL is displayed in the new tab. Click the agent icon at the bottom-right corner.
* Once the JavaScript code is added, it is called every time the agent loads. You can view the same update in the user profile of conversation history.&#x20;

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LpXFTiTgns4Ml77XGi3%2F-M-OjXaECz0xvApPFAP-%2F-M-Oqjkz8afScBMT-8Zr%2Fhowto-agent-settings-authentication-3.png?alt=media\&token=de091642-17f8-476e-8bd6-dc59c9a268fa)

* If the user is not authenticated, then the agent displays a blue screen with a 403 error.

### SMS channel&#x20;

Ensure that you have enabled custom user authentication in the SMS channel. See [SMS channel](https://docs.avaamo.com/user-guide/how-to/build-agents/deploy/sms#deploy-your-agent-to-sms-channel), for more information.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FGvQ8mAuoG8ryuLwDNvSx%2F6.3-custom-user-authentication-sms.png?alt=media&#x26;token=ddbeb6b4-8a9a-421f-9315-fed68b78f43d" alt=""><figcaption></figcaption></figure>

**To add custom user authentication for your agent in the SMS channel**:

* In the **Agent -> Settings** page, navigate to the **User authentication handler** block to add the JavaScript code.&#x20;
* You can access the custom properties passed through the SMS channel using `context.params` in the User Authentication Handler. See [SMS Send API](https://docs.avaamo.com/user-guide/ref/avaamo-platform-api-documentation/sms-send-api), for more information.
* You can pass any parameters in the return value, however, passing `to_phone` is mandatory.  Here, `uuid` is returned to the agent along with `to_phone.`

{% code overflow="wrap" %}

```javascript
const isAuth = () => {
// Perform authentication as per your requirement and return true/false accordingly
}

return isAuth() ? { to_phone: context.params.to_phone, uuid: context.params.to_phone} : false;
```

{% endcode %}

**To test the agent:**

* Navigate to **Agent -> Channels**. Click **View** in the SMS channel.&#x20;
* Copy the POST request and send a sample request using the SMS Send API.
* Based on your implementation in the User authentication handler, if the user is authenticated, then the SMS message is sent to the specified to\_phone number.

{% hint style="info" %}
**Note**: The user authentication handler for the SMS channel is triggered only when custom user authentication is enabled in the [SMS channel](https://docs.avaamo.com/user-guide/how-to/build-agents/configure-agents/deploy/sms) and the message is posted via [SMS send API](https://docs.avaamo.com/user-guide/ref/avaamo-platform-api-documentation/sms-send-api).
{% endhint %}

### MS Teams channel&#x20;

Ensure that you have enabled custom user authentication in the MS Teams channel. See [MS Teams channel](#ms-teams-channel), for more information.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FHAf1cZ5fWyjEgJgm9qZA%2Fimage.png?alt=media&#x26;token=c081b828-7565-478b-b3a8-2cac9e522700" alt=""><figcaption></figcaption></figure>

**To add custom user authentication for your agent in the MS Teams channel**:

* In the **Agent -> Settings** page, navigate to the **User authentication handler** block to add the JavaScript code.&#x20;
* You can access the custom properties passed through the MS Teams channel using `context.params` in the User Authentication Handler. See [MS Teams Send API](https://docs.avaamo.com/user-guide/ref/avaamo-platform-api-documentation/microsoft-teams-send-api), for more information.
* You can pass any parameters in the return value, however, passing `email` is mandatory.  Here, `uuid` and `message` are returned to the agent along with `email.`

{% code overflow="wrap" %}

```javascript
const isAuth = () => {
// Perform authentication as per your requirement and return true/false accordingly
}

return isAuth() ? { email: context.params.email, uuid: context.params.email, message: { text: context.params.message} } : false;
```

{% endcode %}

**To test the agent:**

* Navigate to **Agent -> Channels**. Click **View** in the MS Teams channel.&#x20;
* Copy the POST request and send a sample request using the MS Teams Send API.
* Based on your implementation in the User authentication handler, if the user is authenticated, then the Teams message is sent to the specified email.

{% hint style="info" %}
**Note**: The user authentication handler for the MS Teams channel is triggered only when custom user authentication is enabled in the [MS Teams channel](https://docs.avaamo.com/user-guide/how-to/build-agents/configure-agents/deploy/microsoft-teams-ms-teams) and the message is posted via [Microsoft Teams send API](https://docs.avaamo.com/user-guide/ref/avaamo-platform-api-documentation/microsoft-teams-send-api).
{% endhint %}

#### OAuth type of authorization

The diagram below explains the authorization process of a user interacting with the agent through the Avaamo server to the client-server using an OAuth type of authorization.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FFNhHyjm87xjD7NY4EvcQ%2FUser%20auth%20(2).png?alt=media&#x26;token=db57b49a-02b9-429b-a076-e7798dac8481" alt=""><figcaption></figcaption></figure>

## None of these handlers (Disambiguation)

Currently, when there is a disambiguation response, the agent displays a set of options along with **None of these** option. By default, when you click on **None of these**, a standard text is displayed. You can use this handler and write a JS code to override the standard response and display any other message or actions you wish to perform when the user clicks **None of these** option in disambiguation.&#x20;

**Example**: Consider that you have specified the following JS code in **None of these** handlers:

```yaml
return [{
    quick_reply: {
        "content": "Would you like help with any of the following?",
        "links": [{
                "title": "Placing an order",
                "type": "post_message",
                "value": "Just mention type of pizza with your toppings and you are good to go."
            },
            {
                "title": "Kids Menu",
                "type": "post_message",
                "value": "All our menu items are customizable for kids."
            },
            {
                "title": "Others",
                "type": "post_message",
                "value": "We will connect with a customer service representative."
            }
        ]
    }
}]
```

During disambiguation, if you click **None of these** option, then the **Quick Reply** message is displayed in the agent response:

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FySMprFiq9loIPE8kxEjc%2Fhowto-agent-settings-none-of-these.png?alt=media\&token=12892e36-d519-4b91-ba25-bf486e3e672a)

## Dispatch handler

{% hint style="info" %}
**Note:** This option is available only for **Universal agents**.
{% endhint %}

In this handler, you can provide a script that is called before probing the member agents. For example, you can use this handler for setting up conditions before probing the member agents.

By default, when a user query is posted, all the member agents that are enabled and available in the Universal agents are probed before providing a response to the user. In this section, you can specify a list of member agents that you wish to probe in a return statement: &#x20;

```javascript
return [{key: "member_key_1"},{key: "member_key_2"}];
```

Here, the `key` indicates the member agent key provided at the time of adding the member agent. See [Add member agents](https://docs.avaamo.com/user-guide/how-to/build-agents/create-universal-agent/add-member-agents), for more information.

You can also use `context.memberAgents` to get a list of all enabled member agents. The returned object is an array and you can use this information in the Dispatch handler to get the member key and member name:&#x20;

```json
"memberAgents": [
    {
      "key": "home_loan",
      "name": "Home Loan"
    },
    {
      "key": "education",
      "name": "Educational Loan Virtual Agent"
    },
    {
      "key": "personal",
      "name": "Personal Home Loan Agent"
    },
    {
      "key": "vehicle",
      "name": "Vehicle Loan"
    }
  ]
```

**Example**: Consider that you are authenticating the user and based on the user details, you are setting the `customerType` user property in the Greeting skill of the Universal agent. According to type of the user, say "guest" or "auth", you wish to probe specific member agents. You can use the following JS code in the Dispatch handler to conditionally probe member agents as per the requirement:

```javascript
if (context.user.custom_properties.customerType == "guest")
  return [{key: "acme_it"}];
else if (context.user.custom_properties.customerType == "auth")
  return [{key: "acme_hr"},{key: "acme_it"}, {key: "acme_finance"}];
```

## Max question repeat count

Indicates the maximum number of times a question is automatically repeated to the user in the conversation flow that is already in progress. By default, the value is 3.&#x20;

**Example**: Consider that you have an Order skill and FAQ skill in the MacPizza agent. Consider the following conversation flow in the agent:

* You have started the conversation with "I want to order pizza".&#x20;
* This has invoked the Order skill, hence the next step in the Order skill flow is displayed to the user, such as, "We have a wide variety of freshly baked pizzas. Would you like to order veg or non-veg pizza?".&#x20;
* Instead of answering this question, you asked another question from the FAQ, "where is your store?". The agent displays the response from the FAQ skill and repeats the follow-up question from the Order skill for which the user is yet to answer.&#x20;
* If you continue to ask questions, instead of answering the follow-up question from the Order skill, then the follow-up question is again repeated and this continues to the number of times the "Max Question Repeat Count" is set.&#x20;

Consider that you have set **Max question repeat count** to 1. The following is an illustration of how "Max Question Repeat Count" works in the Avaamo Platform:

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FCji9pojJ1coMqFT1TWYX%2Fimage.png?alt=media\&token=13eb46a5-f207-4cac-b8bc-69d32f3cdc5b)

{% hint style="info" %}
**Notes**:&#x20;

* When a question gets repeated, only the question part is repeated, the other text/output in the response does not get repeated.&#x20;
* Also, in the question repetition, the configurations specified in the **Advanced settings** configuration of the skill message response are not applied. See [Advanced settings](https://docs.avaamo.com/user-guide/how-to/build-skills/create-skill/using-dialog-designer/create-new-skill/build-skill-responses/advanced-settings), for more information.
  {% endhint %}

## Advanced features

The following options are available in Advanced features:

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FfAtzt4GeGvnLcmfaMuzR%2FScreenshot%202025-04-10%20at%209.17.44%E2%80%AFPM.png?alt=media&#x26;token=65e9c494-ca9e-4d74-bcfd-9669e0d9e34d" alt=""><figcaption></figcaption></figure>

### Disable multi-intent

Avaamo Platform provides the ability to respond to queries belonging to multiple intents in the agent.&#x20;

**Example**: Consider that you have an Order skill and FAQ skill in the MacPizza agent. You can ask a query with one intent from the Order skill and another from the FAQ skill, "*I want to order pizza and where is your store?*". The agent responds to both queries.

{% hint style="info" %}
**Notes**:

* Currently, **Multi-intent** works only if you have two intents separated by "and" and at least one of the intents is from Q\&A. If you have more than two intents separated by "and", then the response of only the first two intents is returned.
* Smalltalk intents are not supported in multi-intents, which implies that if you have multi-intents and one of them is a Smalltalk, then the response of Smalltalk is not returned.
  {% endhint %}

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FWAV5K2w1Nj0VQuUQHHgO%2Fimage.png?alt=media\&token=150fb439-bb15-473d-8d55-9d590cdae81c)

If you wish to disable this option, then you can check **Disable multi-intent** in the **Agent -> Settings** page. In such cases, the response displayed in the agent is random.

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2F96Au9SNE1cQaEqANyubm%2Fimage.png?alt=media\&token=c81bf797-88c0-4117-a72c-07a8cf0b2431)

### Disable Co-reference query generation

An `agent` can remember and maintain context throughout a conversation. This enables the system to understand references, callbacks, and evolving topics within the dialogue. However, co-reference may not be required for all use cases. In specific scenarios where co-reference resolution might introduce errors or unnecessary complexity, you can choose to disable co-reference.&#x20;

{% hint style="info" %}
**Note**: This feature applies to Classic agents using the LLaMB skill.
{% endhint %}

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FhrXpsi9cdXDgsY7MXQK1%2FScreenshot%202025-04-10%20at%209.20.10%E2%80%AFPM.png?alt=media&#x26;token=6eb7f8ae-c6da-4a09-a417-7dbb0f517136" alt=""><figcaption></figcaption></figure>

Here are some cases when it might be appropriate to disable co-reference:

* **Processing Isolated or Short Texts**: When dealing with isolated sentences, short commands, or brief messages, co-reference resolution is often unnecessary because each piece of text is self-contained and does not refer back to previous content.
* **Avoiding Misinterpretation in Ambiguous Contexts**: In cases where co-references can lead to ambiguity or misinterpretation, such as texts with frequent use of similar pronouns, disabling co-references can prevent incorrect associations.
* **Domain-Specific Applications**: In certain domain-specific applications, such as some technical or legal documents, the explicit structure and terminology make co-reference resolution less useful. Disabling it can simplify the processing pipeline.

### Disable citation link security in the LLaMB response

The Avaamo Platform provides an option to `enable or disable citation link security` in LLaMB responses. By default, [citation links](https://docs.avaamo.com/user-guide/llamb/citation-links) expire 24 hours after generation.&#x20;

Go to `Configurations > Settings` in the Avaamo Platform. Under `Advanced Settings`, click the checkbox to `Disable Citation Link Security`. This feature is useful for debugging, troubleshooting, or sharing persistent references with users.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2F4AwAOk9YtkrtaueVD0oY%2FScreenshot%202025-04-10%20at%209.21.45%E2%80%AFPM.png?alt=media&#x26;token=f4c5c428-a833-44f8-b7b6-066cfc737e91" alt=""><figcaption></figcaption></figure>

**When citation links are disabled:**

* The generated citation links in LLaMB responses can be accessed at any time, without any time restrictions.
* There is no expiration limit for accessing these links.
* Users can revisit citation links whenever needed, ensuring persistent access to the referenced information.

See [Citation links](https://docs.avaamo.com/user-guide/llamb/citation-links), for more information.

### Disable disambiguation

The user queries that do not match with intent, and the agent responds with a selection of the closest intent options, is a disambiguation intent. If the user selects and responds with one of the options, the query is successful, else it is categorized as a failed disambiguation query.

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2F5iIOoGm8L5G8i5D1YSom%2Fimage.png?alt=media\&token=adc1cca9-3a02-4e82-b5d2-fe73f0a493bd)

Here, we have queried "order". The agent has responded with the intents that support "order". This is categorized as disambiguation. So, if we select one of the above options, the query is a successful disambiguation query, and if we select "none of these" then it is a failed disambiguation query.

By default, a disambiguation response is enabled in the agent. If you wish to not display such responses, then you can check **Disable Disambiguation.** The following is an illustration of how the response is displayed in the agent when **Disable Disambiguation** is checked:

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FyGvXUth8lVqrXsmftnfT%2Fimage.png?alt=media\&token=7dbf473d-a869-4f33-8fd7-a48b0c9ccb31)

### Do not translate entity values

By default, the entity values in different languages are always translated to en-US before intent matching. However, in certain scenarios, translating the entity values may result in a completely different meaning in the corrected query and can result in unexpected intent matches. In such cases, you can enable the checkbox `Do not translate entity values`. When you enable this checkbox entity values are not translated to en-US and are used as-is for intent matching.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FuXUbB27SVzxa5ZFKC7GM%2FScreenshot%202025-04-10%20at%209.21.45%E2%80%AFPM.png?alt=media&#x26;token=08ff9bf7-a9f5-4d21-80b9-21e0104e62f1" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Note:** By default, `Do not translate entity values` is disabled, which implies that entity values are always translated to en-US before intent matching.
{% endhint %}

**Example**: Consider the following entity values in an agent:

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FNSD94agqqmIrpCBaS9d3%2Fimage.png?alt=media&#x26;token=cddde713-344e-4ea7-9fd0-11f1baa3ed93" alt=""><figcaption></figcaption></figure>

The following table illustrates the difference when `Do not translate entity values` is enabled versus when it is disabled. You can observe that when `Do not translate entity values` is enabled the entity values are considered as-is and not translated to en-US.

| Do not translate entity value enabled                                                                                                                                                                                                                      | Do not translate entity value disabled                                                                                                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FSf7mwEfVIxhMmA3WtE4e%2Fimage.png?alt=media&#x26;token=393d1e5e-26cc-4272-827b-5e5718810c60" alt="" data-size="original"> | <img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2F5rUfoEOwKngtFTYHK6l5%2Fimage.png?alt=media&#x26;token=7029abb6-e653-4c32-b88a-dbffb95f21f6" alt="" data-size="original"> |

### Enable Hybrid SDK

If you wish to&#x20;
integrate Avaamo Platform using **Hybrid SDK**, then you must **Enable Hybrid SDK** in the **Agent -> Settings** page. The Platform then opens up the channel to listen to requests in Hybrid SDK integration. By default, this communication is not available unless the **Enable Hybrid SDK** option is enabled. See [Hybrid SDK](https://docs.avaamo.com/user-guide/how-to/build-skills/create-skill/customize-your-skill/how-to/integrate-with-api-1/hybrid-sdk), for more information.

### Enable debug logs

The `Enable Debug Logs` option allows users to enable or disable debug logs at the `agent level`. This feature provides better control over log visibility for troubleshooting and debugging. This is especially useful when masking is enabled, as logs are otherwise suppressed.

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FCt9zJxeefLrEF0601EZ6%2FScreenshot%202025-04-10%20at%209.21.45%E2%80%AFPM.png?alt=media&#x26;token=8fe601f6-98ea-4e34-8294-fd59ba8ebb31" alt=""><figcaption></figcaption></figure>

* When enabled all logs generated using console.log are displayed.
* When the checkbox is unchecked, logging is disabled, and no logs are displayed.

{% hint style="info" %}
**Note:**&#x20;

1. By default, this option is **disabled**.
2. `Enable debug logs` setting is preserved during pull and promotion.
3. In production, the `enable_debug_logs` setting is disabled by default, cannot be modified by users, and can only be enabled or disabled through a request to the support team.
   {% endhint %}

## Enable information masking

Masking allows you to protect PII/PHI/GDPR compliance data within the Avaamo Conversational AI system. There are ways to configure information masking in the Avaamo Platform based on your business requirements. See[ Information masking](https://docs.avaamo.com/user-guide/overview-and-concepts/advanced-concepts/information-masking), for more information.

Once configured, you can use the **Information masking** toggle to enable or disable masking for an agent. Hence, developers can test and debug masking during the development and testing phase.

{% hint style="success" %}
**Key point**: For masking user messages where patterns or entities are required, developers must contact Avaamo Support with all the required masking configurations. See [Information masking](https://docs.avaamo.com/user-guide/overview-and-concepts/advanced-concepts/information-masking), for more details.
{% endhint %}

By default, the **Information masking** toggle is enabled for all newly created agents. Slide the toggle to disable/enable masking for the agent. When it is enabled, information or data in the agent is masked as per the masking configurations.

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FELXS4LS3cHGrJ2knHS2t%2FScreenshot%202025-03-26%20at%201.08.09%E2%80%AFPM.png?alt=media\&token=d9e1be05-2a2d-43c4-8f8e-3512773bb126)

## Retention period

The retention period configuration allows users to define how long data remains accessible before it is masked. This feature provides **agent-level control** over data masking, ensuring compliance with data privacy policies while maintaining system reliability.

For example, if the retention period is set to 10 minutes, any PII data in the conversation is automatically masked the next time the process runs after the 10-minute window.

You can set the `Retention period` when `Information masking` is enabled from the `Settings` page:

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FhsBXv2zgpmxkzbJdjfqM%2FRetension.png?alt=media&#x26;token=fd6d8d85-33b3-48e2-a6cc-b949c4cfd4e8" alt=""><figcaption></figcaption></figure>

Masking behavior based on retention period values:

| Condition                               | Masking Behavior                          |
| --------------------------------------- | ----------------------------------------- |
| **Within Retention Period**             | Data remains unmasked and accessible.     |
| **After Retention Period**              | Data is automatically masked.             |
| **No Retention Period Set (0 minutes)** | Data is masked as soon as it is processed |

{% hint style="info" %}
**Note:**&#x20;

1. The toggle to enable or disable masking is enabled by default in the production agent.&#x20;
2. The masking and retention period settings are not editable by bot developers in the production agent and can only be modified by contacting support.
3. The default retention period is zero. You can configure it only when information masking is enabled.
   {% endhint %}

Retention Period and Mask Enable Configuration Life Cycle

| Action                     | Retention Period Carried Forward | Mask Enable Configuration Carried Forward                                                |
| -------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------- |
| Pull from Dev to Stage     | No                               | No                                                                                       |
| Pull from Stage to Prod    | No                               | No                                                                                       |
| Promote from Dev to Stage  | Yes                              | Yes                                                                                      |
| Promote from Stage to Prod | Yes                              | No, it is enabled by default regardless of the configuration in the staging environment. |

## Persona

You can add new personas to your agent and this can be used to configure persona for the Facebook channel. See [Persona Configuration](https://docs.avaamo.com/user-guide/how-to/build-agents/configure-agents/deploy/facebook-channel/persona-configuration), for more information.

* In the **Agent -> Configuration -> Settings** page, click **Add new** in **Persona**.
* Specify the name of the persona and add an image to the agent avatar.
* Click **Add Persona** and **Save** to save the agent details.

## Notifications

You can use notifications to send daily usage and error notification reports to the users, as required.&#x20;

<figure><img src="https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FlffdBTpOEvF65YgN9Cvs%2FScreenshot%2023-04-2025%20at%2015.39.png?alt=media&#x26;token=42a8e0b2-b894-433f-b06f-6dcdfb1cb426" alt=""><figcaption></figcaption></figure>

**Daily usage report:** In this field, specify the email IDs of the users who need to get a daily report on agent usage. The first daily usage report is generated at 1:00 AM in the time zone specified in the **Time Zone** field and the next consolidated report is generated after 24 hours and so on.

**Error notification**: In this field, specify the email IDs of the users who need to receive error notification if JS errors are encountered during agent interaction. Error notifications are sent with a  15 minutes gap between each email.&#x20;

**Time zone:** Select the time zone to generate the daily usage report. If no timezone is selected in this field, then the UTC timezone is considered.

#### Add email IDs for daily usage reports and error notifications

* Specify the email IDs of the users in the **Daily usage report** and **Error notification** field.
* Click + icon to add the email ID.
* Click **Save** to save the changes made to the page.

#### Error notification emails

Each error notification email has the following information:

![](https://2934665269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LpXFTiTgns4Ml77XGi3%2Fuploads%2FIgDzfu10GI4xGe7lE06A%2F6.1-js-errors-email.png?alt=media\&token=4c5dcf51-92b9-458d-ad5e-83169410bc5c)

* The stage in the application in which the errors occurred. Stage refers to development, testing, staging, or production. If errors occurred in more than one stage, separate notification emails are sent to notify errors in each stage.
* A link to the JS errors page.
* The errors and the corresponding details of each error. The email lists a maximum of 25 errors. If there are more than 25 errors, a link is provided to view all the errors.&#x20;
* A link to send an email to all the agent owners.&#x20;

## Agent authentication keys

The following are the authentication keys of an agent that are generated by the Platform. Typically, these keys are used in an API when you are required to authenticate an agent:

* **Agent UUID**: A unique agent identifier generated by the platform.
* **Agent AccessToken**: This access token is used only for Conversation API and Message API operations.
* **API Token**: This access token is used for all the Dashboard operations except for Conversation API and Message API operations.