|
Marketo |
Dynamics 365 Marketing |
|
In Marketo, a token is a variable that can be used in email, landing pages, snippets, web campaigns.
{{lead.First Name}} With default value: {{lead.First Name : default :earthling}} |
In Dynamics 365 Marketing, we can add Dynamic or Static Content, Dynamic Text – e.g. {{contact.firstname}} |
|
Different types of Tokens: –
|
Pre-defined dynamic text (Token) (Real time marketing) – Users can create and share pre-defined dynamic text, making it easy for users to personalize emails without knowing the underlying structure required for using dynamic text. Accessing existing pre-defined dynamics text in email –
Creating and adding a new Pre-defined dynamic text.
Content Settings – Set of standard and required values for use in marketing email messages like subscription centre link, social media links, address etc.
To use the Content Settings fields inside Email – Personalization >> Dynamic Content >> Content Settings.
|
|
Snippet – dynamics content blocks that can be used in email and landing pages.
|
Content Block – premade reusable pieces of content that can be used while designing emails, forms, and pages. Can be used for boilerplate texts – terms and conditions, introduction. For generic sections like Headers and Footers. It can include Dynamic Text as well as code, which can be used to create reusable content, which the team can use without knowing the dynamics text or data model of CRM. Outbound marketing and Real-Time Marketing use their own content blocks.
Select Content blocks while designing email to add them.
|
Category: Microsoft Dynamics 365
Fixed – The reference assemblies for. NETFramework,Version=v4.6.2 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application
Recently while trying to use the Power Platform Tools – https://learn.microsoft.com/en-us/power-apps/developer/data-platform/tools/devtools-install , got the below error in Visual Studio 2019. (not supported for VS 2022)

To fix it either you can, open Visual Studio Installer and select Modify and select the appropriate developer pack.


Or as specified in the error message, open https://aka.ms/msbuild/developerpacks, and download the appropriate Developer pack from there.

This fixed the issue –

Hope it helps..
Power Apps Component Life Cycle – Quick look
We can read about the architecture and the life cycle of the Power Apps component here.

Check the screencast – PowerApps Component Life Cycle
Let us see it in action using a sample project.

Launching the test harness, we can see the init executed followed by updateView.

Making any change in the component’s form factor, width, height, or Data Inputs property triggers the updateView method.

Now let us update the index.ts and add a textElement along with an event listener for its change event.
Inside the test harness, when we change the Value of the sampleProperty, if we want the value of the textElement to be updated, we need to use the updateView method to fetch the changed value from the bound sample property field and reflect this new data in the UI.

We can get the value of the sampleProperty from the context and use it to set the textElement value as shown below.

Now let us do the opposite, let us change the value inside the textElement. Here as expected none of the methods triggers.

Here we need to call the notifyOutputChanged method, to notify the host that the component’s output has changed.
On calling notifyOutputChanged, the framework runtime will first call getOutputs to get the value of the bound properties of the component, and then notifies the host.
The host will perform the validation and if the output received is valid it will call the updateView.
But before we do that let us first try setting the value of the sampleProperty in the change event handler of the textElement. Here on changing the value inside the text box, we can see only the change event handler is triggered. No other methods are triggered here as expected.

There is no update in the value of the bound sampleProperty.

This is because we need to call the notifyOutputChanged method to let the host know about the changes made in the value inside the text box.
On calling the notifyOutputChanged and changing the text value this time, we can see the getOutputs being called.

The value remains the same for the bound property and updateView method is not called as our getOutputs method was not returning anything.

Let us update the getOutputs method to return the sampleProperty having the text value.
On changing the textElement value this time getOutputs is called, followed by updateView.

To summarize,
- To notify the host, about the user changes in the UI ècall notifyOutputChanged
è the framework will call the getOutputs
è followed by èupdateView - Host changes the data/properties èupdateView will be called è context passed è we can update the UI as per our requirements
Check the following links to understand more about the life cycle –
https://dianabirkelbach.wordpress.com/2020/03/29/pcf-when-is-updateview-called/
https://dianabirkelbach.wordpress.com/2022/02/28/async-requests-inside-pcf-init-and-updateview/
To learn about PCF –
Getting started with PCF Custom Controls by Danish Naglekar
https://www.youtube.com/watch?v=ZYOHaHUf83Y
https://www.youtube.com/watch?v=o3OW6UW-RMI&list=PLqJfvq4Fy1P5TgPGm8Ny_legkZUk5BfyV&index=2
PCF Academy by Andrew Butenko –https://www.youtube.com/watch?v=YJ9hrKxAhTU&list=PL0WiRFWRFGlQr5tGZdUGUlyTl7Gi1Wb_K
https://bgx.blob.core.windows.net/files/powerplatform/PCFControlGuide.pdf
Hope it helps..
How to – Set up Omnichannel Voice using Azure Communication Service (ACS)
To add Voice Calling (PSTN – Public Switched Telephone Network) connectivity to an app or service, we can buy a number from Microsoft, which acts as a PSTN carrier (based on availability in the region).
This is the easiest way to connect ACS (Azure Communication Services) to PSTN, managed by Microsoft. Here Microsoft will provide the numbers, and there is no deployment or maintenance of the on-premises deployment required for PSTN (Voice Calling).

If Voice Calling (PSTN) is not available in the region or if we want to use a different PSTN carrier we can opt for Azure direct routing. The advantage of Azure direct routing is that we can use a telephony carrier of our choice, by connecting Azure Communication Services to the supported SBC – Session Border Controller.
A session border controller (SBC) is a dedicated hardware device or software application that governs how phone calls are initiated, conducted, and terminated on a voice-over-Internet Protocol (VoIP) network. 
For Direct Routing to work, we could configure products from the certified SBC Vendors, one such example is AudioCodes – Mediant VE Session Border Controller (SBC) from Azure Marketplace.
List of certified SBC Vendors –

SIP stands for Session Initiation Protocol, and is essentially a way to make end connections for data and voice transfers over the internet, similar to HTTP functions for pages on the internet, provides a way to convert voice signals into data that can be decoded by devices used by the caller. The trunk is used to refer to a bundle of phone lines shared between users.
To configure the Omnichannel’s voice configuration using the ACS, navigate to Phone Numbers in the Omnichannel admin center and click on Get started.

The Get started option gives us the option to create and deploy a new ACS resource or select an existing ACS resource.
Get started option will only appear if we have trial has ended, or we have ended it manually or disconnected any existing ACS connection.
https://learn.microsoft.com/en-us/dynamics365/customer-service/voice-channel-acs-resource

With Create new resource option, we can create a new Azure
Subscription, Azure
Resource Group, provide a Resource Name, and can select Deploy to create and deploy the required resource.


For the Use existing resource option, we need to specify the following details.

Note – To enable call recording and SMS service using Azure Event Grid – https://learn.microsoft.com/en-us/dynamics365/customer-service/voice-channel-connect-existing-resource?tabs=customerserviceadmincenter#enable-call-recording-and-sms-services
To create ACS Resource, login to Azure Portal and search for Communication Services.

Once the ACS resource is created, we have the option to configure the Phone Numbers (if we are using the numbers provided by Microsoft) or Direct Routing (for other carriers) as specified earlier.

We’d get the following options while adding Phone numbers –
- Country or Region
- Use Case – application or person.
- Number Type – local or toll free.
- Calling and SMS.

In the Numbers tab, we can find and purchase the number.

For Direct Routing –

In the Session Border Controllers tab, will be specifying the FQDN
Fully Qualified Domain Name of the SBC along with the signal port number.

In the Voice Routes tab, we’d specify the number pattern and the corresponding session border controller that allows a call to be sent to a specific SBC based on the called or dialed number pattern.

On saving the details, it will validate the information entered.

Once we have set up the ACS, next we’d register an application in Azure, these are required details inside Omnichannel Administration App while configuring the ACS in the Event grid app id and Event grid app tenant id.


The remaining ACS details required, we’d get from the ACS resource created earlier.


Enter the details and click on Connect.

Once the connection is successful, select Advanced.
For Direct Routing, select Add number for Bring your own number via Azure Direct Routing (preview)
Note – SMS is not supported with Azure direct routing

Specify details of the required details –

This adds the number to the phone number list and is ready for setup.

Next click on Setup

Select the Setup workstream option there.


Specify other required details like phone number, language, behaviors, etc.



After we have configured the workstream successfully, we can call the number configured to see the Voice Channel in action.
So, for Omnichannel voice to work, we can either use Voice Calling (PSTN) provided by Microsoft or if it is not available or we want a different carrier, we can do it via Azure Direct Routing, which requires appropriate infrastructure in place along with certified Session Border Controller (SBC) and a working connection between SBC to Azure Communication Services.
Helpful links –
https://neilparkhurst.com/2022/02/09/omnichannel-for-customer-service-voice-channel/
Hope it helps..
Setting up Omnichannel Voice using Azure Communication Service
In my previous blog, I detailed how an Omnichannel trial could be created and shared how we could initiate a trial of the native voice experience. The native voice trial provides 60 minutes of voice calling minutes which can be used to evaluate the voice experience. This blog will detail how to configure a number via Azure Communication Service.
Azure Communication Service
Before I provide the steps, I’ll detail what Azure Communication Service is and how this works with Omnichannel. Azure Communication Service is a set of web services which expose the feature set available within Microsoft Teams.
Many contact centers may use a PSTN via a carrier which allows calls to be initiated and routed via a contact center solution to an agent. Microsoft themselves act as a PSTN carrier or allow companies to use third party carriers via a Session Border Controller when setting up their Teams voice…
View original post 159 more words
Workstreams Overview – part 2 – Dynamics 365 Customer Service / Omnichannel
Continuing the previous post, let us now delve deeper into the different options inside each of the workstream types.
Let us first create a workstream of type Messaging – Chat (Persistent) with work distribution mode as Push, and check the various configuration to be done for it.

We are presented with 5 main sections –
- Live Chat (setup).
- Routing Rules – Work classification and Route to queues.
- Work Distribution.
- Bot.
- Advanced Settings

In the case of work distribution as Pick the only change is in the mode displayed, the rest of the settings remains the same.

The Advance settings section has the following sections –
- Sessions
- Agent Notifications
- Context Variables
- Smart Assist Bots
- Quick Replies

These sections remain the same for other Channels as well – Apple Message for Business, Chat, Custom, Facebook, Google’s Business Messages, LINE, Microsoft Teams, SMS, Twitter, WeChat, and WhatsApp.
Only in the case of Chat, if we uncheck
Make Chats Persistent, we do not get the option of Auto Close after Inactivity and Keep same agent for entire conversation as those options apply specifically to the persistent chat.

- Now let us create a workstream of type Record and see the options there.

- Here we can see the options to specify the Intake rules instead of setting up the channel.
- The routing rules section remains the same.
- Work distribution doesn’t have the option of Auto Close after Inactivity and Keep same agent for the entire conversation. This is because here we routing the record and do not have any conversation with the customer.
- The bot is also not available for record-type workstreams.

For Advanced Settings, we only have the option of Sessions and Agent notifications.
The other sections Context Variables, Smart assist bots, and Quick replies are not available that we saw for messaging type workstream, considering we are not having any conversation here.

- Now let us check for the Voice type of workstream.

- Here we get the same options as we have for workstream type messaging except Auto Close after Inactivity and Keep same agent for entire conversation, as expected.

And in advanced settings, the only difference when compared to the messaging channel is that there is no section for quick replies.

In a nutshell,
|
Settings / Options |
Messaging |
Record |
Voice |
Description |
|
Options |
Setup up channel |
Intake Rules |
Setup Voice |
Set up the corresponding channels or intake rules. |
|
Routing Rules |
||||
|
Work Classification (optional) |
Y |
Y |
Y |
Work classification allows us to define conditions and add additional information as output attributes for optimum assignment of the work item. It can be based on Logical rules or Machine Learning models. https://learn.microsoft.com/en-us/dynamics365/customer-service/configure-work-classification
|
|
Route to queues |
Y |
Y |
Y |
In Routing Rules we can define conditions/rules which when matched, route the incoming work item to the queue. If no rules match fallback queue will be used. https://learn.microsoft.com/en-us/dynamics365/customer-service/configure-route-to-queue-rules
|
|
Work distribution |
||||
|
Auto-close after inactivity |
Y * |
N |
N |
We can define the period in minutes (days), after which the inactive conversation will be moved to the closed state.
|
|
Work distribution mode |
Y |
Y |
Y |
Push or Pick as defined while creating the workstream. Cannot be edited.
|
|
Capacity |
Y |
Y |
Y |
Can be either Unit or Profile based https://learn.microsoft.com/en-us/dynamics365/customer-service/capacity-profiles
|
|
Block capacity for wrap up |
Y |
Y |
Y |
By default – Always Block. We can specify Don’t block or from 1 minute to 60 minutes, the duration for which agent capacity is blocked while the conversation is in Wrap Up state.
If we select Don’t block, the agent’s capacity will be immediately released when Conversation moves to Wrap State. Doesn’t apply i.e. capacity won’t reset for End of day capacity profile.
|
|
Allowed presences |
Y |
Y |
Y |
The presence values, which agent can be assigned. Out of the box we have Available, Busy, Busy – DND, Away. We can also define custom presence – https://learn.microsoft.com/en-us/dynamics365/customer-service/presence-custom-presence
|
|
Default skill matching algorithm |
Y |
Y |
Y |
None, Exact Match, Closet Match.
|
|
Keep same agent for entire conversation |
Y* |
N |
N |
If we want the conversation to be assigned to the originally assigned agent when re-initiated after some time
Only available for Push type work distribution. |
|
Bot (optional) |
Y |
N |
Y |
This option allows adding a bot to the workstream. All incoming work items will be routed to the bot first.
Only available for Push type work distribution. |
|
Advanced Settings |
||||
|
Sessions |
Y |
Y |
Y |
We can use out of the box template defined or create our own session template to be used. Within the session template, we can define
|
|
Agent Notifications |
Y |
Y |
Y |
We can use the out-of-the-box notification templates defined or can create our notification template.
|
|
Context Variables |
Y |
N |
Y |
We can define context variables of type Text or Number, which can be used in macros and agent scripts and can also be used in routing rules.
|
|
Smart assit bots |
Y |
N |
Y |
We can configure Bot to provide smart assist suggestions to the agents.
|
|
Quick Replies |
Y |
N |
N |
These are predefined messages, that agents can use to quickly respond to the customers. https://learn.microsoft.com/en-us/dynamics365/customer-service/create-quick-replies
|
*not available for non-persistent chat.
In the next posts, we’d delve deeper into each of the options.
Hope it helps..



























