Contents
Table of Contents |
---|
...
The following table visualizes the steps that need to be carried out.
CIF1 | CIF2 | CIF2 + | |
Configure Azure App Registration | X | X | X |
Provision Omnichannel | X | ||
Install Channel Integration Framework from AppSource | X | X | |
Install Voice for D365 package | X | X | X |
Configure Application User in D365 | X | X | X |
Configure |
Agent Experience Profile | X | X | |
Assign users to |
Agent Experience Profile | X | X | |
Update Enreach Cloud User ID | X | X | X |
Click-to-Dial configuration | X | X | X |
Anchor | ||||
---|---|---|---|---|
|
...
For Voice for Dynamics 365 to work, an Azure App registration is needed for authentication purposes. Giving access to your D365 though an Azure App registration does not consume D365 licenses.
Creating app registration
Configuring Azure App registrations is done by the following steps:
Sign in to Azure portal (https://portal.azure.com) From the navigation menu, choose Azure Active Directory and Application registration Choose New Registration from top of the page | Figure 4 Create App Registration |
Fill in a name, for example Voice for Dynamics 365 for the app registration. All the other settings can be left as default. Choose Register. | Figure 5 Register an Application |
Once deployment is done, you should see a similar window than below:
...
Figure 6 Registration done
App registration needs API permissions to be able to authenticate to your Dynamics 365 environment. | Figure 7 Select API Permissions |
Choose Add a permission
Select Dynamics CRM from the pop-up window
...
Tick user_impersonation selection and choose Add permissions
...
Figure 9 Add permissions
Creating a Secret for app registration
For authentication purposes, a client secret is needed.
Info |
---|
Since Microsoft limits the expiration of secret keys created on the user interface to 2 years, the client secret |
...
should be added using |
...
Azure PowerShell or Azure CLI script. |
Navigate to main properties of App Registration by clicking Overview on the left
Copy the value of Object ID attribute to clipboard
...
Figure 10 Copy Object ID
Replace OBJECT_ID in the following script with the copied value
Code Block | ||
---|---|---|
| ||
Connect-AzureAD |
...
$startDate = Get-Date |
...
$endDate = $startDate.AddYears(100) |
...
$aadAppsecret01 = New-AzureADApplicationPasswordCredential ` |
...
-ObjectId OBJECT_ID ` |
...
-CustomKeyIdentifier 'Voice' ` |
...
-StartDate $startDate ` |
...
-EndDate $endDate |
...
Write-Output $aadAppsecret01 |
Running Azure Powershell via Cloud Shell in Azure portal
Open Cloud Shell by clicking the icon on top menu bar
...
Channel configuration for CIF2 is maintained by the Deployment Package. However, the channel itself must be added to an Application Agent Experience Profile.
To do it,
|
---|
...
In top-righ corner, select the environment you are adding the channel to.
...
Select Apps on the left menu.
...
Select the ellipses next to Omnichannel for Customer Service or Customer Service workspace.
...
On the menu that appears, select App profile manager.
...
|
---|
...
On the app profile select the Channels tab.
...
Click Add channel providers.
...
In the search box, type “voice”.
...
|
---|
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
...
Enreach Cloud User ID
Open Voice Configurator App
...
Figure 29 Voice Configurator App
...
Wait couple of seconds and Enreach User Ids should appear on the user list for the users that have same email address than in Enreach Cloud.
...
Figure 31 Enreach Cloud User Id
...
After updating the ids, if some user is missing the Enreach User id, then you need to manually update the correct Enreach Cloud Email to Enreach User Email field on the user record:
Figure 6 User record Voice for Dynamics 365 settings
Enreach User Id – unique identifier of the user in Enreach Cloud
Enreach User Email (optional) - should be filled in if email user in D365 differ from Enreach Cloud
Anchor | ||||
---|---|---|---|---|
|
...
Agent Experience Profile (CIF2)
After creating the Application Profile and Channel Provider in PowerApps Portal according to Microsoft’s instructions Agent Experience Profile and Customer Service Admin Center (see chapter 1.5.1.2 Configuration for Channel Integration Framework 2.0), users who will be authorized to use the phone widget need to be assigned to the newly created Application Profile.
To do this, click Assign Users on the top menu on Application Profile editor.
A view will open in Dynamics Unified Interface. Click Add Existing User and select the user(s) to be added
...
.
...
use the phone widget need to be assigned to the Agent Experience Profile.
...
To do this, click Edit next to the user list on Agent Experience Profile page.
On the Edit Users pop-up, click Add users.
Select the user from the list you want to add to the Agent Experience Profile. You can also search for the user in question.
Click Add at the bottom of pop-up.
...
Anchor | ||||
---|---|---|---|---|
|
...
Phone Call Synchronization (Enterprise Calls)
Phone Call Synchronization settings are in General Settings -> Phone Call sync settings view:
...
Figure 33 Phonecall Sync Settings
...
...
CallDurationLimit - Minimum duration of calls (in seconds). If the duration of a call is below this limit then the call is not synchronised to Dynamics.
CallStartMargin - value in seconds, used to set a range of searching existing phone calls, to avoid creating duplicates.
DefaultCrmAssignee - Enreach user id, which is set as the owner of a phone call, in case user Enreach user was not found in D365. Current value e.g. fbc423f5-74f9-e911-80e0-…
...
Open Voice for D365 Configurator app
Navigate to User Settings
From the list, find your API user (see 1.2 Configure Azure app registration)
Open the user record and set the Enreach email of API user to Enreach Cloud User Email (e.g. mycompany.apiuser@mycompany.com). Enreach support can help you to have this value.
After saving the record, Enreach Cloud User Id of the user gets populated
Copy the id
Navigate to General Settings -> Phone call Sync Settings -> DefaultCrmAssigneetDefaultCrmAssignee
Paste the id to Value field and save the record
...
Note:Users mobile number needs to be saved to User form in Dynamics 365 for all users that are going to need their phonecalls to be synced from mobile to Dynamics 365. By default calls that are classified as Work calls (Call information Privacy setting in Voice Center side) are synchronized. Unclassified and Private calls are not Synced to D365.
Anchor | ||||
---|---|---|---|---|
|
...
Callback Synchronization
Callbacks are synchronized from Enreach API into Dynamics 365 by an Azure WebJob, hosted in Enreach’s Microsoft Azure tenant, maintained by Enreach. Application retrieves callback requests from Enreach API, transforms data into corresponding D365 format, maps to D365 contact/account/lead, and creates corresponding phone call records in D365.
...
Callback functionality can be configured for organizations that receive callback requests e.g. for Sales or Customer Service purposes to reconnect with the customer at a more suitable time.
...
Callback Syncronization configuration
Note: Callbacks can be configured only after you get a confirmation from Enreach.
By going to General Settings area within Voice for D365 Configurator app and selecting Callback Sync Settings view, the default subject of callback request phone call activities can be adjusted by amending the value of CallbackRequestDefaultSubject setting.
...
To configure callbacks in Dynamics 365, at least one callback profile needs to be added with the following (example) settings:
...
Callback List: lookup to a virtual entity, which is retrieved from Enreach API.
Queue: lookup to OOB D365 entity Queue. Defines to which queue callbacks should be assigned to.
Ownership Rule: controls how callback requests are assigned to users:
API User: callback requests will be owned by the API user (application user)
Owner of Queue: owner of callback requests will be identical to owner of target queue
Phone Call Subject: the subject set to phone calls created by the integration. It can optionally be specified here, on callback profile level. If no value is given here then the global setting is used (see above).
Duplicate Handling Rule: specifies how multiple callback requests from the same number are handled
Bundle calls: All callback requests are synced to Dynamics. If at the same time more than one open callback requests exist, the calls are linked to each other and can be seen on Phone Call form.
Ignore additional calls: Additional callback requests from the same number within the same call queue are ignored, only one callback request is created in Dynamics
Synchronization method: See chapter 1.5.4.1 Synchronization methods.
Age Time Unit: A unit of the time-period, can be Days, Hours or Minutes. Controls the size of time window when querying callbacks from Enreach API. Visible in case of certain synchronization methods only. See chapter 1.5.4.1 Synchronization methods.
Callback Age: Number value of defined periods in the previous field. Visible in case of certain synchronization methods only. See chapter 1.5.4.1 Synchronization methods.
...
Polling: Dynamics fetches callbacks from Enreach API every minute. The age of callbacks retrieved is specified by Age Time Unit and Callback Age fields.
Webhook: Enreach API pushes callbacks to the webhook listener web service of Voice for Dynamics 365. Provides more efficient operation in case of large number of callbacks.
Webhook backed with polling:Same as webhook, but polling on a regular basis is also active as a backup. If callbacks are for any reason left behind by webhook sync, the service executed on a regular basis will still synchronize those.
Anchor | ||||
---|---|---|---|---|
|
This section applies to synchronization methods Polling and Webhook backed with polling.
...
No other actions are needed to set up polling sync. After the callback profile has been created and the service picked up the new settings, synchronization starts automatically.
Anchor | ||||
---|---|---|---|---|
|
Webhook synchronization is not enabled on the back-end services by default. To make webhook sync work, additional actions must be taken by Enreach staff to configure integration through webhook listener.
...
Navigate to customize the Unified Interface App (one or many) that your organization uses in your Dynamics 365 environment.
Open in App Designer (click the three dots on the right-side corner of the App)
...
Figure 36 Open in App Designer
Add Phone Call table to the list of pages, if it is not already included
Change the Main form to Voice for D365 – Phone Call
Include Quick View and Quick Create Forms to the app solution.
...
Save and Publish
Anchor | ||||
---|---|---|---|---|
|
...
The API has to accept data in JSON format according to the following schema:
{
"type": "object",
"properties": {
"anum": {
"type": "string"
},
"bnum": {
"type": "string"
}
}
}
Example payload:
{
"anum": "+35850454564", // phone number of caller
"bnum": "+35840675644" // phone number of pool the call is in at the moment
}
Business logic will then find the caller in Dynamics CRM based anum and determine the needed action. Phone numbers have to be saved to CRM in the correct format, with no spaces or other characters, and starting with international calling prefix (plus sign). If phone numbers happen to be saved to CRM in local format then by removing first few (3-4) characters of anum, the rest can be matched to CRM data using contains comparison.
...
When the phone number of target queue has been determined by the business logic, it is returned as an HTTP response.
Example payload:
{
"InitialTarget": "+35853445657", // phone number of target queue or agent
}
Things to notice:
If no redirection has to be done (e.g. customer not found) then HTTP 204 No Content response must be returned
Returning the same bnum from the request as InitialTarget is forbidden because it would cause an infinite loop in Enreach cloud. In such a case returning HTTP 204 is recommended.
...
Anchor | ||||
---|---|---|---|---|
|
OC state | Web Phone state |
AVAILABLE | Available (0) |
BUSY | Busy (1) |
BUSY_DO_NOT_DISTURB | DND (2) |
OFFLINE | OffWork (3) |
AWAY | Away (5) |
When the agent is receiving or making a call, Omnichannel status is se to Do not Disturb, to prevent Unified Routing from distributing any work item to the user during a call.
...
The feature is implemented within the following built-in JavaScript plugins:
Plugin | Event | Purpose |
Enreach.Plugins.HandleOCPresenceChange | onPresenceChange | Mirrors OC presence to WebRTC |
Enreach.Plugins.HandleWebRTCPresenceChange | user-status-changed | Mirrors WebRTC presence to OC |
Enreach.Plugins.OCPresenceDND | call-incoming call-answered call-started | Saves the value of current OC presence, then changes OC presence to DND |
Enreach.Plugins.OCPresenceReset | call-ended | Resets OC presence to the saved value |
All the plugins above are deployed automatically to the system and are by default enabled, no need to configure the feature in any way.
Anchor | ||||
---|---|---|---|---|
|
If everything was set up correctly, you should see the Voice for Dynamics 365 sidebar in the configured applications. Inbound& outbound calls, automatic phone call activity creation, Click-toDial and callback handling (if configured) are now available for the end users.
...
Figure 40 Voice for Dynamics 365, Customer Service Workspace (CIF2) (On the left side of Dynamics 365 UI)
...