IVR skill¶
Provides phone forwarding capabilities.
Overview¶
Provides base capabilities for phone needed to build an IVR including forwarding calls to preconfigured extensions.
Intents¶
For the extensions configured in the Content section, the system will automatically generate specific intents for triggering forwarding to this extension. The _sales
part represents the id of the extension so every extension gets its own intent.
intent | example |
---|---|
@dispatch |
Can you forward my call please? |
@operator_availability |
When is ... back?, When is ... available again? |
@extension_{{extension.id}} |
Can you forward me to the Sales department? |
@extensions |
A list of all extension intents |
How to use¶
After having installed the IVR skill you can add extensions in the Content section and configure basic behaviour in the settings section of this skill.
Settings¶
The settings of this IVR can be used to: - disable dispatching; this is used for more complex bots where all dispatching behaviour is configured using the Flows skill - suggested extensions; to provide suggestions when people invoke the dispatch intent.
You can find the skill settings by going to the Skills section and click on the "IVR Skill" badge. In the skill details popup you can click on the "Configure" button.
Extensions Content¶
In the Content section you can add the extensions you want people to be dispatched to.
Extensions exist of the following fields:
field | purpose |
---|---|
Name | The name of the extensions, like 'Sales department' or 'John Doe' |
Number | The phone number to use |
Time plan | Optionally a timeplan (see Timeplans skill) in which this extension is available |
Optionally an email address, which when filled, will be used to send a note to when not available | |
Set tags | Optionally tags to set when people ask to be dispatched to this extension |
Synonyms | Optionally synonyms to use for matching this extension |
Notice that matching the right extension when people ask 'Please forward me to xyz please' is done from top to bottom. So the first extension that matches the criteria (name + synonyms) will be selected, ignoring the rest. So make to not have overlapping extensions.
Voice translation content¶
Working with voice requires optimizing text to be properly translated to speech. Sometimes the TTS API's don't pronounce a word like you want it to be pronounced. The platform provides a function to automatically adjust texts for customized pronounciation. Using this skill you can add voice translations using the cms. Go to the content section and choose "Voice translations".
You can also use speech markdown in the text to replace. This way you have even more tools to influence how something is pronounced.
How to extend¶
Use the Flows skill to define custom behaviour to your IVR. The relevant dialogs of this skill are available to be invoked or extended with Flows. If you don't want the base capabilities of this IVR skill without the dispatching part because you want to customize the dispatching behaviour, make sure to disable the dispatching in the skill settings.
How it works¶
The IVR skill includes three bubblescript files: | file | purpose | | ------ | ------ | | ivr.bb | Provides base dialogs and triggers | | dispatch.bb | Provides dialogs and tasks needed for dispatching | | dial.bb | Provides the dialogs for dialing |
The IVR skill will overwrite some of the base dialogs and intents to provide specific phone like behaviour. We want a phone bot to be less chatty and escalate sooner.
ivr.bb¶
Overrides the following dialogs:
dialog | description |
---|---|
main | "Hi, you are talking to #{bot.title} |
root | invoke menu |
menu | "How can I help you?" |
purpose | "I can answer basic questions and forward you to the right person or department." |
unknown | invoke dispatch |
unknown_dialog | "Sorry?" |
unknown_vague | "Sorry?" |
close | stop |
cancel | reset |
help | invoke unknown |
question | invoke unknown |
dontknow | invoke unknown |
wrong | invoke unknown |
It introduces the following new dialogs:
dialog | description |
---|---|
operator_availability |
To invoke the opening hours intent, override this dialog if you want to provide specific opening hour information per extension for instance |
event: "$no_input" |
invoke unknown when long silence |
force_hangup |
Used by unknown to hangup after more than 3 tries |
closing |
Intermediate step before closing to be able to say bye first |
dispatch.bb¶
dialog | description |
---|---|
dispatch |
To elicit the extension to dispatch to |
dispatch_to_extension |
Redirects to the extension given in the extension variable |
invoke dispatch
The dispatch
dialog can be invoked whenever you want your user to choose an extension and then be forwarded to it. It will present the user (after a first try to match the user message) a predefined set of suggested extensions. These extensions can be configured in the skill settings.
However this dialog will only show the suggestions configured in the skill settings, all of the extensions will be triggered when uttered by the user. After matching an extension it invoke the dispatch_to_extension
dialog for further dispatching.
extension = [name: "Sales", number: "+31615080195"]
invoke dispatch_to_extension
The dispatch_to_extension
dialog can be invoked when you already know which extension to forward to (extension
variable is filled by one of the extensions out of the content/extensions.yaml file).
When the given extension is either not available due to its timetable or due to not picking up the phone, it will explain the extension is not available and optionally asks to leave a message (when the Notes skill is installed).
dial.bb¶
dialog | description |
---|---|
dial |
To actually dial and forward the call, which should be used through dispatch whenever it involves an extension |
dial_number = '+31615080195'
invoke dial
The dial
dialog will forward the call to this number.