Category Archives: CRM

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 is

D:queue_name:callers_number_or_name

However, you can use another pattern if you wish by changing the RegEx in Dynamics Telephony Settings > Provider Configuration: DNIS RegEx.

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

– 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”}

Dynamic Dial Prefix

Dynamics Telephony can apply a special prefix on a per call basis to dialed calls. This helps solve the following use cases:

  • You want to make calls to customers using a special Callers Number (CLID) – e.g. to reflect your various Brands or Programs
  • You want to make calls to customers using a Callers Number (CLID) that is local to the customer – so they see it as a call from their region.
  • You want to make certain calls withholding your Callers Number (CLID)
  • You need to prefix calls so they are billed to a specific department, project or customer.

Setting it up

  1. Have your PBX or Phone Company set the CLID based on a dial prefix. This is available from most PBXs and phone companies. This includes a special prefix for withholding your Callers Number.
  2. Set up Dynamics Telephony to dynamically assign a dial prefix. this is covered in the following notes.

Default Dial Prefix
The Dynamics Telephony setting “Provider Configuration > External Dial Prefix” is used as the default dial prefix. This will be used if a prefix has not been determined by the rules set out below.

Per Customer Dial Prefix
This is achieved by setting a value in the customer record that can be mapped to a prefix to use.
For example, you might have a optionset that you set (perhaps using a workflow) to a value like North, South, East or West. Then, in Dynamics Telephony, you configure North to use prefix “60”, South to use “61”, etc.

Prefix Map in DialerKV table
You set up the prefix mappings in Dynamics Telephony CRM entity, DialerKVTable. You can setup as many as you need, as follows:
name: Dynamic_Prefix
key: entity_name.field_name=value, e.g. contact.new_region=north
type: <leave blank>
value: the_prefix_to_use, e.g. 63
scope: global

TIP: If you are using click-to-dial on a phone number that is displayed in a lead or case, but defined in some other entity (like account or contact), then the field to map the prefix is in the displayed entity (i.e. lead or case)

 

Phone Book & Prefixes
Generally, the default prefix will be added automatically when dialing a number from Phonebook. To prevent this and apply a different prefix, use the following notation: “69;6125551212″. This notation is to tell Dynamics Telephony that a prefix has already been applied and not to apply the default one.

Operation

For calling in anonymous mode, you would probably use a phonebook entry

For calling customers using the prefix, you must use click-to-dial in the entity configured in DialerKVTable.key above

Dialing from the dialbox, and normal phonebook entries, will use the default Dial Prefix. You can dial from the dialbox, or phonebook entries, with prefix if the number includes the prefix in semi-colon format discussed above – e.g. “69;6125551212″.

Custom Phone Number Fields

Dynamics Telephony can search your custom phone number fields for a match, and screen pop,  when your customers call you. This also applies if you add a phone number to an entity that does not normally have a phone number – e.g. a case or opportunity. See here for more on these.

To add a custom field to Dynamics Telephony settings for searching, add a diallerKVTable record as shown:

 

custom_phone_number_search_kv

name: refers to the entity being searched. Use one of incomingLookup_lead,
incomingLookup_contact,
incomingLookup_account,
incomingLookup_incident or
incomingLookup_opportunity.

type: phone

key: refers to the search order. So use 1, 2, 3, 4, etc. All matches are returned so just make sure it is unique for the entity

value: the name of the field to search. Standard fields might be telephone1, telephone2 etc. A custom field might be new_ph_number

scope: global

parent: leave empty

 

Display actual start with time

The default phonecall entity view on your Dynamics 365 CRM may be showing Actual Start and Actual End with only date, not with time. Here is how to get time to be displayed too.

1. CRM > Settings > Customizations

2. Click “Customize the system”

3.  Expand “Entities” and then “Phonecall” and click on “Fields”

4. In the Fields, double-click on Actual End

5. Near the bottom of the field settings from, you will see “Format” – change this to “Date and Time”

6. “Save & Close”

7. Repeat steps 4-6 for “Actual Start”

8. Publish All Customizations

phonecall_actualEnd_time

How to disable click-to-dial phonecall popout

When you do a click-to-dial in Dynamics CRM, a new phonecall activity is automatically opened in CRM for you. Dynamics Telephony also adds a phonecall activity, so you can end up with 2 for the one call. Follow this procedure to suppress the phonecall popout that CRM creates.

WARNING: THIS IS AN UNSUPPORTED CUSTOMIZATION, but it can be easily removed.

1. Create a JavaScript Webresource in CRM and paste in the following code into the Text Editor as shown in the screenshot belowsuppress_c2d_popout_webresource

function suppress_C2D_Popout() {
  parent.Mscrm.ReadFormUtilities.openPhoneClient = function(phoneNumber) {
    if (!IsNull(phoneNumber)) {
      parent.Mscrm.Shortcuts.openPhoneWindow(phoneNumber, window.PHONE_NUMBER_DEFAULT_COUNTRY_CODE,"True");
    }
  };
}

 

2. Add the webresource to the Form you want to be affected by this change. E.g. just the Contact form. Link the JavaScript function suppress_C2D_Popout, to the Form.OnLoad function. See screensnap below.

suppress_c2d_popout_form_properties

Pop and Auto-Dial CRM Opportunities

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

Even better, you can use the Dynamics Telephony Queues Dialer feature to auto-feed Opportunities to users for processing, including calling the customer. Opportunities can be added to the Dynamics Telephony Dialer Queue just like any other entity.

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

In Dynamics 365, Opportunities have no phone numbers by default. So you need to add one for Dynamics Telephony to search for. It does not need to be put on the opportunity form itself. Add a custom field to the Opportunity entity. Set it as a “Single Line of Text” (format: phone) field that is calculated based on the related contact phone number. You can add multiple phone-number fields if you like. See here for how to add the field.

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

In the custom entity dialerKVtable, add an entry for each custom field created above..
type: phone
Value: new_telephone1 – the name of custom field
scope: global
Parent: <blank>
Name: incomingLookup_opportunity
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: opportunity
Name: entityPrimaryNames
Parent: AppSettings
Scope: global
Type: string
Value: name – *

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

NOTE: The above will display the Title of the opportunity. You might prefer to create another custom field on the Opportunity that combines customer name and Title. 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: opportunity

TIP: If you set above to “opportunity,contact” then Dynamics Telephony will pop the contact if there are no open opportunities. However, if there is one open opportunity you will get a multi-match to choose between the opportunity and the contact.