In this Use Case we're setting up a Virtual User that reaches out to your external systems mid-conversation. It uses re-usable Authentication to look up customer or order data, querying ticket systems, or using any other APIs the bot needs to do its job. The Virtual User uses Nimbus' AI Workflow profile together with Extension Tools: Web Requests for any HTTP API, and MCP Servers for tool collections that speak the Model Context Protocol.
The Virtual user also defines Intent-driven exits for handling user-specific requests, optionally storing any intent responses (e.g. a retrieved account number or the customer name) in Parameters. Instead of a single fixed Success outcome, the Virtual User now returns a conversation result through these Intents you define on the Virtual User and then map to Workflow exits.
To achieve this, we're going to cover the following topics in this Use Case:
- How to configure the Bot and Virtual User on the AI Workflow profile.
- How to prepare a reusable Authentication (API Key or OAuth 2.0 Client Credentials) so the bot can reach an authenticated external system.
- How to write a Flow Description — the playbook that tells the model when to call a tool, which one to pick, and what to do with the result.
- How to attach Web Requests and MCP Servers as Extension Tools, and how to describe them to the model.
- How to wire the Virtual User into a Nimbus Workflow, mapping its exit Intents and the default exits (Fallback, Failed, Idle Timeout).
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. |
Preconditions
INC AI and Virtual User Preconditions
PRECONDITIONS: AI Features, Bots and Virtual Users
Admin Consent: AI Features
✅ Nimbus Tenant Admin consent is required to enable the use of AI features. This is done in the Data Privacy Tenant Settings. AI use will require your Tenant data (e.g. caller information) to be processed by external services
💡Good to know - shared setup effort: Once consent is granted, both Admin Roles “Tenant Admins” and “OU Admins” are able to create various AI Configuration items in the Nimbus Admin Portal. This also includes:
- Access to Service Distribution Settings, e.g. to test workflows with your configured Virtual Users.
- Steer feature visibility via Companion Service Settings (e.g. when activities are supposed to happen unobtrusive in the background).
Virtual User Licensing
✅Nimbus License Management:
-
Contact Center Enterprise Routing service licenses are required to use AI-driven Virtual User functionality.
⮑With the license applied, corresponding Service Features (e.g. workflow activities, configuration tabs) are enabled. -
Individual Virtual User license requirement: Same as regular Nimbus users, each Virtual User requires a separate license. This license can be applied individually in the Virtual User configuration - or in bulk - via Admin > Licensing view.
⮑The license enables usage of the “Add Virtual User” Workflow Activity, without it the activity will be skipped over. For additional Virtual User licenses on your service, get in touch with your Customer Success representative.
Virtual User Bot Configuration
Virtual Users rely on Nimbus Configuration items:
✅ ALL: Virtual Users require Bots to be configured. Your bot choice also determines the underlying AI LLM into which the Nimbus Virtual User integrates. Your bot typ and profile should therefore be chosen with the intended use case in mind.
INC Language model comparison matrix
| Defined in Bots | Defined in Virtual Users | |
|
Type Nimbus managed or BYO |
Agent Type Underlying LLM |
Virtual User Profile Pre-built configurations to fulfill a certain use case |
| Nimbus AI Services | Azure OpenAI – (GPT Realtime)1 |
|
|
Custom AI Services
|
|
|
| M365 Copilot Direct Line 3.0 |
|
|
Notes
1 Due to Microsoft Azure AI foundry availability in limited regions, data processed by a Nimbus Virtual User “GPT”-Realtime" integration might temporality leave due to failover scenarios:
- Nimbus Cluster DE01, DE02, CH01, CH02, UK01, EU01, AU01 computation will be primarily performed in Sweden Central region.
- Nimbus Cluster US01 computation will be primarily performed in the US East region.
✅SPECIFIC AI services / Agent technologies (e.g. Microsoft Copilot) may require additional configuration items such as:
- Bot Response Templates, to map bot answers back into Nimbus workflow parameters.
- Speech Recognizers (Transcribers) to convert the Customer voice into text for the bot to process.
🔎For more details and specific configuration steps, refer to our AI Use Cases category and the specific Use Cases and pages linked above.
Use Case Overview
Details will be covered below in this Use Case. As a quick tl;dr, here is an overview of items you will need:
| What will you need? | Where? | Why? |
|---|---|---|
| ✅ Bot Configuration | Nimbus Admin > Configuration | To pick the bot's hosting service and agent technology that hosts the AI conversation. |
| ✅ Virtual Users | Nimbus Admin > Configuration | To select the AI Workflow profile, write the Flow Description, attach Extension Tools, define the Intents the bot can detect, and apply the license that enables the bot to perform tasks. |
|
|
Nimbus Admin > Configuration | To store reusable credentials — an API Key or OAuth 2.0 Client Credentials — that your Web Requests and MCP Server (defined in the Virtual User) use to reach an authenticated external system. |
| ✅ Web Requests | Nimbus Admin > Configuration | To define connections with external HTTP APIs that the Virtual User can call on demand. |
| ✅ MCP Servers | Nimbus Admin > Configuration > Virtual User | To attach a Model Context Protocol endpoint that exposes a whole toolset to the Virtual User (e.g. an internal Jira or ticketing helper), secured with one of the reusable Authentications above. |
| ✅ Parameters | Nimbus Admin > Configuration | To store the Fallback topic the AI returns when it cannot resolve the caller's request, and to capture data the bot collects per Intent (up to 10 Parameters each). |
| ✅ “Add Virtual User Activity” (in Workflow) | Workflows > Conversation Handling Activities | To invite the Bot to the conversation, map its exit Intents and route the default exits accordingly. |
Step 1 - Nimbus AI Bot Setup
✅ This step consists of setting up a: …
- … Bot configuration, which specifies either Azure OpenAI or Copilot as Agent Type, and a …
- Virtual User with the corresponding behavioral settings for the bot, as well as Extensions Tools such as Web Requests and MCP Servers.
Virtual User and Bot Overview
Below is a comparison matrix of how Virtual Users and Bots are configured in Nimbus, and for which type of Use Case. For this example we are going with the "AI Workflow” profile to make the configuration a bit easier.
INC Language Model Comparison Matrix
| Defined in Bots | Defined in Virtual Users | |
|
Type Nimbus managed or BYO |
Agent Type Underlying LLM |
Virtual User Profile Pre-built configurations to fulfill a certain use case |
| Nimbus AI Services | Azure OpenAI – (GPT Realtime)1 |
|
|
Custom AI Services
|
|
|
| M365 Copilot Direct Line 3.0 |
|
|
Notes
1 Due to Microsoft Azure AI foundry availability in limited regions, data processed by a Nimbus Virtual User “GPT”-Realtime" integration might temporality leave due to failover scenarios:
- Nimbus Cluster DE01, DE02, CH01, CH02, UK01, EU01, AU01 computation will be primarily performed in Sweden Central region.
- Nimbus Cluster US01 computation will be primarily performed in the US East region.
Configuring the Bot
✅ The Bot is your “mapping” to the AI service that hosts the conversation.
- 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. - Define the Organization Unit under which this Bot will be selectable.
- Type: pick Nimbus AI Service for the Luware-managed option (no endpoint or API key required), or Custom AI Service if you bring your own Azure OpenAI deployment.
-
Agent Type is Azure OpenAI (shown as “Azure OpenAI – GPT Realtime”) — the only agent technology that supports Web Requests and MCP Servers.
💡If you picked Custom AI Service, fill in the Endpoint, Authentication Type and API Key fields. For Nimbus AI Service those fields are hidden — Nimbus provides them. - Save and Close.
Preparing the Authentication (for authenticated external systems)
✅ Most external systems (a CRM, a ticketing API, an internal MCP server) require credentials. Define them once as a reusable Authentication so both Web Requests and the MCP Server can reference the same item.
- Head to Nimbus Administration > Configuration > Authentication and create a new item.
- Give it a Name and Description, and set the Organization Unit in the same place (or higher) as your Virtual User.
💡Set the OU to the same unit as your Virtual User (or a parent) — the MCP Server dropdown only lists Authentications from the Virtual User's OU and its parents. - Pick a Type:
- API Key — provide the API Key Name, How Sent (Request Header or Query String) and Key Value.
- OAuth 2.0 Client Credentials — provide the Access Token URL, Client ID, Client Secret and optional Scope. Nimbus then requests and refreshes the bearer token automatically.
- Basic Authentication — on which you provide username and password.
- Save and Close. You can reuse this Authentication on any Web Request and on the Virtual User's MCP Server.
☝️ Take note: Secrets are stored encrypted and never shown again in clear text. An Authentication cannot be deleted while it is still used by a Web Request or an MCP Server.
Configuring the Virtual User
✅ Virtual Users. Here you give your AI bot instructions on how to interact with the Customer, which outcomes (Intents) it can detect, and which Extension Tools it may use.
- Head to Nimbus Administration > Configuration > Virtual Users and create a new Virtual User.
- Give your Virtual User a descriptive name, e.g. Order Status Concierge.
💡This name is just for Nimbus UI purposes, e.g. for later selection in your Workflows. -
Define the Organization Unit under which this Virtual User is selectable.
💡Should ideally match the Services and Workflows accessing this Virtual User, and the OU where your Web Requests and Authentications live. - Select the Bot you configured above.
-
Set Profile to AI Workflow.
💡The Profile decides how the bot behaves in the conversation. AI Workflow unlocks the Extension Tools section further down the page (Web Requests, MCP Servers, Flow Description). The Open Profile profile behaves the same as AI Workflow for Extension Tools, but adds controls over Role, Verbosity and Tone. The Intent Analyzer profile is intentionally blocked from using Extension Tools — pick it only for pure intent classification (see the Intent Analysis use case). - The “System Instructions” field is your behavioral guideline (persona, hard rules, flow order). Keep it about who the bot is, not about which tool to call — the latter goes into the Flow Description below.
- Optionally define the Initial Message:
💡Note that this field is optional in Nimbus: The underlying AI will engage with the Customer automatically. Optionally you can use these instructions to lead directly into the first conversation topic / intent. By adding Custom Parameters or System Fields and Parameters (retrieved via CRM using Flow Actions) you can also lead directly into a more direct conversation. - Optionally set a Closing Message — a short line the Virtual User will say before handing off or disconnecting (e.g. “Thank you, I'll transfer you to a colleague now.”).
- Define the Language and Voice of your Virtual User.
-
Define the Timeout behavior for your bot (in seconds). You have the following values to specifcy:
- Session Timeout: Maximum total duration the Virtual User stays in the call.
- Idle Timeout: How long the bot waits for caller input before taking the Idle Timeout exit.
-
Ensure your Virtual User has a license applied, If you want to use your Virtual User productively. This license can be applied directly in the Virtual User configuration or — in bulk — via Admin > Licensing view.
⮑ Applying the license enables usage of the “Add Virtual User” Workflow Activity. When unlincensed, the activity will be skipped over.
Step 2 - Configuring Tools and Intents
This is the heart of the integration: deciding how to identify customer intent, and which external systems (tools) the Virtual User may reach into to retrieve data during the customer interaction. By describing both intents and tools well enough in your Flow Description, the bot knows which how to orchestrate the whole conversation effectively.
Intents
💡Intents allows you to list the all the different outcomes the bot can detect. You can also think of this as “Customer” intents, but also potential error or escalations, such as “I want to speak to a person”.
✅For each intent you need to provide:
- A mandatory, unique Name (keep it to one word, e.g. order_found, so the model detects it reliably) — this is the label you map to a Workflow exit later.
- A mandatory Description telling the bot when to assign the intent (e.g. “The order was located and the status read back to the caller”).
- The type — an exit intent (ends the session and can be mapped to a Workflow exit) or a non-exit intent (in-conversation only, e.g. parameter capture).
- Optionally up to 10 Parameters the AI can fill with data collected during the conversation.
💡Good to know: MCP Server and Web Requests are independent checkboxes and both optional — your Virtual User can run with neither, either, or both. In either case, if you use them, make sure that you reference the used extensions in your flow description.
Flow Description
The Flow Description is a single free-text field on the Virtual User that tells the model how to drive the conversation when Extension Tools are involved. The model reads it alongside the System Instruction every turn and uses it to decide when to call a tool, which tool to pick, and what to do with the result. Note that the same Flow Description applies to both Web Requests and MCP Servers.
💡 Keep it concrete and step-driven. The model performs best when it can read the description as a numbered playbook rather than as prose:
- Spell out the conversation phases (greet → identify → look up → confirm → close).
- Don't duplicate the System Instructions (role, tone, language) in the tools. The Flow Description is about data and interaction flow, not personality.
-
Avoid ambiguity by naming each tool by its exact label as defined in your Virtual User — “call the
OrderLookupWeb Request”, not “call the order system”. - State when the bot should call a tool, and what to do if the tool fails or returns nothing.
- Keep the field length cap of 5,000 characters in mind.
Example for an order-status bot:
1. Greet the caller and ask for their order number.
2. Call the OrderLookup Web Request with the order number the caller provided.
3. If OrderLookup returns a result, read back the order status and the expected delivery date.
4. If OrderLookup returns no result or an error, apologise, offer to transfer to a human agent,
and end the conversation.
5. After confirming the status, ask whether there is anything else. If not, say goodbye and close.
Never invent an order status. Only state what OrderLookup returns.Attaching Web Requests
✅A Web Request attaches a (previously configured) Web Request definition item to the Virtual User so the model can call it mid-conversation.
- Enable “Web Requests” on the Virtual User. This unlocks the Web Requests sub-section.
- Click Create and pick a Web Request from the Virtual User's Organization Unit (or a parent OU). The Web Request's Name is what the model sees as the tool's identifier — use the same name in your Flow Description.
💡The external HTTP API behind the Web Request can be secured with a reusable Authentication (API Key or OAuth 2.0 Client Credentials). This is configured on the Web Request itself, not on this binding. - Fill in the AI Description for this binding. This is a per-Virtual-User field — the same Web Request can have a different AI Description on every Virtual User it is bound to.
💡 TIPS — AI Description template
💡A vague AI Description is the single most common reason for a bot to ignore a tool it is allowed to use. Three sentences is usually enough. A reliable template says:
- What it does — “Looks up an order by order number in the e-commerce backend.”
- When to call it — “Call this whenever the caller asks about the status, delivery date, or contents of a specific order.”
- What you'll get back — “Returns the order status, expected delivery date, and a list of line items, or an empty result if the order number is unknown.”
Attaching MCP Servers
An MCP Server attaches a Model Context Protocol endpoint to the Virtual User. The server's tools are exposed to the model in real time during the call.
- Enable “MCP Servers” on the Virtual User. At least one MCP Server is required when the toggle is on.
- Click “Create” and fill in:
- Name of the MCP Server (must be unique on the Virtual User — use the same label in the Flow Description)
-
URL (the server's SSE endpoint, e.g.
https://jira.example.com/mcp/sse) - Description
- Authentication — select a reusable Authentication instead of typing a header name and key inline.
💡 TIPS — MCP configuration
- The MCP Description is a Free-text summary of what the MCP server is for and when the model should reach for it (e.g. "Internal Jira instance. Use for any ticket lookup, comment, or transition.").
- In the Virtual User → Flow Description, you can clearly define how the MCP tools are to be used.
☝️Note: The model will follow the order and logic you specify in the flow description, not the order in which the MCP servers were added.
Step 3 - Configuring your Nimbus Workflow
✅Last but not least you need to configure a new Workflows to handle the Audio/Video interaction between Customers and your new Virtual User.
- Head to Nimbus Administration > Configuration > Workflows.
- Design or adjust any existing workflows you want to repurpose.
💡We recommend creating a copy of an existing Workflow so you can switch and test it with ease and return back should something not work as intended. -
In your Workflow, Accept a call as normally.
💡Important: Do NOT add a “Queue” activity unless you want to involve human interaction in your workflow as well (e.g. after the Virtual User interaction). - Connect your Caller to the AI by using the “Add Virtual User” activity. You can find it in the Conversation Handling Activities.
-
Configure the “Add Virtual User” activity as follows:
-
Virtual User: Select the Virtual User you configured above.
💡Note that the Virtual User will greet the Customer with the “Initial Message” field instructions provided. If any Parameters have been retrieved earlier in the workflow, they will be part of that message as well.
💡Outbound calls: when the “Add Virtual User” activity runs inside an outbound-call workflow, the Initial Message is spoken once the call connects — no extra silence before the greeting. -
Map your exit Intents to Workflow exits. Each exit intent you defined on the Virtual User appears here and can be wired to its own downstream path. At least one exit intent must be mapped before the activity can be saved; duplicate mappings are blocked, and an exit intent that is in use cannot be deleted on the Virtual User.
💡This replaces the previous single fixed Success exit. Existing Workflows keep working — their prior Success exit is carried across automatically. - Define a Fallback Parameter which receives the AI's summary of the conversation when the bot cannot resolve the request.
💡If the bot detects none of your exit intents, the activity takes the Fallback exit (there is no longer an implicit default Success).
💡A good way to route this exit is a regular “Queue” step, so a human can take the call instead of the Virtual User.
💡The Parameter can also be shown in the Extensions Service Settings (e.g. within My Sessions) as additional context for the receiving service user.
-
Virtual User: Select the Virtual User you configured above.
- Route the mapped exit Intents and the default exits of the activity (AI Fallback, Failed, Idle Timeout).
- Finally: add the “Disconnect” activity at the end and Save your Workflow.
✅ Testing your Virtual User
- Start a “Test Call” to your Service, either via PSTN or the UPN shown in the General Service Settings.
-
Test the tool-calling behaviour:
- Try happy-path scenarios where the bot should call a specific Web Request or MCP Server.
- Try failure scenarios — caller gives wrong inputs, requests data your tools cannot provide — and verify the bot follows the fallback rules in your Flow Description rather than inventing answers.
- Verify the Intent mapping: confirm each conversation outcome ends on the Workflow exit you mapped it to, and that an unresolved call leaves through the Fallback exit.
- If the bot picks the wrong tool, calls it at the wrong moment, or misuses its output, sharpen the Flow Description and the AI Description on the Tool Extension before changing the tools themselves.
Known Limitations
INC AI and Virtual User Limitations
General note on 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 internet” it is not necessarily given that the Bot will associate “Router, Modem” as your workflow routing exit, unless specifically handled in your Virtual User integration. In this specific example, AI instructions should also cover alternative wordings like “Router, Internet”, to be handled in topics accordingly.
🔎Refer to our Best Practices - Virtual Users in Nimbus for some considerations and risks when using Virtual Users instead of Human interaction.
General Virtual User 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.
- Virtual User Reporting: Sessions involving Virtual Users are not reflected as dedicated User Session. Virtual User session reporting is planned for a later point this year.
Microsoft Copilot Limitations
- Expect processing delays: Processing AI answers takes a few seconds for voice-to-text-transcription, followed by AI processing and then the same transcription back into a voiced response. Luware is trying to minimize the delay on Nimbus call infrastructure, but the dependency on external APIs will always incur this 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|emergencyas identifiers or use more complex Regular Expressions to identify replies.
Nimbus AI Services - Profile: Intent Analyzer
🔎By design (not a limitation or reportable issue):
- The Nimbus Intent analyzer Bot runs on pre-defined prompts. Any usage outside of the descriptions specified under Use Case - Setting up a Nimbus Virtual User for Intent Analysis is not supported.
-
Fallback handling: If a workflow uses exits with multiple parameters, e.g. to collect
customer nameandinvoice number, and only one parameter can be retrieved, the fallback exit is taken.
Nimbus / Custom AI Services - Profile: AI Workflow
🔎By design (not a limitation or reportable issue):
- Failed condition: If either a Web Request connection or MCP server connection fails, the “Failed” workflow activity exit will be taken immediately. Also applies for any other Nimbus-internal or technical error.
- Fallback condition: Any “Fallback” parameters will be updated with the response generated by the AI when a case cannot be handled.
☝️Current limitations, coming with a later update:
- For this profile there currently are no custom exits in the “Add Virtual User” Conversation Handling Activity. You only have Success, Fallback, Failed, Idle timeout.
- There is currently no support for custom Parameters in “Add Virtual User” Conversation Handling Activity.
Custom AI Services - Profile: Open Profile
☝️Current limitations, coming with a later update:
- The use of Extensions Tools (either Web Request or MCP Server) is currently mandatory in this profile. 💡This will be improved in a future update to allow for no tools to be used.
- For this profile there currently there are no custom exits in the “Add Virtual User” Conversation Handling Activity. You only have Success, Fallback, Failed, Idle timeout.
- There is currently no support for custom Parameters in “Add Virtual User” Conversation Handling Activity.