Power Virtual Agents Updates: Low-Code Conversational AI
Power Virtual Agents continues to democratize conversational AI development. With recent updates, non-developers can now build sophisticated chatbots that integrate with enterprise systems and leverage AI capabilities.
What’s New in Power Virtual Agents
GPT-Powered Responses
Power Virtual Agents now can generate responses using GPT models:
# Topic: General Knowledge Query
trigger_phrases:
- "Tell me about"
- "What is"
- "Explain"
nodes:
- type: Question
variable: topic
prompt: "What would you like to know about?"
- type: Action
connection: Azure OpenAI
inputs:
prompt: "Explain {topic} in simple terms for a business user."
max_tokens: 200
output_variable: gpt_response
- type: Message
text: "{gpt_response}"
Enhanced Topic Design
Topics now support more complex logic:
# Topic: Order Management
trigger_phrases:
- "Check my order"
- "Order status"
- "Where is my package"
nodes:
- type: Question
variable: order_number
prompt: "What's your order number?"
validation:
type: regex
pattern: "^[A-Z]{2}[0-9]{6}$"
error_message: "Please enter a valid order number (e.g., AB123456)"
- type: Action
connection: Dataverse
operation: GetOrder
inputs:
order_id: "{order_number}"
output_variable: order_data
- type: Condition
conditions:
- expression: "{order_data.status} == 'shipped'"
nodes:
- type: Message
text: "Your order {order_number} has shipped! Tracking: {order_data.tracking_number}"
- type: AdaptiveCard
template: order_tracking_card
data: order_data
- expression: "{order_data.status} == 'processing'"
nodes:
- type: Message
text: "Your order is being processed. Expected ship date: {order_data.estimated_ship_date}"
- expression: "default"
nodes:
- type: Message
text: "I couldn't find order {order_number}. Would you like to speak with an agent?"
- type: TransferToAgent
skill_name: "Order Support"
Integration with Power Automate
Create complex workflows triggered by chatbot interactions:
{
"definition": {
"triggers": {
"When_PVA_calls_flow": {
"type": "Request",
"kind": "PowerVirtualAgents"
}
},
"actions": {
"Get_Customer_Data": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_commondataservice"
},
"method": "get",
"path": "/v2/datasets/@{encodeURIComponent('org')}/tables/@{encodeURIComponent('contacts')}/items",
"queries": {
"$filter": "emailaddress1 eq '@{triggerBody()?['email']}'"
}
}
},
"Check_Loyalty_Status": {
"type": "OpenApiConnection",
"inputs": {
"host": {
"connectionName": "shared_sql"
},
"method": "get",
"path": "/datasets/@{encodeURIComponent('server.database.windows.net')}/tables/@{encodeURIComponent('LoyaltyMembers')}/items",
"queries": {
"$filter": "CustomerId eq '@{body('Get_Customer_Data')?['value'][0]['contactid']}'"
}
}
},
"Return_to_PVA": {
"type": "Response",
"kind": "PowerVirtualAgents",
"inputs": {
"statusCode": 200,
"body": {
"customer_name": "@{body('Get_Customer_Data')?['value'][0]['fullname']}",
"loyalty_tier": "@{body('Check_Loyalty_Status')?['value'][0]['Tier']}",
"points_balance": "@{body('Check_Loyalty_Status')?['value'][0]['Points']}"
}
}
}
}
}
}
Adaptive Cards in PVA
Create rich interactive experiences:
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Order Status: ${order_number}",
"weight": "Bolder",
"size": "Large"
},
{
"type": "FactSet",
"facts": [
{
"title": "Status",
"value": "${status}"
},
{
"title": "Shipping",
"value": "${shipping_method}"
},
{
"title": "Estimated Delivery",
"value": "${estimated_delivery}"
}
]
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "Image",
"url": "${tracking_map_url}",
"altText": "Package location map"
}
]
}
]
}
]
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Track Package",
"data": {
"action": "track",
"tracking_number": "${tracking_number}"
}
},
{
"type": "Action.OpenUrl",
"title": "View Order Details",
"url": "${order_details_url}"
}
]
}
Multi-language Support
Configure bot for multiple languages:
# Settings
languages:
primary: en-us
secondary:
- es-mx
- fr-ca
- de-de
localization:
greeting:
en-us: "Hello! How can I help you today?"
es-mx: "¡Hola! ¿Cómo puedo ayudarte hoy?"
fr-ca: "Bonjour! Comment puis-je vous aider aujourd'hui?"
de-de: "Hallo! Wie kann ich Ihnen heute helfen?"
order_prompt:
en-us: "Please enter your order number"
es-mx: "Por favor ingrese su número de pedido"
fr-ca: "Veuillez entrer votre numéro de commande"
de-de: "Bitte geben Sie Ihre Bestellnummer ein"
Analytics and Insights
Track bot performance with built-in analytics:
# Analytics Configuration
analytics:
track_topics: true
track_sessions: true
custom_events:
- name: order_lookup
properties:
- order_found
- order_status
- name: agent_transfer
properties:
- reason
- wait_time
kpis:
- resolution_rate
- avg_session_length
- user_satisfaction
- escalation_rate
Security and Governance
# Governance Settings
security:
authentication:
required: true
providers:
- azure_ad
scopes:
- User.Read
- profile
data_handling:
pii_detection: true
log_retention_days: 30
mask_sensitive_data: true
dlp_policies:
- name: "Block External Sharing"
connectors:
blocked:
- Twitter
- Facebook
allowed:
- SharePoint
- Dataverse
- Azure OpenAI
Custom Entities
Define domain-specific entities:
entities:
product_category:
type: closed_list
values:
- name: electronics
synonyms: ["tech", "gadgets", "devices"]
- name: clothing
synonyms: ["apparel", "fashion", "wear"]
- name: home
synonyms: ["furniture", "decor", "household"]
order_status:
type: closed_list
values:
- processing
- shipped
- delivered
- cancelled
- returned
date_reference:
type: prebuilt
prebuilt_type: datetimeV2
Integration with Teams
Deploy bot to Microsoft Teams:
# Teams Configuration
teams_settings:
app_name: "Contoso Support Bot"
description: "Get help with orders, returns, and general questions"
scopes:
- personal
- team
- groupchat
commands:
- command: "order"
description: "Check order status"
- command: "return"
description: "Start a return"
- command: "help"
description: "Get help"
message_extension:
enabled: true
type: search
search_commands:
- id: "productSearch"
title: "Search Products"
description: "Search our product catalog"
Best Practices
- Start with common scenarios: Build topics for the most frequent questions first
- Use fallback topics: Always have a graceful fallback when the bot doesn’t understand
- Test with real users: Get feedback from actual users early
- Monitor and improve: Use analytics to identify gaps and improve topics
- Integrate thoughtfully: Only add integrations that provide real value
Publishing and Deployment
# Deployment Configuration
deployment:
environments:
- name: development
url: "https://dev-bot.contoso.com"
auto_deploy: true
- name: staging
url: "https://staging-bot.contoso.com"
approval_required: true
approvers:
- bot-admins@contoso.com
- name: production
url: "https://bot.contoso.com"
approval_required: true
approvers:
- it-leadership@contoso.com
channels:
- teams
- web
- facebook_messenger
versioning:
strategy: semantic
current: "2.1.0"
Conclusion
Power Virtual Agents makes conversational AI accessible to citizen developers while providing the depth needed for enterprise scenarios. The combination of low-code design, powerful integrations, and AI capabilities enables organizations to quickly deploy intelligent chatbots that improve customer and employee experiences.