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 AudioCodesMediant 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.

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 –

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.acsad

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 –

Hope it helps..


Solved – Disabled Turn on unified routing option in Dynamics 365 Customer Service Hub

Recently while trying to provision Unified Routing from Dynamics 365 Customer Service Hub in one of our trial environments (Service Management >> Service Configuration >> Unified Routing – Turn on unified routing.),

even after providing the consent multiple times (by clicking on Provide consent, with Global Admin role)

it kept coming as disabled and kept asking for providing the consent.

Opening in in-private browsing or a different browser didn’t fix it.

Clearing the cache also didn’t help – Empty Cache and Hard Reload

The trick that worked here was creating a workstream record

which also triggered the provision of Unified Routing 

And after our workstream record got created,

we could see the unified routing enabled successfully.

Hope it helps..


Understanding Queues in Dynamics 365 Customer Service (refresher)

  • What are Queues?

Queues are containers to store, organize, prioritize and monitor the progress of work items or queue items.

  • Which entity/table can be enabled for the queues?

All customizable entities can be enabled for queues.

Below we are enabling it for the lead entity.

Enabling it for the lead now allows lead records to be added to the queue.

  • By default, which entities are enabled for Queue?      Appointment, Campaignactivity, CampaignResponse, Email, Fax, Incident. Letter, PhoneCall, RecurringAppointmentMaster, ServiceAppointment, SocialActivity, Task
  • How do we create a Queue?

A queue is automatically created for each user and team. They can also be referred to as system queues as they are created by the system.

Below is the Queue created for each of the users.

User Queue –

Team Queue

The Team queue will have the same members as in the team.

Adding and removing the members from the Team will add and remove the members from the Queue also.

However it is not vice versa, that is, adding or removing members from the queue will not remove it from the team.

Here we are removing User 5 from Team’s queue –

On removing the member from the queue, the member is still there in the Team.

Adding user 6 in the Team will add it to the queue’s member.

The above automatically created queue is of type Private.

The private queue for the user is only available to the user and the private team queues are visible to only the team owner and members of that team.

  • What are the different types of queues?

The queue can be either of type private or public.

Public queues are available across the application and are created when you need work to be acted upon across the different users, unlike Private queues whose queue items are only accessible to the members of that queue.

E.g. one public queue can be created for high-priority cases, others could be for lesser priority items or there could be different public queues based on geography or product.

  • How do we create queues?

To create Queues, navigate to Service Management >> Queues in Customer Service.

Select New.

Below we have created a Public Queue.

Notice that we do not have the option to add members to a public queue, unlike a private queue.

Also, incoming email value can be specified for the queue, and based on the email settings – queue items would be created for the mail received.

Check below article for more details on the same –

  • Now with the queue created private and public both, how do we add records/items to it?

Say we want to add a particular lead record, here we can navigate to view for the lead or open an individual lead record and select the option Add to Queue

By default, it loads the Business Queues

Below are the other Lookup Views available –

Let us assign it to the My Sample Public Queue we created earlier.

Back in the Queues area, we will have Items I am working on System View and Queues I’m a member of filter set by default.

As those are lead records are not yet picked for working on them, they are not available in the above view.

Let us change it to either All Items or Items available to work on and filter to either My Sample Public Queue, All Queues, or All Public Queues for the lead records / queue item to show up.

We can see the queue items (lead records) available to work on.

  • How can we change the default view for the Queue Items?

By using the Set current view as my default option.

  • Can we create more system views or hide the existing ones?

Yes navigate to View (Queue Items) inside the customization area, from there we can create new views, edit, activate, deactivate existing views.

E.g. we can create a new public view, that has filter criteria to show only the records of type lead.

  • How do we pick the items from the queue to work on?

Using the Pick command.

  • What happens when we pick a record from the queue?

A dialog box appears which informs that the item will be assigned to you and also the option to remove the item(s) from the queue.
Here we have selected the lead record with Title – Kim Abercrombie.

Let us leave it at No and click on Pick.

We can see the owner getting updated.

And the below details in the queue item record.

Worked by, Entered Queue and Modified on details updated.

And also as we had opted No for Remove the item from the Queue.

The item will be available on All Items view, but won’t be available on Items available to work on.

  • What happens when we Release the Item?

A dialog box appears that informs that the item will be assigned back to the queue’s owner and other members can pick up.

As expected the Item is added back to the queue.

And the Worked By field is set as blank for the queue item.

Also, the owner of the record is set to the queue owner.

  • What happens when we Remove the record instead of the Release command?

Now let us pick the same lead record again, and this time we will Remove it instead of Release.

This Remove option removes the Queue Item (a lead record) from the Queue. (My Sample Public Queue) in this case.

On checking the Queue Item Details for the record, we will get the below message.

Get all the details here –

Also check –

Hope it helps..

%d bloggers like this: