Configure context variables for bots
Important
Power Virtual Agents capabilities and features are now part of Microsoft Copilot Studio following significant investments in generative AI and enhanced integrations across Microsoft Copilot.
Some articles and screenshots might refer to Power Virtual Agents while we update documentation and training content.
Applies to: Dynamics 365 Contact Center—standalone and Dynamics 365 Customer Service only
This article lists the context variables for Azure and Copilot Studio bots, and how you can configure them in Omnichannel for Customer Service. To understand how to create context variables, see Manage context variables.
The following table contains the list of context variables in Omnichannel for Customer Service that you can use for configuring Azure bots.
Context variable type | Context variable name | Description | How to map in Azure |
---|---|---|---|
Pre-conversation survey | Use the pre-conversation survey question name that you create in Omnichannel for Customer Service. | The system stores responses from the pre-conversation survey as context variables. | Use the following information to map the question name in Omnichannel for Customer Service with the variable type in Azure:
|
Custom context | Use the variable name that you create in Omnichannel for Customer Service or pass using the setContextProvider API. | The custom context variables that you create can be passed through the live chat SDK. | Map the user's response as a JSON to use custom context variable in Omnichannel for Customer Service. |
Conversation | msdyn_ConversationId | Use the context variable that contains the conversation ID for the ongoing conversation and can fetch and perform operations on the record in Microsoft Dataverse. | String: String |
Contact | msdyn_contact_msdyn_ocliveworkitem_Customer | Use this context variable that contains the record ID for the customer (contact) record that is linked to the conversation. | Parse JSON to extract record ID |
Account | msdyn_account_msdyn_ocliveworkitem_Customer | Use this context variable that contains the record ID for the account record linked to the conversation. | Parse JSON to extract record ID |
Case | msdyn_incident_msdyn_ocliveworkitem | Use this context variable that contains the record ID for the case record linked to the conversation. | Parse JSON to extract record ID |
Note
Use the context variable names as defined and don't change them when you author flows in Azure or Copilot Studio bots. Also, be sure to use exact match to pass the value to the context variable because it is case-sensitive. If there's a mismatch, the record won't get automatically identified. More information: Identify records automatically
The following table contains the list of context variables available in Omnichannel for Customer Service that you can use for configuring Copilot Studio bots.
Important
To use the messaging and voice variables, ensure that you first install the extension solutions.
Context variable type | Context variable name | Description | How to map in Copilot Studio |
---|---|---|---|
Pre-conversation survey | Use the pre-conversation survey question name that you create in Omnichannel for Customer Service. | The system stores responses from the pre-conversation survey as context variables. | Use the following information to map the question name in Omnichannel for Customer Service with the variable type in Copilot Studio:
|
Custom context | Use the variable name that you create in Omnichannel for Customer Service or pass using the setContextProvider API. | The custom context variables that you create can be passed through the live chat SDK. | Use the following information to map the custom context variable in Omnichannel for Customer Service with the variable type in Copilot Studio:
|
Conversation | msdyn_ConversationId | Use the context variable that contains the conversation ID for the ongoing conversation and can fetch and perform operations on the record in Microsoft Dataverse. | String: User's entire response. |
Messaging and voice variables | msdyn_CustomerType | Use this context variable that contains the customer type for the account or contact record linked to the conversation. | Select the Omnichannel for Customer Service extension solution variable. |
msdyn_CustomerName | Use this context variable that contains the customer name for the account or contact record linked to the conversation. | Select the Omnichannel for Customer Service extension solution variable. | |
msdyn_CustomerId | Use this context variable that contains the customer ID for the account or contact record linked to the conversation. | Select the Omnichannel for Customer Service extension solution variable. | |
msdyn_CaseId | Use this context variable that contains the ID of the case record linked to the conversation. | Select the Omnichannel for Customer Service extension solution variable. | |
msdyn_CaseTitle | Use this context variable that contains the title of the case record linked to the conversation. | Select the Omnichannel for Customer Service extension solution variable. | |
Voice-only variables | CustomerPhoneNumber | Use this context variable for the customer's phone number in the Telephony activity. | Select the Omnichannel for Customer Service extension solution variable. |
OrganizationPhoneNumber | Use this context variable for the organization's phone number in the Telephony activity. | Select the Omnichannel for Customer Service extension solution variable. | |
Extension method name | va_SurveyConsent | Use this dialog to determine if a customer has agreed to participate in surveys during the conversation. | Use this method to escalate conversation details to Omnichannel for Customer Service. |
va_CustomerLocale | Use this dialog to transfer the user currently talking to the bot to another bot that can speak in a different language. | Set the code by selecting the input variable and using the correct locale code. |
To have your Copilot Studio bot read context variables from Omnichannel, do the following steps:
On the Topics page, select Add a topic and from blank.
Enter a name for your topic (for example, "Set context variables") and save it.
Add a new node to the topic, and select Variable management > Set a variable value
In your new node, under Set variable select Create a new variable.
Open the Variable properties pane by clicking the new variable name. In the pane, set the Variable name to match the Omnichannel context variable's name exactly (it's case sensitive).
In the Reference section, select the ellipses (...) and select Get value from this node if empty. The Copilot Studio bot retrieves the variable value from this node at runtime.
In the Usage section, select Global (any topic can access) and External sources can set values. Copilot Studio accepts data from Omnichannel. Close the Variable properties pane.
In your node, enter a value in To value that matches the data type your bot expects. For example, if your bot expects a string, set Text(""). Copilot Studio falls back to the value that you set here if the data doesn't arrive in the conversation.
Save and publish the changes.
During a conversation, the data from the Omnichannel context variable is set in the Copilot Studio variables and can be used in the bot's logic.
The bot can also set Omnichannel context variables during a conversation. To set an Omnichannel variable from your Copilot Studio logic, make sure that your bot is using the correct variable name and set the value in the "To value" property in your variable management node. Copilot Studio hands off the variable to Omnichannel during transfer to agent. This is often used to link the conversation to a case when the bot escalates the conversation to an agent. More information on how to link records in Omnichannel from this data: Link customer and case to a conversation
The global variables that are created in Copilot Studio can be passed to Omnichannel for Customer Service when a conversation is escalated. For the complete list, see Contextual variables available upon hand off.
Make sure that you have the following details:
- The Omnichannel for Customer Service context variable, such as msdyn_contact_msdyn_ocliveworkitem_Customer.
- The schema details
A copy of the sample schema details is as follows:
Schema:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"RecordId": {
"type": "string"
},
"PrimaryDisplayValue": {
"type": "string"
}
},
"required": [
"RecordId",
"PrimaryDisplayValue"
]
}
}
PrimaryDisplayValue
contains the value from the attribute in the Dataverse entities. The mapping for the entity attributes is as follows:
- Cases: Case title
- Contacts: Full name
- Accounts: Name
Here's a sample context record.
{
"msdyn_contact_msdyn_ocliveworkitem_Customer": [
{
"RecordId": "<GUID>",
"PrimaryDisplayValue": "<FullName>"
}
],
"msdyn_liveworkitemid": "<GUID>"
}
Integrate a Copilot Studio bot
Integrate an Azure bot
Configure bots to escalate and end conversations
Live chat SDK reference