About this guide

This document explains how to configure and use the Omilia OCP miniApps®, which allows you to create any of the following OCP miniApps® types:

  • Alpha

  • Alphanumeric

  • Date

  • Numeric

To configure the Intent OCP miniApps® check out Intent OCP miniApps® Configuration.

Configure the OCP miniApps®

Welcome Prompts tab

The welcome prompts are the initial prompts responsible for establishing the interaction with the system, thus providing a more natural feel.

Figure 1. Welcome Prompts tab

Initial Prompt

OCP miniApps® allow you to fully configure three custom initial prompts depending on the error level of the initial system prompt:

  • Prompt 1: Initial System Prompt that handles the initial prompt to be played to the caller

  • Prompt 2: Rephrase after 1st error (No Response, No Interpretation), it handles cases where you want to re-prompt to the caller, for example, if there was a No Response or a No Interpretation event.

  • Prompt 3: Rephrase after 2nd error (No Response, No Interpretation), it handles cases where you want to re-prompt for a second time to the caller, for example, if there was a No Response or a No Interpretation event.

Greeting Reaction

Sometimes, when prompted for input, a caller may first greet the application instead of giving the input directly. For these cases, it is possible to configure a Greeting Reaction, which will trigger in conjunction with the initial prompt resulting in a more human-like experience.

To set up a greeting reaction, proceed as follows:

  1. Navigate to the Initial Prompt section.

  2. Click Greeting Reaction. The pop-up window opens.

  3. Insert the greeting text into the input field.

  4. Click OK to save changes.

Barge-in option

If you want to activate barge-in for each step, use the toggle on the right side of each initial prompt:

Currently the barge-in option works for the whole action, not for each individual prompt. This will be supported in a later version of the OCP miniApps®.

ASR timeout

You can also adjust the ASR timeout range slider to specify how long the system waits to trigger a NoInput event.

Start Over Prompts

Can only be triggered with the help of a Flow application, so should not be used in standalone miniApps.

This functionality allows you to specify Start Over prompts that will be used after the user requested to start over. For instance, the following conversation may take place:

System: How may I help you?

User: I want to get information about my account.

If for some reason the system takes the wrong "path" here, the user might be inclined to interrupt with something like "no no, can we please restart". In that case, in your flow you can specify that upon hearing the word "restart", the system will enter this miniApp with the specific Start Over prompt, like "Let’s take it from the top. How can I help you?" as in the screenshot below.

If you decide to use this functionality, you can additionally inform the user about the words that will trigger the Start Over functionality by making the following announcement: "Welcome to our service. At any point you can say 'start from the beginning' to take it from the top".

After you configure the prompts, click Save Changes.

Validations tab

In Validations tab you can choose the way the data provided by the caller is validated against preset rules. You can add multiple validations and prioritize them accordingly.

If multiple validations are set, with different prompts, only the prompts of the last validation will be used if validation fails.

Alpha miniApps

In Alpha miniApps, you have the following options:

  • Min Length: Set the minimum number of characters

  • Max Length: Set the maximum number of characters

  • Regex: Set the regex pattern

  • Javascript: Provide JS code that will return a boolean value (true/false) that indicates if it passes the validation

  • In list: Set a preset list of accepted string values

You can use any combination of these options in a single validation.

Javascript validation requires params.valueToValidate variable.

Example:

if(params.valueToValidate === "abc123") { true }

Alphanumeric miniApps

In Alphanumeric miniApps, you have the following options:

  • Min Length: Set the minimum number of characters

  • Max Length: Set the maximum number of characters

  • Regex: Set the regex pattern

  • Javascript: Provide JS code that will return a boolean value (true/false) that indicates if it passes the validation

  • In list: Set a preset list of accepted string values

  • Prebuilt: Use either the US zip code, or the CA zip code prebuilt list

You can use any combination of these options in a single validation.

Amount miniApps

In Amount miniApps, you have the following options:

  • Min Value: Set the minimum number of characters

  • Max Value: Set the maximum number of characters

  • Javascript: Provide JS code that will return a boolean value (true/false) that indicates if it passes the validation

  • Amount Unit: Set the unit that the amount is measured ($, €, %)

  • Amount Type: Set the amount type (monetary, percentage)

You can use any combination of these options in a single validation.

Date miniApps

In Date miniApps, you have the following options:

  • Date Range: Choose the date range of the expected caller reply by selecting a specific date, the time of he call, or in general a point in the past or in the future

  • Javascript: Provide JS code that will return a boolean value (true/false) that indicates if it passes the validation

Numeric miniApps

In Numeric miniApps, you have the following options:

  • Min Length: Set the minimum number of characters

  • Max Length: Set the maximum number of characters

  • Min Value: Set the minimum value

  • Max Value: Set the maximum value

  • Regex: Set the regex pattern

  • Javascript: Provide JS code that will return a boolean value (true/false) that indicates if it passes the validation

  • In list: Set a preset list of accepted string values

  • Prebuilt: Use Credit Card Number prebuilt list. The prebuilt credit card validation checks the length of the card (to be 15 or 16 digits) and uses the Luhn algorithm to check the card validity.

You can use any combination of these options in a single validation.

Javascript validation test

When a Javascript validation is selected it is possible to run a test to confirm that the validation works.

  1. Enter the JS validation code in the JS script box.

2. Click the Run button to open the modal and enter any additional parameters if required.

3. Click OK to see the result.

Custom Validation

In all of the above miniApps you can also have a Custom Validation which overrides any other validation. In Custom Validation, you can create your own web service that validates the n-best results based on the logic you want and returns true or false.

In case of true, it needs to return the selected n-best result.

In case of false, it needs to return the first value on the list (i.e. the one with the highest confidence, as values are arranged by confidence level).

The end point you specify by providing the URL and the request token will get all n-best results as input in the following format:

{
    "allValues": [
        { "value": "a b c", "confidence": 97.0 },
        { "value": "a d c", "confidence": 82.0 }
    ],
    "normalizedValues": [
        { "value": "abc", "confidence": 97.0 },
        { "value": "adc", "confidence": 82.0 }
    ]
}
CODE

If the validation has been successful, the result you need to return should look the following:

{
    "isValid": true,
    "nBestValue": "adc",
    "nBestConfidence": 82.0
}
CODE

If it hasn’t been successful, the result should be the following:

{
    "isValid": false,
    "nBestValue": "abc",
    "nBestConfidence": 97.0
}
CODE

For these examples, we are assuming that in the successful case "adc" has passed the validation (e.g. been found in the dictionary) - that’s why it’s returned. And in the unsuccessful case neither "abc" or "adc" were found - thats’s why the first value is returned.

Amount Settings tab

The Amount Settings tab is only available for Amount type miniApps.

The Amount Settings tab has the options to configure the amount settings. The selection defines the understanding of the miniApp regarding the amount the caller states.

It is mandatory to always have an Amount Type and Amount Unit declared. This will help service cases where the caller provides a plain amount input with no reference to the type or unit (for example, “I want to pay twenty”).

Available options are:

  • Amount Type: Set the amount type (monetary, percentage)

  • Amount Unit: Set the unit that the amount is measured ($, €, %)

Confirmations tab

In the Confirmations tab you can manage and control whether you will confirm the caller’s provided data. To enable or disable the confirmations, use the Confirmation toggle.

Confirmation behavior can be customized to either ask every time ("standard") or based on a confidence threshold ("dynamic"). To further enhance the customer experience, the confirmation module features an additional mechanism that, when enabled, adds short pauses between a long piece of information being read back to give time to the caller to verify it ("slow confirmation"). To resemble the legacy confirmation behavior of DTMF systems, the confirmation module also allows the caller to accept or reject using keys instead of natural language ("DTMF confirmation").

Trigger Confirmation

To control whether the confirmation will be always triggered, or below a certain confidence percentage, use the Trigger Confirmation drop-down menu and select one among the following options:

  • Always

  • If confidence below 95%

  • If confidence below 90%

  • If confidence below 85%

  • If confidence below 80%

Slow Confirmation

To add a pause between the system understood characters, use the Slow Confirmation toggle.

DTMF Confirmation

To enable DTMF Confirmation, use the DTMF Confirmation toggle. When enabled, you provide the caller the option to confirm or disconfirm the system understood characters by pressing a preset key.

Nice Reactions

To add nice reactions, select the Nice Reactions button.

In the Nice Reactions window, you can optionally set nice reactions. Whenever the application identifies a caller confirmation, it randomly throws a nice reaction according to weight, before the confirmation or disconfirmation prompts, to make the dialog sound more conversational.

Confirmation Prompts

You can fully configure three custom confirmation prompts depending on the error level of the initial system prompt:

  • Prompt 1: Initial System Prompt that handles the initial confirmation prompt to be played to the caller.

  • Prompt 2: Rephrase after 1st error (No Response, No Interpretation), it handles cases where you want to re-prompt to the caller, for example, if there was a No Response or a No Interpretation event.

  • Prompt 3: Rephrase after 2nd error (No Response, No Interpretation), it handles cases where you want to re-prompt for a second time to the caller, for example, if there was a No Response or a No Interpretation event.

Only for the AlphaNumeric type, you can choose a predefined alphanumeric confirmation mode from the following drop-down list:

  • Spelling without examples (ABC123)

  • Spelling with predefined examples (A like Alpha, B like Bravo…​)

  • Spelling with caller examples (A like Apple, B like Boston…​)

Disconfirmation Prompts

You can fully configure three custom disconfirmation prompts depending on the error level of the initial system prompt:

  • Prompt 1: Initial System Prompt that handles the initial disconfirmation prompt to be played to the caller.

  • Prompt 2: Rephrase after 1st error (No Response, No Interpretation), it handles cases where you want to re-prompt to the caller, for example, if there was a No Response or a No Interpretation event.

  • Prompt 3: Rephrase after 2nd error (No Response, No Interpretation), it handles cases where you want to re-prompt for a second time to the caller, for example, if there was a No Response or a No Interpretation event.

When you are done, select Save Changes to apply the new configuration changes.

Hold Functionality tab

OCP miniApps® have a fully configurable hold functionality. This functionality can be turned on/off, and allows you to set up your own prompts according to the step of the flow and record a specific hold music.

In this tab, you can control and manage the hold functionality.

To enable the hold functionality, use the Hold toggle. Once enabled, you can control when and how the hold functionality will be triggered, and once triggered, you can configure the dialog evolution and exit.

Trigger Hold Functionality

Select Trigger Hold Functionality to control when and how the hold functionality will be triggered. You can trigger the hold functionality under three different scenarios:

  • Prompt caller to hold after first no-input

  • Information not available response

  • Prompt caller to hold after invalid information

Configure Hold Functionality

Select Configure Hold Functionality to configure the dialog evolution and exit.

Hold Audio

Use the Hold Audio drop-down menu to select a pause or hold music for 10, 20, or 30 seconds.

Hold Duration

Use the Hold Duration drop-down menu to select a middle prompt, two times or three times a middle prompt, or no middle prompt.

Hold dialog evolution

In this pane, you can see the dialog evolution, depending on your options in the Hold Audio and the Hold Duration drop-down menus.

DTMF Exit Hold Functionality

In the DTMF Exit Hold Functionality, you can select which key the caller can press to exit the hold.

Exit hold functionality

In the Exit hold functionality pane, you can configure how the system will respond to exiting from the hold.

When you are done, select Save Changes to apply the new configuration changes.

Agent Handling tab

To see the details on how to configure the Agent Handling tab, check out this article.

Error Handling tab

To see the details on how to configure the Error Handling tab, check out this article.

Chat tab

To see details about the Chat tab, check out this article (section 1).

Manage Languages tab

To see the details on how to configure the Manage Languages tab, check out this article.