For those of you who don’t know what the soft-phone is, basically, it is a virtual phone (VOIP) where all the calls (incoming and outgoing, also SMSs) goes through computer software and not via a physical phone. In my opinion, this saves a lot of time and money.
But anyway, after reviewing the official documentation I’ve decided to try this feature myself. The documentation is very spread around so it requires to refer to multiple sites and pages in order to complete everything, and if you miss something there is a quite long way back to find your mistake.
So I decided to summarize all the steps in one article.
Download and install the required solution:
First of all, you will need to download a D365 Channel Integration Framework containing the soft-phone solution.
Once done, unzip it on your desktop.
Next, you need a Visual Studio to publish the Soft-phone sample app to Azure. In my case, I’ve downloaded VS Community 2019 (free)
Once VS is installed you can proceed with the next step.
Create free Azure subscription
You will need to publish the soft-phone sample app that is in D365 Channel Integration Framework folder to Azure.
You can get 30days free Azure Subscription with a lot of free services, some of them you can use up to 12 months if you switch after the trial to Pay-as-you-go.
Note that both, the Azure Account and D365 Instance must be in the same tenant.
During the registration, a valid credit card is required but you won’t be charged (trust me, I’ve done this many times).
Once done you will be in your Azure portal dashboard, if not navigate to https://portal.azure.com
Check in the Subscriptions section to confirm your free subscription is activated.
Publish Sof-phone sample app solution to Azure
It is time to upload the sample app to azure so, later on, we can add it to Dynamics 365.
Open the solution SampleInteg.sln using Visual Studio 2017.
In Solution Explorer, right-click on the solution and build the complete solution.
In Solution Explorer, right-click on the project SampleInteg and select Publish.
Here since there is already a resource group selected from the previous owner, select New
You might be prompted to log in to Azure to confirm your Subscription.
Provide validsubscription, resource group, and hosting plan details.
Select Create to create the azure app service, and save the app service URL for future use.
Once published successfully, your app will open in a new window.
Note: this is just a test app so don’t expect anything special, also do not deploy this on production instances. The app is nothing special, and with the help of a developer can be modified according to your needs.
Configure Twilio Client Javascript
Next step is to configure the web client which will service our calls (incoming or outgoing).
You have one free phone number in your trial subscription.
Creation is quite straight forward, just select Country and click Search to search for an available phone number to reserve.
Chose any number that you like from the list of available one.
Note: there are prices next to the phones, in your trial account you have 20$, the phone number coast 3$ and the remaining amount can be used for test calls. Prices vary from country to country for details check:
Once ready, your phone will appear in Phone Numbers area.
Next, you’ll need a front end for this Twilio Client for Javascript quickstart – the HTML, CSS, and, of course, Javascript. You’re welcome to use any kind of front end web technology you want for your own application, but we’ve got a pretty simple little set of code for you to use to get started. Go ahead and download a zipped up copy of the Twilio Client for JS source code, or check out the Twilio Client for JS GitHub repo. We’ll use this code a little bit later after we get the Twilio Functions set up. You’ll need to change the location of a URL in public/quickstart.js to point to your function.
Create the quick start functions, to get you up and running with this quickstart, you can use a template to create your functions. Start by going to the Functions page in the Twilio Console. You can add new functions with the plus button on that screen.
Click on Twilio Client Quickstart template
A new window will Pop-up with TWIML_APP_SID and the CALLER_ID. that need to be configured.
You can get your TWIML_APP_SID from Phone Numbers Section # > Tools > TwiML Apps
CALLER_ID is the phone number that you had to verify at the beginning of the registration process.
Once everything is added, Click Create, and you’ll get two new functions.
We are almost to the end of this exercise, we have a couple more steps before ready to test.
Now you need to point your TwiML app to your function. We need to tell Twilio what to do with incoming voice requests for that TwiML app. Twilio will fire off a webhook to your function, but we need to supply that URL in the Twilio console before it will work.
From Functions section, select Twilio Client Quickstart (Voice calls)and copy your PATH
Once again go to Phone Numbers Section # > Tools > TwiML Apps, and open your App
Paste the PATH to your Voice field and Save the changes.
The last configuration step is to set the URL of your capability token in the front end web application. The subdomain that Twilio uses is unique to your account, so go ahead and find this line in quickstart.js:
The file is located in the folder client-quickstart-js-master > public > quickstart.js
Replace the placeholder (YOUR_FUNCTION_SUBDOMAIN_HERE) with your Twilio Function subdomain, and then save the file.
You can find your Sub-Domain in the Functions section.
Install and Run Local HTTP server to test the service. You can download http-server Node.js module. If you don’t have Node.js installed on your computer, download Node for your operating system first, and follow the directions to set it up – it’s pretty easy!
Once you have Node all ready to go, you can install http-server using this command:
npm install http-server -g
Now, just run the HTTP server in the directory that has the quickstart sample application:
http-server
Setup Dynamics CRM for soft-phone.
Finally, it’s time to setup Dynamics CRM with our sample soft-phone application.
First, go to Dynamics Store and Download Dynamics 365 Channel Integration Framework
Once Successfully installed on the CRM organization, go to Dynamics CRM and select the UCI app called Channel Integration Framework
Create New Channel Provider record and set Name, Label, Channel URL, Enable Outbound Communication, Channel Order, Select Unified Interface App for the Channel (Apps where the soft-phone app will appear, and Security Roles required for the soft-phone app)
For Channel URL, provide the URL as <azure_app_service_url>?base=<crm_base_url>&twa=<twilio_capability_token_url>.
In this sample, the URL would be “https://twiliosampleinteg.azurewebsites.net?base=https://twiliosampleorg.crm10.dynamics.com&twa=https://twilio-sample.twil.io/capability-token”
Finally, it’s time to test the app.
Refresh Dynamics CRM and open one of the apps where you decided to have the soft-phone to appear, in my case, this is Sales Hub.
If you dial a number that is already associated with existing CRM Contact while dialing the number the Contact will open.
You can navigate free in CRM while talking on the phone, you can also take notes during the call, you can convert the call into a case.
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.