Use Case - Extending the Standard Power BI Report with IVR Choices

Collect IVR choices of callers and evaluate them in the Power BI reporting.

In this Use Case, we want to collect the IVR choices of callers and evaluate them in the Power BI reporting.

PRECONDITIONS

You require service owner rights.

  • A Nimbus service is set up and ready to receive calls. 
  • The Nimbus Power Automate Connector is installed and preconditions are met.
  • The Nimbus Power BI report is opened and connected to OData Feed in Power BI Desktop.
  • An Azure table storage or equal storage is set up. 💡Some expertise in database queries and tables is helpful to better understand this Use Case.
 

INC Icon Legend Accordion

Show Icon Legend

💡 = A hint to signal learnings, improvements or useful information in context. 🔍 = Info points out essential notes or related page in context.
☝ = Notifies you about fallacies and tricky parts that help avoid problems. 🤔 = Asks and answers common questions and troubleshooting points.
❌ = Warns you of actions with irreversible / data-destructive consequence. ✅ = Intructs you to perform a certain (prerequired) action to complete a related step.
 
 

Configuration in Nimbus

In Nimbus Configuration, create a custom Parameters "IVRChoice" and set the Default value to null.

Set-up the Workflow in Nimbus

  1. In the service Workflow, open the list of Workflow Activities.
  2. Add “Input Customer” and route all the outputs to "Save to Parameter" before routing further in the workflow.
Example Workflow with all “Input Customers” routed to the same IVR choice parameter.

💡 In our Use Case we ask for the language and route accordingly.

Prepare your Azure Storage

  1. Log into your Azure Storage management.
  2. Create a table called "IVRChoices" with PartitionKey = bySessionId.
  3. 🔍 Note: If your service allows internal calls you need to add another option for internal UPN's. You would also need to check on the caller origin (UPN or PSTN) in the power automate flow. We omit this here for simplicity.
  4. ✅ Remember to keep the URL to your Azure Storage ready for later.

Create the Power Automate flow

Here is an overview of the flow:

Flow Overview

 
 
  1. Visit the Flow landing page: https://make.powerautomate.com/
  2. Go to "My Flows".
  3. Click "+ New Flow" and create a blank "Automated Cloud Flow".
  4. Give your new flow a speaking name, e.g., "Save IVRChoices".
  5. In the text box underneath, search for “Nimbus” and choose the “When a task changes state” trigger.
  6. Click the Create button.
  7. Select the “When a task changes state” trigger.
  8. In the “Services Item” dropdown select the Nimbus service's UPN.
    💡 You can also get the data of multiple services at this point, but for the sake of simplicity we keep it to one service in this example.
  9.  In the “Task Events” dropdown select “Parameter Updated”.
  10. In the “Advanced parameters” dropdown enable “Modalities” and "Directions".
  11. In the “Modalities Item” dropdown select “Audio”.
  12. In the “Directions Item” dropdown select “Inbound”.
  13. Navigate to the “Settings” page of the trigger and add the following expression as a “Trigger condition” to trigger the flow only in case the “IVRChoice” parameter is updated:

@equals(triggerBody()?['UpdatedParameterName'],'IVRChoice')

  1. In the editing area click to add a new action.
  1. Search for "Azure table storage get entity" and select “Insert Entity (V2)” under the “Azure Table Storage” section.
  2. Configure the action as follows:
Field Value to fill in / 🌟 = Nimbus dynamic content 
Storage account name or table endpoint Select an existing connection setting from the dropdown list
Table Select IVRChoices from the dropdown list
Entity
JSON
{
 "PartitionKey": "bySessionId",
 "RowKey": @{triggerOutputs()?['body/TaskId']},
 "ServiceId": @{triggerOutputs()?['body/ServiceId']},
 "ServiceDisplayName": @{triggerOutputs()?['body/serviceDisplayName']},
 "ServiceUPN": @{triggerOutputs()?['body/serviceUPN']},
 "Created": @{triggerOutputs()?['body/created']},
 "PhoneNumber": @{triggerOutputs()?['body/microsoftCallerId']},
 "IVRChoice": @{triggerOutputs()?['Body/UpdatedParameterValue']}
}

💡 In case no connection exists yet for the Azure Table Storage, Power Automate will ask you first to connect. To get more information about the options, please have a look at the Azure Table Storage - Connectors article. 

Add the Azure Table to the Nimbus Power BI Report

Now you only need to add the Azure table as an additional dataset to your Power BI report file.

Description
Screenshot in Power BI
  1. Go to "Get Data" and select "more" > "Azure".
  2. Select "Azure Table Storage" and connect.
Enter your Azure Storage URL and select the table.

Once connected you can edit the query on your table to see the full content.

 
CODE
= Table.ExpandRecordColumn(
ivrchoices1, "Content",
{"ServiceId","ServiceUPN","Created", "PhoneNumber", "IVRChoice"},
{"ServiceSessionId","ServiceUPN","Created","PhoneNumber", "IVRChoice"}
)

Add a relationship between ServiceSessions and the IVR table.

🔍 RowKey holds the Session Id.

Now you can use the table in the BI report. 

💡 In this example we added the recorded choices to the ServiceOverview tab of the report.

 

💡 Tip: Any other Parameters that have a changed default will also be shown there, so you can expand this Use Case with any other data you want to retrieve.

Chosen options in the Report

By the way: If you are using Nimbus Assistant, Agents can see the choice parameter in the Info tab.

Parameter selection visible in Assistant
 

Table of Contents