Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

Table of Contents

...

The following table visualizes the steps that need to be carried out.

CIF1

CIF2

CIF2 +
Omnichannel

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

Channel Provider in App Profile Manager

Agent Experience Profile

X

X

Assign users to

Application

Agent Experience Profile

X

X

Update Enreach Cloud User ID

X

X

X

Click-to-Dial configuration

X

X

X

Anchor
_Toc134179478
_Toc134179478
1.1 Installation Prerequisites

...

Figure 1 AppSource Dynamics 365 Channel Integration Framework

Image RemovedImage Added

Figure 2 Agree to Terms

...

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

Image Modified

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.

Image Removed

Image Added

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.

Choose API permissions from the navigation panel

Image Modified

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
languagepowershell
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

...

  • Right-click on DeploymentPackage.dll and verify that the file is not blocked. If it is, unblock and then apply. Otherwise, might an error message might occur during the deployment (no solution found).

  • Then run PackageDeployer.exe and go through the standard wizard.

  • Wizard will guide the user through all the needed steps for installation.

Image RemovedImage Added

Figure 13 Package Deployer Wizard

...

Figure 27 Active Channel Providers

Image RemovedImage Added

Figure 28 Voice Channel Provider Configuration

...

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,

  • Sign in to

...

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.

...

  • Dynamics.

  • Switch to Customer Service Admin Center app.

  • On the left menu, click Workspaces within Agent experience section.

  • In the right pane, click Manage next to Agent experience profiles.

  • Select your Agent Experience Profile or create a new one if you don’t have any custom app profile yet

...

On the app profile select the Channels tab.

...

Click Add channel providers.

...

In the search box, type “voice”.

...

  • . It is recommended to create a dedicated profile for Voice for Dynamics 365 by Enreach.

  • Within Channel providers section of Agent experience profile editor (at the bottom-right of the page), click Edit.

  • Below Third party voice channel providers, open the drop-down and select Voice for Dynamics 365 by Enreach item.

  • Click Save and Close.

Image AddedImage AddedImage AddedImage Added

Anchor
_Toc134179489
_Toc134179489
1.5.2 Users

Anchor
_Toc134179490
_Toc134179490
1.5.2.1 Update

...

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.

...

in Enreach Cloud

...

.

...

Image Added

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
_Toc134179491
_Toc134179491
1.5.2.2 Assign users to

...

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 Agent Experience 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

...

.

...

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
_Toc134179492
_Toc134179492
1.5.3

...

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
_Toc134179493
_Toc134179493

...

1.5.4 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:

Image Modified

...

  • Callback

...

  • 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
_Toc134179496
_Toc134179496
Setting up polling sync

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
_Toc134179497
_Toc134179497
Setting up webhook sync

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
_Toc134179499
_Toc134179499
1.5.6 Dynamics 365 Click-to-Dial configuration

...

  • Go to form customizations, then target form

  • Select the field properties for the field.

  • Choose Controls tab and add a new control, choose Channel Communication Control.

  • Select the radio buttons to Channel Communication Control

Image RemovedImage Added

Figure 38 Channel Communication Control

...

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
_Hlk132188992
_Hlk132188992
When user status is changed when not in a call, status is mirrored between Omnichannel and Web Phone according to the following mappings:

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
_Toc134179506
_Toc134179506
1.8. Test Voice for Dynamics 365 functionality

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)

...

Figure 41 Voice for Dynamics 365 Model Driven App (CIF1) (on the right side of Dynamics 365 UI)

1

I