Menu Close

Author: uk365guy

{How to} Enhance IVR with generative answers optimized for voice in Copilot Studio

Hello Everyone,

Today I am going to share my thoughts on the Enhancing IVR with generative answers optimised for voice in Copilot Studio.

To enhance an IVR with generative answers optimised for voice in Microsoft Copilot Studio, you essentially combine LLM-based generative responses with voice-channel best practices so answers sound natural when spoken by a bot. Below is a practical step-by-step approach used in production IVR systems.

1. Enable Generative Answers in Copilot Studio

In Microsoft Copilot Studio you can allow the bot to generate responses from knowledge sources.

Steps
Open your Copilot Studio bot.

Go to Topics → Generative Answers.

Enable Generative AI responses.

Connect knowledge sources such as:

SharePoint

Public websites

Dataverse

Uploaded documents (PDF/Word)

This allows the bot to generate answers instead of only using scripted topics.

2. Configure Voice Channel (IVR)
To make the bot work as an IVR, connect it to voice channels via:

Azure Communication Services

Microsoft Teams

Dynamics 365 Customer Service

Third-party contact centers (Genesys, Avaya, etc.)

These platforms handle:

Speech-to-text

Text-to-speech

Call routing

3. Optimize Generative Answers for Voice

LLM responses are normally written for text, so you must shape them for spoken IVR.

Use Voice Response Instructions
In the Generative Answers configuration, add instructions like:

Respond in a short conversational style suitable for voice.
Use sentences under 15 words.
Avoid bullet lists and long explanations.
Pause between ideas.
If the answer is long, summarize first and offer to provide more details.
Example transformation:

Normal LLM output

Our return policy allows customers to return products within 30 days provided that the product is unused and in its original packaging.

Voice-optimized

You can return items within 30 days.
The product must be unused and in the original packaging.

4. Add Fallback Logic for IVR

In IVR flows you should always handle uncertain AI answers.

Typical pattern:

User question

Generative Answer

Confidence check

If low confidence → transfer to agent

Use Power Automate actions or topic conditions to:

escalate calls
ask clarification questions
repeat simplified answers

5. Limit Response Length
IVR responses must be shorter than chat responses.

Recommended limits:

Type Length
Primary answer 1–2 sentences
Follow-up details Optional
Total speaking time < 15 seconds 6. Add Confirmation Prompts Voice bots should confirm understanding. Example: “Your order was shipped yesterday. Would you like the tracking number?” This improves call flow and reduces frustration. 7. Improve Voice Naturalness (SSML) Use Speech Synthesis Markup Language (SSML) with Azure TTS. Example:

Your order shipped yesterday.

Would you like the tracking number?

This works with:

Azure AI Speech

8. Monitor and Retrain

Track voice interactions using analytics in:

Copilot Studio analytics

Dynamics contact center insights

Improve by:

Adding missing knowledge

Shortening responses

Adjusting prompt instructions

Example: IVR Flow with Generative Answers

Caller question

Speech to text

Copilot Studio

Generative Answer

Voice optimized response

Text to speech

Caller hears response

That’s it for today.

I hope this helps.

Malla Reddy Gurram aka @uk365guy

Share this:

{How to} Use answering machine detection and proactive engagement tools in Copilot Studio

Hello Everyone,

Today I am going to share my thoughts on how answering machine detection and proactive engagement tools work.

Let’s get started.

In Microsoft Copilot Studio, you can leverage Answering Machine Detection (AMD) and Proactive Engagement tools to automate outbound voice workloads and improve customer interaction efficiency. These features are primarily used within Dynamics 365 Contact Center or Customer Service to handle high-volume proactive outreach.

Answering Machine Detection (AMD)

AMD allows your AI agent to distinguish between a live human and a voicemail system, triggering different automated workflows accordingly.

Configuration: AMD is managed through a specific Answering Machine Detection system topic in Copilot Studio.

Workflow: You can define what happens when a machine is detected, such as:

Leveraging a Message: Use a Message node within the AMD topic to specify exactly what the agent should say to the voicemail.

Ending the Call: Automatically hang up to void nonproductive connections and save costs.

Real-time Outcomes: The system shares call outcomes (e.g., LiveAnswer, AnsweringMachine) in near real time, helping you track campaign efficiency.

Proactive Engagement Tools:

Proactive engagement enables your organisation to initiate outbound calls instead of just waiting for inbound queries.

Dialling Modes:

Copilot: The system dials the customer and connects them directly to the AI agent. Ideal for automated notifications like payment reminders or service alerts.

Progressive: Copilot starts the call to perform basic tasks (like verifying the right person is on the line) before handing off to a human representative.

Predictive: Automatically places calls based on predicted representative availability

Setup Requirements:

Create an Outbound Workstream in the Dynamics 365 Contact Center admin center.

Assign a phone number enabled for outbound calling.

Use the Voice template when creating your agent in Copilot Studio for the best compatibility.

Messaging: For text-based engagement (e.g., in Microsoft Teams), you can use Power Automate Flows to trigger proactive messages or Adaptive cards based on specific business events.

That’s it for today.

I hope this helps.

Malla Reddy Gurram aka @uk365guy

Share this:

{How to } Publish Copilot Agents to WhatsApp

Hello Everyone,

Today i am going to share my thoughts on how to publish the copilot agent to whatsapp channel.

Let’s get started.

To publish a Microsoft Copilot Studio agent to WhatsApp, you must use Azure Communication Services (ACS) as the bridge between your agent and the whatsapp business platform.

1. Prerequisites

Before starting, ensure you have the following:

Azure Subscription: You need an active subscription with an Azure Communication Services (ACS) resource.

WhatsApp Business Account (WABA): A verified business account on Meta’s WhatsApp Business Platform.

Phone Number: A clean, verified phone number specifically for your WhatsApp agent.

Agent Settings: Your agent’s authentication must be set to either “No authentication” or “Authentication manually” (Microsoft sign-in is not supported on this channel).

2. Step-by-Step Configuration

1. Publish YOur Agent: Ensure your latest changes are live by selecting Publish in the Copilot Studio side menu.

2. Navigate to Channels: Go to Settings > Channels and select the WhatsApp tile.

3. Connect to Azure:

a. Select your Azure Communication and the specific ACS resource.
b. Choose the WhatsApp-enabled phone number you wish to use.

4. Deploy: Click Deploy. This process automatically configure the connection between ACS and Copilot Studio.

5. Scan & Test: Once deployment is finished, Copilot Studio will generate a QR code.
Scan this with your WhatsApp device to start a test chat with your live agent.

3. Important Limitations & Tips

Content Restrictions: WhatsApp agents have limited support for Adaptive Cards.
Only “Interactive actions” (up to 3 buttons), “Choice lists”, and “Open URL” cards are supported.

24-Hour Window: You can reply freely to a user within 24 hours of their last message.
To initiate a conversation outside this window, you must use Meta-approved WhatsApp Message Templates.

Troubleshooting: If messages are sent but the agent doesn’t respond, verify that the Event Grid resource provider is registered in your Azure subscription to allow message forwarding.

For detailed step-by-step instructions click here

That’s it for today.

I hope this helps.

Malla Reddy Gurram aka @UK365GUY

Share this:

{How to} Request Information from humans in the loop in Copilot Studio Agent flows

Hello Everyone,

Today I am going to share my thoughts on how to request information from humans in the loop in Copilot Studio Agent flows.

Let’s get started.

In the agent flows in Microsoft Copilot Studio, you can request information from a human (human in the loop) when the agent cannot complete a task automatically. This is usually done by sending a request to a person through approval, email, or Teams using Microsoft Power Automate.

Below are the simple steps.

Step 1: Create or Open an Agent Flow
1. Go to Copilot Studio
2. Open your Copilot Agent
3. Navigate to Agent Flows
4. Click New flow.

Step 2: Add a Trigger

Choose a trigger such as:

1. When an agent calls the flow
2. When a topic triggers the flow

This allows the agent to start the flow when needed.

Step 3: Add a Human Approval Step

In the flow designer:

1. Click + New step
2. Select Approvals
3. Choose Start and wait for an approval

This sends a request to a human (manager, support agent, etc)

Example:

The agent asks a human to approve a refund.

Step 4: Send the Request to a Person

Configure the approval:

Assigned to: email or user
Title: Request from Copilot Agent
Details: Information the human needs.

Example:

Customer requested refund of £50.
Approve or reject?

You can send it via:

Microsoft Teams
Email
Power Automate approvals portal

Step 5: Wait for the Human Response

The flow pauses until the human responds.

Possible responses:

Approve
Reject
Provide additional input

Step 6: Return the Result to the Agent

Add a Condition step:

If Approved -> continue the process.
If Rejected -> inform the user

Example response to the user:

“Your request has been approved.”
“Your request requires further review.”

Example Use Cases

Approving refunds
Escalating to a manager
Verifying sensitive data
Manual renewal of AI decisions

Furthermore: You can also create a human escalation where the agent hands the conversation to live support person in Teams or a helpdesk system.

That’s it for today.

I hope this helps.

Malla Reddy Gurram aka @UK365GUY

Share this:

{How to} Reassign an copilot agent’s owner with Power Platform API

Hello Everyone,

Today I am going to share my thoughts on how to reassign an copilot agent’s owner with the Power Platform API.

Let’s get started.

Here are the simple steps to reassign a Copilot Agent Owner using the Power Platform API.

This uses Microsoft Copilot Studio agents stored in Microsoft Dataverse.

Shorter version:

Get API token

Get botid

Get systemuserid of new owner

Send PATCH request to update ownerid

Step 1: Get the Environment URL

Find your Power Platform Environment URL.

Example:

https://yourenvironment.crm.dynamics.com

Step 2: Get an Access Token

Authenticate using Microsoft Entra ID.

You must obtain a Bearer token to call the Power Platform API.

Scope:

https://yourenvironment.crm.dynamics.com/default

Step 3: Get the Copilot Agent ID

Call the API to list agents.

Get https://yourenvironment.crm.dynamics.com/api/data/v9.2/bots

Response example:

JSON

{
“botid”: “11111111-2222-3333-4444-555555555555”,
“name”: “CustomerSupportCopilot”
}

Copy the botid.

Step 4: Get the New Owner User ID

Retrieve the user you want to assign.

GET https://yourenvironment.crm.dynamics.com/api/data/v9.2/systemusers

Find the systemuserid of the new owner.

Step 5: Reassign the Copilot Agent

Send a PATCH request to update the owner.

PATCH https://yourenvironment.crm.dynamics.com/api/data/v9.2/bots(BOT_ID)

Body:

JSON

{
“ownerid@odata.bind”: “/systemusers(NEW_USER_ID)”
}

Example:

JSON
{
“ownerid@odata.bind”: “/systemusers(99999999-8888-7777-6666-555555555555)”
}

Result:

The Copilot agent is now owned by the new user.

That’s it for today.

Until next blog post
Happy Copiloting

aka @uk365guy.

Share this: