Category Archives: CRM

Phonebook Contacts CRM Entity

Dynamics Telephony can retrieve its phonebook contacts from CRM or from an XML file. This article explains how to have Dynamics Telephony retrieve its phonebook contacts from CRM.

The contacts are stored in entity Dialler Phonebook Contacts (cts_phonebook). The main fields are:

  • Full Name: Mandatory. A good idea to format like Lastname, Firstname for sorting purposes. The phonebook will be sorted using this field.
  • Phone Number: Mandatory.
  • Phone Book Team: Mandatory. This is used to allow different groups of users have a different set of contacts in their phonebook.

An on-demand workflow is included to copy data from existing Users to Dialler Phonebook Contacts. It copies the phone number from the user “Other Phone” field, and the Team Name from the users Business Unit name.

phonebook_add_users_workflow

Then, in Dynamics Telephony Settings, General, fill in the team name for each user.

phonebook_team_setting

 

TIP: You could have a workflow trigger on a user’s “Other Phone” change event, and use that to keep the phonebook synchronized.

 

Lookup other phonenumber fields

Dynamics Telephony can search other phone-number fields; custom fields or built-in fields. To have Dynamics Telephony search another phone-number field…

Add 1 diallerKVTable entry as follows

name: incomingLookup_x, where x is contact, lead, contact etc.
scope: global
key: N, – Where N is one more than the current largest Key value on others with name=incomingLookup_x
type: phone
value: y, – where y is the name of the field, e.g. new_fieldname
parent: leave blank

NOTE: The fields Dynamics Telephone searches out-of-the-box are
Lead; telephone1, telephone2, telephone3, mobilephone
Contact: telephone1, telephone2, telephone3, mobilephone
Account: telephone1, telephone2, telephone3

Scripting Pane: Display Phonecall

You can display the current phonecall activity in the Scripting Pane. This is useful to be able to enter phonecall notes and result without having to switch away from the main customer record in CRM.

scriptingPanePhonecall

You do this by defining the script URL as a custom HTML page that will receive all phonecall ID and then redirect to the phonecall itself. There is a sample of that initial custom page code here (view page source when it opens): dtAssociatedPhonecall. Also, this is included in the CRM Solution now so you can simply use https://yourcrmdomain.crmXX.dynamics.com//WebResources/cts_dtAssociatedPhonecall

TIP: If you want to display some other entity, for example the regarding entity, then you can use the parameters passed to the splitscreen page to re-direct to it. the full list of parameters passed to the splitscreen page is HERE

The script URL is defined on a per DNIS (inbound) or queue (dialer outbound) basis, as shown below

scriptingPansDnisUrl

NOTES

  • You will want to customise the phonecall form to improve legibility as the Scripting Pane is fixed at 33% of the parent window width.
  • Alternatively, you could make a special phonecall form and specify the formid in the extraqs parameter of the URL you redirect to. You might also consider adding navbar=off&cmdbar=false to the URL to hide the navigation and command bars to give you more space.
  • Test with your users to make sure autosave is working correctly, or they are happy to use a SAVE button.
  • Using the Dynamics Telephony Client API, it is possible to make a Save & Close button that would save the phonecall and close the DT window.
  • If users will enter notes, then define the default Phonecall Description as blank ( DT Menu > Settings > Advanced Configuration : Phonecall Description )
  • Similarily the Phonecall Subject. ( DT Menu > Settings > Advanced Configuration : Phonecall Subject )

Screen Transfer

Dynamics Telephony has a unique Screen Transfer feature. Imagine user_1 transfers a caller to user_2. With this feature, as soon as user_2’s phone rings, even if user_1 is still on the line doing a Consult Transfer, user_2 will get a screen pop of the caller’s record in CRM that user_1 is looking at.

The unique thing about our implementation of Screen Transfer is that it works across phone systems. So, in the above example, even if user_1 and user_2 are on completely different phone systems, the Screen Transfer will still work. This is because the necessary data transfer is done via CRM, not the phone system.

NOTE, if the transfer is a Blind Transfer, then the normal screen pop feature will apply and pop a CRM record based on the callers number.

Requirements
  1. The callers number presented to an user when a call is transferred to them by another user must be the internal extension number
  2. Each users internal extension number must be configured in their System User settings as either Main Phone, Other Phone or Pager.
Technical details

The feature is triggered when a user receives a call from a number that is the same length or shorter than the number of digits configured as the Internal Extension Length. This triggers a search in CRM systemuser for an exact match on one of:

  • Main Phone (address1_telephone1)
  • Other Phone (address1_telephone2)
  • Pager (address1_telephone3)

To check on the feature, you can check the value of UrlDisplayed (cts_urldisplayed) in entity dialerCall for the transferred call.

Use Custom Forms

Dynamics Telephony allows you to specify a Custom URL to use for your outbound or inbound calls. So, if you have designed a custom form for users to process inbound or outbound calls, then you can have Dynamics Telephony pop that form for the user.

You can specify different Custom URLs for inbound and outbound. And you can also specify a set of conditions for when to use the Custom URL, such as only when no match for the caller is found in CRM, or only when the caller is a contact, etc.  You can specify multiple Custom URLs, each with a different set of conditions attached.

In addition, Dynamics Telephony will pass a set of parameters to your page at the Custom URL. These are described below.

How to set up a custom URL

You configure the URL to pop, along with the conditions for the pop, as a dialerKVTable entry, with these values:

Owner. This can be any owner.
Scope. Only “global” has been tested. This means it applies to all users. In future, we may support putting a users name here to make it specific only to that user.
Parent. Leave blank always
Name. Always customURL_Rule. It is case sensitive so type as shown.
Key. A number. Start at 1 for the first rule, 2 for the second etc. The rule with the lowest Key number that the condition (next section) yields TRUE will determine the pop. If no rule yields TRUE, then the default contact, lead etc. is popped. NOTE: the sorting is text based so you should use 2 digits for all numbers, like 01 or 12 etc.
Value. Format condition=>url-to-pop
url-to-pop can be any valid URL. Only webresources served by the CRM have been thoroughly tested. The keyword default can be used instead of a URL to pop the default CRM form for the matched entity.
condition is one or more conditions where you specify such things as applicable entity (fromParty.Key=contact, lead, account.), number of matches (lookupCount=0 or 1), DNIS (dnis=1234), and direction (inbound or queue)

See next section for examples of Value

Some examples of Value

direction=queue=>file:///C:/_cts/Fast%20n%20Lite/page.html

direction=inbound&&fromParty.Key=contact&&lookupCount=1=>https://yourCrm.crm.dynamics.com//WebResources/dot_/CPO/CP.html

direction=inbound&&lookupCount=0=>https://yourCrm.crm.dynamics.com//WebResources/dot_/CPO/CP.html

direction=inbound&&fromParty.Key=account&&lookupCount=1=>https://kotsovolosdev.crm4.dynamics.com//WebResources/dot_/CPO/CP.html

direction=inbound&&dnis=1234=>default

Parameters passed to the Custom URL

TIP: When you run a test call, check the Dynamics Telephony log file (DT Menu > Log File) to see the URL and it’s parameters. Search in the log file for oCustomUrlRules and you will see the URL a line or two after that.

Parameters
Data=
state, e.g. incoming
type, e.g. phonecall. Only phonecall supported
phoneCallID, e.g. 7e2a5311-be86-e911-a84d-000d3ab0d976
direction, e.g. inbound, or queue (outbound)
telephoneNo, e.g. 00353868561713
dnis, e.g. 1234
dnisName, e.g. DEV
agentType, e.g. systemuser
agentId, e.g. dbe7f238-1d8d-e911-a819-000d3aba212d
customerType, e.g. contact
customerID, e.g. dbe7f238-1d8d-e911-a819-000d3aba212d
ReType, e.g. contact
ReId, e.g. dbe7f238-1d8d-e911-a819-000d3aba212d
dtCallId, e.g. e8393a0f-be86-e911-a847-000d3ab0d281
agent, e.g. Test+Agent06
fullName, e.g. My full name
description, e.g. description+text+from+phonecall
customText, e.g. text from a phonecall custom field called new_customtext
subject, e.g. inbound+call+with+DNIS+DEV

Sample URL popped with parameters
CP.html?Data=state%3Dstart%26type%3Dphonecall%26phoneCallID%3D30240805-03be-e911-a82f-000d3ab71acc%26direction%3Dqueue%26telephoneNo%3D6946186715%26dnis%3D%26dnisName%3D%26agentType%3Dsystemuser%26agentId%3Da661cc8a-eb7a-e911-a824-000d3ab70af3%26customerType%3Dcontact%26customerID%3De79beb12-998b-e911-a825-000d3ab70627%26ReType%3Dcontact%26ReId%3De79beb12-998b-e911-a825-000d3ab70627%26dtCallId%3D7f22a4f1-7fe6-e911-a838-000d3ab713ee%26agent%3DDyn+Crm06%26fullName%3D%CE%9D%CE%95%CE%9A%CE%A4%CE%91%CE%A1%CE%99%CE%91+%CE%9A%CE%95%CE%A6%CE%91%CE%9B%CE%9F%CE%9D%CE%99%CE%9A%CE%91%26description%3D%26  %3D%26subject%3D%CE%95%CE%9A%CE%A3-06441+-+MRKT-0010324

Dynamics Telephony and Sales Orders

Dynamics Telephony is perfect if you use CRM Orders, where it can pop Orders (if there are any open for the caller) or pop the callers Contact record. Furthermore, the phonecall activities are logged against the Order as appropriate.

How to get Dynamics Telephony to pop an Order based on the callers phone number

Orders have two phone numbers (Bill To Phone Number and Ship To Phone Number) you can use to match against the incoming call. Or, you can add a custom phone number field for Dynamics Telephony to search.

Remember, Dynamics Telephony can be set to search multiple fields in an entity

TIP: Set a condition that the Order must be open (status=active) for the phone number to be populated. In this way, only open Orders will match and pop.

In the custom entity dialerKVtable, add an entry for each phone number field you want to search..
type: phone
Value: new_phone1 – the name of phone number field
scope: global
Parent: <blank>
Name: incomingLookup_salesorder
Key: 1 – the order of lookup in this entity

Also in dialerKVtable entity, add another two entries as follows for the primary text to display
Key: salesorder
Name: entityPrimaryNames
Parent: AppSettings
Scope: global
Type: string
Value: name – *

Key: name – *
Name: incomingLookup_order
Parent: <blank>
Scope: global
Type: name
Value: name – *

NOTE: The above will display the Name of the Order. You might prefer to create another custom field on the Order that combines customer name and Name. This will be useful for multi-match. It must be a string custom field. Replace “name” above with your custom field name (3 places marked *)

In Dynamics Telephony settings > Inbound set..
Lookup entities: salesorder

TIP: If you set above to “contact, salesorder” then Dynamics Telephony will pop the Contact if there are no open Orders. However, if there is one open Order you will get a multi-match to choose between the Order and the Contact. In the multi-match dialog, the Contact will show at the top of the list.

How to move items from one queue to another

You can move items from one CRM Queue to another. You might want to do this to have a different user or team work on the items. In Dynamics CRM this is called “Routing” an item to another queue.

Steps

1. Run an Advanced Find to locate the queue items you want to move.

2. Select all the items

3. On the Ribbon, click “Route”

4. Select the queue you want to route the items to and click “Route”

crm_queueitems_routing

How to add a queue to CRM

Queues are a standard feature in CRM. Dynamics Telephony can monitor a CRM queue, or queues, and pop any “Queue Items” out for a user to autodial.

Follow these steps to set up a Dynamics CRM Queue

1. Go to CRM > Settings > Business Management > Queues

crm_queues

2. Click the ” + New ” button

3. Enter the new queue Name.

crm_queue_settings

4. Set the queue as Private (where you can control who is a member), or Public (where everyone has access)

5. Save.

Now you can set the membership per this article

 

Asterisk Queue-names Integration

Dynamics Telephony can get and use the name of the Asterisk Queue that an inbound call came in on. Example use cases are:

  • You want to pop a particular form based on the Queue-name
  • You want to auto-populate the Queue-name into a custom field – e.g. in a phonecall, lead or case (incident)
  • You want per-queue statistics in CRM
  • You want to filter the customer search using Queue-name (e.g., if you have a queue per “brand”)
  • You want to search one of multiple CRM instances based on queue name.

Setting up Asterisk to pass queue-name

You have to set up Asterisk so that the queue-name is passed to Dynamics Telephony. You do this by pre-pending the queue-name to the callers name. You do this with a pattern so that Dynamics Telephony can parse out the queue-name. The standard pattern Dynamics Telephony accepts from Asterisk is D:queuename:number, for example

D:Support:070989887889

However, you can use another pattern if you wish by changing the RegEx in Dynamics Telephony Settings > Provider Configuration: DNIS RegEx. For the above pattern, use DNIS RegEX   D:(.+?):

For example, in freePbx, you set the prefix in Applications > Queues > [pick a queue] >General > CID Name Prefix = D:My Test Queue:
asterisk_queue_CID_prefix

Setting up Dynamics Telephony to accept Queue-name

Dynamics Telephony will parse the queue-name, set up in above section, to a DNIS in Dynamics Telephony. DNIS stands for Dialed Number Identification Service. So it identifies the destination the caller reached. The queue in this case.

Set up a DNIS in Dynamics Telephony with the same DNIS and Label as the queue-name (case sensitive), as shown below.

NOTE: If the incoming queue-name does not have a matching DNIS definition, the incoming queue-name will still be saved in the DNIS field of the phonecall.
dnis_setup

Now what can you do?

Some of these require use of the Dynamics Telephony API – See here for more

– The inbound call dialog will show the DNIS name when a call arrives via that queue. You can also have a per-DNIS color and logo.

– To pop a particular form, your JavaScript running in the originally popped form can query Dynamics Telephony via the API to get the DNIS and change the form.

– You can show a different script in the Dynamics Telephony Scripting Pane depending on the DNIS.

– To auto-populate a custom field, your JavaScript running in the originally popped form can query Dynamics Telephony via the API to get the DNIS and populate the field

– The Dynamics Telephony Entity for statistics (dialerCall) will now have the DNIS as a field

– You can auto-populate the phonecall Description field, or the auto-added Note, by using the placeholder <<dnis>> in Dynamics Telephony Settings > General : Phonecall Description or Other Party Note

– You can direct the CRM search on inbound call to a particular CRM by picking from the list in the DNIS configuration.

– You can filter inbound call search results to only those where queue-name matches any field in the entity. You set this in Dynamics Telephony Settings > Inbound > DNIS Filter, with a value something like {“entity”:”contact”, “attribute”:”new_brand_name”, “type”:”string”}