In this Use Case, we're building a Survey Agent which understands Customer feedback and sends it to a SharePoint list together with key analytics such as topic, sentiment and detected suggestions for improvement.
Preconditions
To implement this Use Case you need:
-
For Nimbus:
- A Contact Center and Virtual Users license.
-
For Microsoft:
- A “Copilot Studio” Licence → Also see Azure Billing notes below.
- Power Automate licensing needs, and all other Nimbus Power Automate Connector preconditions must be met.
- A deployed AI model or Power Automate Premium license to use AI Builder.
- Tenant Admin rights are required to implement all actions and connect to data sources required for your Services.
INC Azure Billing Cognitive Services
Disclaimer: Support for Azure Billing & Cognitive Services
☝ The usage of Microsoft Azure AI Services for Speech1 and AI2 will cause additional costs outside your Nimbus subscription, which are exclusively determined by Microsoft.
Please note:
- Nimbus Support does not cover pricing discussions or make recommendations on Microsoft Azure Services. → Please inform yourself via the references below on pricing models.
- Nimbus Support can not provide any technical help, insights or solutions on Azure Cognitive Service related technical problems.
1 Azure Speech Services: https://azure.microsoft.com/en-us/pricing/details/cognitive-services/speech-services/
2 Generative AI Services (Copilot Studio):
INC Icon Legend Accordion
Show Icon Legend 💡 = A hint to signal learnings, improvements or useful informati...
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. |
Designing the Copilot
✅Let's start by applying the best practices to our creation process by defining a scenario:
Scenario:
The Copilot should conduct a service survey in a more natural way to gain better insight in customer experiences and automate form filling using Copilot. We want to replace Customer Input or Collect Information with DTMF tones to select options with a Virtual User for an enhanced customer experience when you need to collect information. The Copilot detects the satisfaction rating from the phrases rather than asking how many stars someone would give. It also automates the process of filling out survey forms. Natural language should encourage customers to express themselves and reflect about their experience.
Defining the Bot
Role | The Copilot will greet the customer and process one message at a time. |
---|---|
Tasks |
|
Access, checkpoints and thinking |
|
Building the Copilot
✅The first step is to configure a new agent in Copilot. The agent will handle all the customer inputs via various topics, then parse the individual information into parameters.
Description | Screenshot |
|
![]() |
Tip: you can also replace this step by using the prompt tool in Copilot. It's up to you. |
![]() |
The Power Automate flow has 4 steps. which are detailed in the following. The high level steps are:
Details on each step will be explained in the following. |
![]() |
|
![]() |
The HTTP element will request an AI model of choice - in this case ChatGPT.
Body:
|
![]() |
Parse the output of the AI model:
|
![]() |
Respond to the agent with the desired fields. | ![]() |
Once the Power Automate Flow is ready, the configuration of the tool is simple via the details:
|
![]() |
JSON to process
To build the topic you can follow the instructions in Copilot - Initial Data Handover from Nimbus to Copilot |
![]() |
At the end of the “Process JSON Input” topic, redirect to a new topic “Gather Feedback”. | ![]() |
|
![]() |
Then redirect to a new topic “Fill out the form” | ![]() |
|
![]() |
You will also need a topic to greet the Customer.
|
![]() |
If your customer does not have any feedback, you need to handle this as well.
|
![]() |
Adding the Copilot to Nimbus
✅Finally, it is time to add your bot to Nimbus. The process consists of:
- Creating Authentication in Copilot Studio (Secret Keys)
- A Nimbus Bot, to which you are “mapping” the API endpoint and authentication.
- A Nimbus Bot Response Templates to map the bot JSON outputs to for further call routing.
- A Virtual User which combines all of the above and can be added to your workflow.
Create Authentication
Copilot - Authentication
✅The following steps explain how to define your authentication in Copilot Studio so Nimbus can access the API later.
- Log into Copilot Studio.
-
Security: Go to Agents > Settings > Security.
- Select No authentication → See Design and Limitation Notes below.
- Go to Web Channel Security > Secrets and Tokens.
- 🧠Copy either Secret 1 or 2 for later within your Nimbus Bots configuration.
- Ensure “Require secured access” is enabled.
-
Endpoint: Copilot Direct Line 3.0:
https://directline.Botframework.com/v3/directline/conversations
🧠Copy / Note the Endpoint URL for later use.

Configuring the Bot
✅The bot contains the API key and endpoint for your Copilot agent:
- Head to Nimbus Administration > Configuration > Bots and create a new Bot.
- Give your Bot a descriptive name.
💡This name is just for Nimbus UI purposes, and must not match Copilot. -
Define the Organization Unit under which this Bot will be selectable.
☝ Note that any service on this OU or higher can access it (which may result in additional Azure cost). - Type is M365 Copilot Direct Line 3.0.
- API Key: 🧠 Paste the Secret from the Copilot Setup above.
-
Endpoint: 🧠
https://directline.Botframework.com/v3/directline/conversations
- Save and Close.
Create a Response Template
✅The response template maps the outputs of your Copilot agent:
- In Nimbus, go to Admin > Configuration > Bot Response Templates
- Add a new default response template for Copilot.
Create the Virtual User
✅The Virtual User is the element you add to your Nimbus workflow, which also marks the starting point of verbal interaction with the customer:
- In Nimbus, go to Admin > Configuration > Virtual Users.
- Add a new Virtual User with a Description and choose your bot accordingly.
- On the Initial Message to Bot the most important part is the System Parameter
CallId
. It corresponds to the NimbusTaskID
.💡The
CallId
is used to start the Copilot “Process JSON Input” Topic mentioned above, which will engage the Bot with a Customer. The next reply by the Customer is then handled exclusively Copilot itself.

Using the Copilot in Nimbus
✅The final step is to add your newly defined Virtual User to a workflow.
Use the Virtual User in your Workflow
- Within Nimbus go to Configuration > Workflows.
- Create a new Audio/Video Workflow or add your new “Add Virtual User” activity to an existing workflow.
- Within the activity, you need to configure the Exit with the Regular Expression
feedback
to ensure that the Virtual User stops after processing the second input.
💡The wording “feedback” is adjusted in Copilot.
- Within the activity, you need to configure the Exit with the Regular Expression

Testing your Virtual User
✅Test your Virtual User by verifying the results added to the SharePoint list.

Known Limitations
INC AI and Virtual User Limitations
AI-driven interactions
AI driven replies are not deterministic and depend highly on what the Customer is saying. For example, if the Customer is saying “I have trouble with my Skateboard” it is not necessarily given that the Bot will use the same word “Skateboard” as your exit unless specifically handled via Copilot.
🔎Refer to our Best Practices - Virtual Users in Nimbus for some considerations and risks when using Virtual Users instead of Human interaction.
Microsoft Copilot Bot Limitations
- Expect delays: Processing AI answers takes a few seconds for transcription of voice input, AI processing and then transcription back into a spoken reply. Luware is trying to minimize the delay on Nimbus call infrastructure, but the dependency on external APIs will always incur a delay. The Customer will hear silence during this processing and no audio feedback / silence detection.
-
Ensure you have no ambiguity in your topics. For instance, the word “
Service
” may be too generic if you want to transfer to different services. Rather usehealthcare|medical|emergency
as identifiers or use more complex Regular Expressions to identify replies.
Nimbus Technical Limitations
The current Nimbus implementation with AI-driven bots underlies the following limitations:
- Supported Modalities: Virtual Users (Bots) are currently available for Audio/Video modality tasks.
- 3rd-Party API Support: Nimbus will be built flexibly to support “BYO” (bring your own) customer bot configurations and APIs. The first currently supported bot integration is M365 CoPilot Direct Line 3.0 APIs.
- Authentication: The Copilot Direct Line 3.0 API Secret needs to be copy-pasted into the Nimbus Bots configuration. Further authentication types are planned to be supported in the near future.