Category Archives: CRM

Call Recording Integration

Call Recording Integration

Have you requirements like these?

  • You want agents to be able to pause a call recording in progress.
  • You are tired of trying to find the matching call recording for a conversation logged in CRM.
  • Users want to be able to easily listen to call recordings of previous calls to a customer.
  • You want to integrate with recording analytics, like gong.io or Microsoft Conversation Analytics.
  • You want to upload call recordings to your own storage.

Dynamics Telephony Client (DT Client) can help with all of these requirements.

NOTE: The Call Recording features described here are dependant on the API of your Call Recording system. All features are supported on Asterisk, FreePBX and our own phone system (DTPS). Other phone systems may be supported. Please contact us for more details. If your system is not supported, we will make you an offer to connect your Call Recording API to our DT Client.

Recording link in CRM – In the call log that the DT Client automatically creates for every call you make or receive, a link to the call recording in your call recording storage will also be populated. You can click on the Audio Control to play the recording, or use the URL to download the recording to your PC. Access to the recording can be controilled via CRM roles applied to forms that display the URL or Audio Control.

Recording pause-resume control is available in the DT Client. This control can be hidden if you do not want users to have this capability.

Recording Upload. The DT Client will trigger upload of your recordings:

  • The upload can be to analytics platforms such as Microsoft Conversation analytics, or gong.io
  • The upload can be to storage such as Azure or FTP.
  • The recordings can be stereo or mono. Some analytics applications require stereo.

Create a Dialer Campaign

Use this procedure to add a set of accounts, leads or contacts to a queue for Dynamics Telephony to autodial them. You should already have a shared queue prepared – e.g. Priority Leads, or you can use the users personal queues, e.g. <John Smith>

NOTE use the original Advanced Find available in Advanced Settings. Otherwise, you will not get the extra phonecall fields indicated below. If you do not get the extra fields, then you can bulk edit the phonecalls created to add the extra field values. These field values allow your views to find campaign calls easily.

Steps:

  • Advanced Find the records (Leads, Contacts, Accounts) you want to add to the campaign.
  • Click Create Quick Campaign
  • Enter a name of the campaign
  • Select activity type as Phone Call
  • Check “Add created activities to a queue
  • Select the queue you want to use
  • NEXT
  • Enter a Subject for the phonecalls
  • Enter 1 as the Attempt for the phonecalls
  • For Queue, select the same queue as above.
  • Select YES for Dynamics Telephony Call
  • NEXT
  • Create

Phonecall Data Details

Dynamics Telephony will create a phonecall record for every inbound and outbound call it handles, and write detailed call data to it. The fields used are a mixture of standard and custom (those beginning with cts_) fields, as follows

  • Items marked with * are only available when server-side integration is enabled.

Activity Status (statecode) The phonecall could be open (e.g. a callback or a queued dialer call), completed, or cancelled (* e.g. an abandon callback that was cancelled due to the customer calling in again).

Actual End (actualend) Date and time the call ended at, after any wrap time.

Actual Start (actualstart) Date and time the call started at, i.e. started to be offered to the user.

Alerting Time (cts_incomingtime) The number of seconds the inbound call was ringing the users phone before it was answered.

Arrival Time * (cts_arrivaltime) The date and time the inbound call first arrived into the phone system. From this time, the call will probably have queued before being presented to the user.

Attempt (cts_attempt) For repeated attempts to contact a customer, via automatic (e.g. No Answer) or user initiated callbacks.

Call From (from) Lookup to the customer (inbound calls) or user (outbound calls) that started the call.

Call Outcome (cts_outcome) The outcome of the call. It might be an automatic outcome (e.g. No Answer), or a user chosen outcome (e.g. Callback, Not Interested, etc.)

Call Tag (cts_calltag) This is not used by the DT Client. You can use it to tag the call.

Call To (to) Lookup to the customer (outbound calls) or user (inbound calls) that was called.

Created By (createdby) The user or process owner that created this call.

Created On (createdon) For inbound and click-to-dial calls, the date and time the call was started. For dialer calls, the date and time the call was created – usually some time before it was presented to the agent for dialing.

Description (description) The notes for the call. Part of the note can be auto-created by Dynamics Telephony Client.

Direction (directioncode) Inbound, or outbound for click-to-dial and dialer calls.

DNIS (cts_dnis) The DNIS (number the caller called for inbound calls) or queue or skillset for inbound calls.

Due (scheduledend) The time a callback should be made at. This is filled by the DT Client depending on the Call Outcome. For dialer calls, the process creating the call might fill this too.

Duration (actualdurationminutes) The total duration of the call in minutes, including any wrap time.

Dynamics Telephony Call (cts_is_dt_call) A boolean indicating this phonecall was created by DT Client, or a process that wants to set this to true.

Hold Time (cts_holdtime) The number of seconds this call was put on hold by the user. If the call was put on hold multiple times, these are summed here.

Inbound Queue * (cts_inboundqueue) The name (or number if no name) of the queue the inbound call arrived on.

Last On Hold Time (lastonholdtime) Time and date the call was last put on hold by the user.

Left Voice Mail (leftvoicemail) If the user selects an outcome for the call, that is configured to “Tag as voicemail”, then this boolean field will be set.

Modified By (modifiedby)

Modified On (modifiedon)

Offer Time (cts_offertime) For dialer calls, the number of seconds the call was offering to the user before they clicked accept, and entered the Preview state.

Original Phone Call (cts_originalphonecall) A lookup to the first call in a chain of call attempts to contact a customer.

Outbound Route (cts_outboundroute) The name of the outbound CLI (Calling Number) used by this outbound call.

Owner (ownerid)

Pause Time (cts_pasuetime) For dialer calls, the number of seconds the user had the call in Pause state. Pause is when the Preview or Wrap timers are paused.

Phone Number (phonenumber) The callers phone number (inbound), or the phone number a user called (outbound)

Preview Time (cts_previewtime) For dialer calls, the number of seconds spent previewing the customer record before the dialer auto-dialed the call.

Previous Phone Call (cts_previousphonecall) A lookup to the previous call in a chain of call attempts to contact a customer.

Queue (cts_queue) For dialer calls, a lookup to the CRM Queue that holds (or held) the queueitem linked to this phonecall.

Recording URL (cts_recordingurl) A URL link to the audio recording of this call. Display it on a CRM form in URL format and you will be able to cick it to follow it.

Regarding (regardingobjectid) Lookup to the customer record.

Ringing Time (cts_ringingtime) For outbound calls, the number of seconds the call was ringing before the customer answered, or the user hung up the call.

Status Reason (statuscode) Open or received (the call was completed).

Subject (subject) The subject text of the call. Often this is filled automatically by the DT Client.

Talk Time (cts_talktime) The number of seconds the user spent actually talking. Excludes, for example, hold time, wrap time etc.

Total Time (cts_totaltime) The number of seconds for the call, from the moment it was offered/presented to the end of Wrap Time

Wait Time * (cts_waittime) The number of seconds the inbound call was waiting in the inbound queue on the phone system, before it was presented to a user.

Wrap Time (cts_wraptime) The number of seconds the call was in Wrap state. Wrap, when configured, starts when the call is hung up. Wrap time is after call time for making notes etc.

Click-to-call for any phone.

This is a standalone feature that does not require the Dynamics Telephony Client.

This feature allows you to click on any phone number in a Dynamics 365 CRM entity, and the call is automatically dialed for you and ALSO logged in CRM for you automatically.

The system first rings your own phone (mobile, landline, smartphone app, anything). When you answer that, the system will bridge in the number you clicked on. So, no special integration or settings are required to get going. Simply provide your own phone number and you are ready to go.

CIF_C2D_01

Feature Highlights
  • Works on phone numbers within the following records: Contacts,  Accounts,  Phonecall activities,  Leads,  Opportunities, and Cases.
  • You can set your “Calling Number” to any phone number that you own.
  • Logs each call in CRM
  • Pops a quick-form for adding a note to the call.
  • Quick-form includes a Mark Complete button to save the note and complete the phonecall activity
  • Enable just on the CRM User Roles you want
  • Enable just on the CRM Apps you want.
User Guide
  1. You will know this feature is enabled for you by the presence of an expand-button  ( < ) just under your name – top right of the CRM page.
  2. When you click on the phone icon beside a phone number, the system will dial it.
  3. A panel will open on the right, to allow you change the call log. You can change the subject or notes (Description) of the call
  4. Click Mark Complete in the side panel when done to save the call log. the panel will close (hide).








In-queue callback offer

You can allow callers to your queues to hangup and instead receive a callback from an agent. You could do this when the queues are busy or out-of-hours. The callback request is presented in CRM as an open phonecall, with the callers details. Click on it to make the callback.

Feature Details

When a Caller is in a Queue they will be prompted with a queue callback feature by pressing 1.

  • At the start the service will test if CRM is available.
  • If unavailable – Play “I’m sorry, this feature is not available, please try again later”. Or this can fail silently.
  • If available – Play Caller ID number back to the caller, then play “if you want to use this number, please dial 1 or if you want to enter a new number, please dial 2”.
  • Dial 2 to enter a new number – The new number can be setup for national or international restrictions. You have 3 attempts to get a correct number following the restrictions, on the third attempt you will be disconnected. On successful entry of a new number, it will play the number entered back to the caller and ask “is this correct please dial 1”. If it is not correct the caller can dial a new number again.
  • After the caller has dialed a new number or accepted their Caller ID as the number used for a callback, they will be prompted to record their name, a short message and press pound key when they have completed.
  • The  Queue Number (the Queue that was called), the Called Number (Company’s Number), Caller ID Number (Caller ID or updated Caller ID), Original Caller ID (Caller ID of the caller which cannot be changed), Date and Time and the recording of the caller will be sent to CRM. The phonecall record in CRM will have all the details for users to make the callbacks.
  • On a successful completion of the callback feature – Play “You will be call backed when your position in line has been reached, Goodbye”
    • On an unsuccessful completion – Play “I’m sorry, this feature is not available, please try again later”.

All playback features are fully customizable and new recordings can be uploaded to replace any system recordings.








CallBack Feature for Out of Office Hours

You can provide your customers with a callback facility when your offices are closed. This will allow your customers to request a callback when you are back in the office. The callback is easy to follow-up on as it is in CRM as an open phonecall activity. Just click on it to call the customer back.

Feature Details

When a Caller Dials out of hours they will receive callback feature.

  • At the start, the service will test if the connection to CRM is available – for storing the callback request.
  • If unavailable – Play “I’m sorry, this feature is not available, please try again later”. You can disable this and simply fail silently.
  • If available – Play out of office hours message which is pre-recorded, for example:  “Our offices are now closed please stay on the line so we can call you back when we are available”.
  • Playback Caller ID number back to the caller, then play “if you want to use this number, please dial 1 or if you want to enter a new number, please dial 2”.
  • Dial 2 to enter a new number – The new number can be setup for national or international restrictions. You have 3 attempts to get a correct number following the restrictions, on the third attempt you will be disconnected. On successful entry of a new number, it will play the number entered back to the caller and ask “is this correct please dial 1”. If it is not correct the caller can dial a new number again.
  • After the caller has dialed a new number or accepted their Caller ID as the number used for a callback, they will be prompted to record their name, a short message and press pound key when they have completed.
  • The Called Number (Company’s Number), Caller ID Number (Caller ID or updated Caller ID), Original Caller ID (Caller ID of the caller which cannot be changed), Date and Time and the recording of the caller will be sent to CRM.  Now you will have a record in CRM of the callback request and users can use that to make the callback.
  • On a successful completion of the callback feature – Play “Goodbye”
    • On an unsuccessful completion – Play “I’m sorry, this feature is not available, please try again later”.

All playback features are fully customizable and new recordings can be uploaded to replace any system recordings.

Setup Omnichannel Chat

These are notes to quickly set up Microsoft Omnichannel for chat.

The overall process is add a snippet of code to your website, enable agents for chat and understand the “Capacity” number. If you do not have Omnichannel, then get a free trial from Microsoft here: https://docs.microsoft.com/en-us/dynamics365/omnichannel/try-channels

Also, for use with Dynamics Telephony, I will show how to set up a custom presence value that will be auto-selected to prevent chats being delivered when you are on a voice call.

When you enable the Omnichannel license, you will see you have 2 new applications, one for Omnichannel Administration and one for the agents (Omnichannel for Customer Service).

MS_Omni_Apps

 

When you go into Administration, you will see your admin modules down the left side.

First, go to Chat and add a new widget. Make sure Work Stream is Live Chat Workstream. That’s all you really need. Save.

Now grab the Code Snippet that is shown and copy it to your website page you want chat on. Just place it, as it is, straight before  the </head> tag you will find on your current webpage.

MS_Omni_Chat_Config

 

In Users add in existing users of your Dynamics 365 and set their Capacity to 100, assign a queue and maybe the default presence for chat.

Later, we will set the Capacity of a Chat to 50. So with the agent set to 100 this means an agents capacity is full when they are on 2 chats and Omnichannel will not send them another chat until they are back on only one chat.

MS_Omni_User_Config

 

Now go to Workstreams and edit the default workstream. Set capacity to 50 and mode to push.

In the Allowed Presences select all but Busy – DND. This means you can get a chat in any presence except Busy – DND.
MS_Omni_Workstream_Config

 

When configuring for use with Dynamics Telephony, in the Custom Presence module, add a custom presence as shown below. Dynamics Telephony will select this custom presence when on a phone call, to prevent Omnichannel sending a chat to the user during a phone call.

MS_Omni_Presence_Config

Now, to understand and configure the Dynamics Telephony integration with Omnichannel, click here.








First Call Resolution Rate

First Call Resolution (FCR) is a measure of how well you are doing in solving customer issues on the same call as they first report the issue. Obviously, customers are delighted if their issues are solved on the first call and will be more likely to recommend your company to a friend.

FCR rate is one of the most important metrics you should measure in your contact center. If you don’t measure it you can’t improve it. I outline here how Dynamics Telephony has the tools and data you need to do this successfully.

FCR Definition

FCR% = 100 X ( Calls resolved on “Call 1” ) / ( Number of “Call 1” calls – issue resolved or not )
Where “Call 1” is the first call an issue is raised in.

Phonecall Activity

The phonecall activity record in CRM is where you collect the data necessary for measuring FCR. You can use agents to fill the data or Dynamics Telephony can automate most of the data collection.

Outcome: This simple text field is linked to the Outcome the user chooses in Dynamics Telephony Toolbar. You can define as many outcomes as you like. In the definition of the Outcome you set whether “Is Resolved” is true or not for this outcome. This will thus auto-populate the next field described below.

Is Resolved. This is a boolean (two option) field in the phonecall entity. The default value is NO. It will automatically be set depending on the Outcome chosen by the agent for the call.

Call Number for Issue: This integer field is automatically incremented by Dynamics Telephony if the previous call to/from this customer was less than N hours ago and marked Is Resolved NO. N is configurable per DNIS. If there was no call in the last N hours then it is set to 1.

Customer view via SMS

Optionally, you can add to your FCR solution by using Dynamics Telephony SMS Service to send the customer an SMS to find out if they agree that the issue was resolved on the last call. Dynamics Telephony SMS Service has the following features you will need:

Send SMS
– specify related entity (e.g. phonecall, case, account contact, ..)
– From phonenumber, to phonenumber,

Receive SMS with parsing
– “Value” populated in related entity field1
– “comment” populated in related entity field2

Your CRM partner will be able to construct an FCR survey using this service by making a workflow in CRM to trigger a survey for the right conditions and use the service to send the SMS. The reply from the customer will be automatically added to the related customer record. For example, in the case of FCR, it would probably attach to a phonecall record.

FCR Reporting

With the above data, you are now in a position to report on your FCR rate, using your favorite CRM reporting tool, such as Power BI. You set up the report to use phonecalls as the source of data.

Referring back to the definition above…

For “Calls resolved on Call 1”, you count the phonecalls with Call Number for Issue = 1 AND Is Resolved = YES.

For “Number of “Call 1″ calls – issue resolved or not”, you count the phonecalls with Call Number for Issue = 1

 








Omnichannel & Avaya AACC Blended

Currently, users on Avaya AACC and Microsoft Dynamics 365 Omnichannel, have to manually keep themselves in the right status on each system. So, when they are on a voice call in Avaya, they have to manually set themselves to Do Not Disturb in Omnichannel. And when they are too busy on Omnichannel, they have to manually go Not Ready in Avaya AACC.

Furthermore, the real-time displays and reporting on each of the two systems is completely unaware of the other system. So, a supervisor might think a user is simply “Not Ready”, when in fact they are very busy on chats with customers.

These are major pains and leads to lack of adoption of one system or the other.

Now, Dynamics Telephony does the synchronization automatically for you. When you are on a voice call, your status in Omnichannel will show “On Phone Call”, and you will not be sent any chats. When you are busy on chats in Omnichannel, your status in AACC will be “Not Ready – On 2 Chats” and AACC will not send you any voice calls. NOTE these features are in addition to our other AACC Features

omnichannel_status

This is a major innovation allowing users to seamlessly work on Omnichannel and Avaya AACC in the one blended environment.

See a short presentation of this feature on YouTube here.

How It works

Because Dynamics Telephony has access to both Avaya AACC status and Omnichannel status, it can monitor and control both systems. Using this capability, it implements 2 rules:

  1. When you are on N chats in Omnichannel, it will auto-select a status (e.g. Not Ready – On 2 Chats) for you in Avaya AACC. When you are back on <N chats, it reverts you to Ready in AACC.
  2. When you are on a voice call in AACC, it will select a particular presence (e.g. Do Not Disturb – On Phone Call) for you in Omnichannel. When you end the voice call, it will make you available in Omnichannel again. You need to define a custom presence in Omnichannel Admin of type Do Not Disturb with a label such as “On Phone Call”.
Reports & Realtime Displays

Because Dynamics Telephony is keeping your status in each system correctly synchronized, your reports and real-time displays in each system can show the full picture. So, your Omnichannel report can include the number of times and duration of the “On Phone Call” presence. Similarly, your data in Avaya AACC can include the number and duration of “On 2 Chats”.

Settings

The following settings control how the blending works.

OC Omnichannel – Check this box to enable the Omnichannel (OC) blending features.

OC Max Chats and OC Max Chats Reason – When the number of chats being handled by the user in Omnichannel gets to OC Max Chats, then the Not Ready reason in AACC is automatically selected. The reason selected is the one with label defined in OC Max Chats Reason (case sensitive)

OC Voice Call Presence – When the user is on a voice call in AACC, this presence is automatically selected in Omnichannel. Case sensitive. Leave blank to disable this feature.

OC Voice Application – From the list, select the Dynamics 365 Application to use for Avaya AACC voice calls. It is very unlikely you will want to use the Omnichannel Application with voice calls.

omnichannel_config

 








Outcome Triggerd Workflows

You can trigger a workflow to do such things as disqualify a lead, convert a lead to an opportunity or send an email to the customer.

You set the workflow to trigger off our dialerCall entity field called “outcome”. In the workflow, you use our plugin (see below) to get a reference to the phonecall, To Party or Regarding entity.

The plugin you need in the workflow is in a solution file you need to import to CRM. You can find it HERE

NOTE: You cannot use Flow / Power Automate as it does not support plugins.

Create the workflow

In Processes, make a workflow to trigger off change of field outcome in dialerCall entity.

To get a reference to the phonecall activity that Dynamics Telephony used for the call, add a step like this

workflow_plugin_dtiCommand

Set the properties like this:

workflow_dtiCommand_toEntityRef

Now you can use that entity reference to update the entity.

Similarly, you can get a reference to the To Party (ToId in dialerCall) and Regarding