We will create the following step-by-step scenario:
- The IVR will ask the caller to enter a 6-digit reference number.
- The number and call ID will be sent to an external app.
- The external app will return a "valid" value or something else to the IVR.
- If the reference is valid, the caller is routed into a queue and to an agent.
- Otherwise the IVR offers something else.
First - data flow from IVR to application and back to IVR
The most important parts are sending the data from the IVR to your app and receiving the validity evaluation from that app back in babelforce to process the call. Here is how those parts are done:
In this example the IVR module sends the call.id and the entered number to an external app after the number has been captured. To enable this process, create a local Automation (under the tab "Automations") within your call flow module:
Note that we are using a Zapier webhook URL in our example to receive the data. Just use the URL of whatever API endpoint you have set up to receive your babelforce IVR and call flow data.
Important: Use a "pre" Automation to execute the action to send data to your API and not a "post" one. "pre" means that the Automation is executed when the call enters the babelforce IVR module. With a pre-action you can be sure that when and if this module starts, the defined Action will be carried out. A post-action with setting "after" might not fire in certain situations, it is heavily dependent on how the module ends, timing effects on user input, call ending, etc. So always use a pre-action wherever possible.
Once this data arrives at Zapier, it looks like the following. Note that the caller entered "223355" on their phone keypad. And also you need the marked callID. The callID is used to put the data from the external app back into the IVR for the particular call.
Then the external app carries out a PUT request like the following to tell the IVR that the entered number was valid:
Example API PUT request using Postman
Note that the placeholder {{env}} below must be filled with the territory or custom environment you are operating on. For EU/EMEA, just enter "services":
For more information on the babelforce API, head over to our API documentation and have a look at our chapter on APIs.
Second - using the valid result in the IVR to route the call
Create a Trigger like the following to test if the result in "refnumcheck" is "valid":
Note, the reason that ivr.mySection.refnumcheck exists here as an expression, is because it is initialized in the first welcome prompt player in the IVR flow, as follows.
Use that Trigger in a Switch Node in your call flow. If the Trigger is evaluated as true, route the call to the module which handles the call distribution to the agents. If it is not true, the call flow will be routed to the alternative module (the after flow).
Here is the switch node:
Third - the IVR call flow that handles the flow
Here is the full set of IVR apps used in the flow:
Here are the complete settings of the input reader app tab:
Important: The Input Reader must use an afterflow app, i.e. the call flow control must pass to another module and the remainder of the callflow is responsible for checking the actual validity of the digit string the caller entered.
These are all the main elements that are used for this integrated IVR call flow. Below is just a note to create a better IVR experience for the customer.
Improving the IVR experience
Nice no-input and no-match reprompting and handling will make your flow better and improve the performance, i.e. the % of times that the process successfully captures a valid number when the caller actually had one and wanted to use it.
Note that the prompts for no-input and no-match will be used automatically to handle cases where the user enters nothing on their keypad and also where the IVR receives less than 6 digits or more than 6 digits. It makes your flow and the customer experience better if these situations are modeled well.
Comments
0 comments
Please sign in to leave a comment.