Category Archives: Uncategorized

SCA – Troubleshooting Guide

You may see a message in the Sales Call Accelerator (SCA) panel. Here is help for each of these messages

For advanced troubleshooting, you can open the browser console. You can filter messages in the console using the text DT. Here is a sample of a good startup and call showing notifications are disabled in the browser by the user.

20:09:44 DT : Handle registered successfully.
20:09:44 DT : Notification Permission Denied. Upcoming call notifications are disabled.
20:09:44 DT : _cParams : dtps-dtps-sh.dynamicstelephony.com enableFollowUp:true
20:10:47 DT : clickToActHandler:Param : {“value”:”5550101″,”name”:”telephone1″,”format”:”Phone”,”entityLogicalName”:”contact”,”entityId”:”dcb1b095-a17e-ec11-8d21-000d3a6599ad”,”recordTitle”:”John Smith”}
20:10:47 DT : Call(0768561713, 075550101)
20:10:47 DT : Inside Call() channel:0768561713, number:075550101
20:10:48 DT : clicked page environment : {“appid”:”0468e89e-ae44-ea11-a813-000d3a654590″,”etn”:”contact”,”id”:”dcb1b095-a17e-ec11-8d21-000d3a6599ad”,”pagetype”:”entityrecord”,”clientUrl”:”https://your_company.crm11.dynamics.com”,”appUrl”:”https://your_company.crm11.dynamics.com/main.aspx?appid=0468e89e-ae44-ea11-a813-000d3a654590″,”orgLcid”:1033,”orgUniqueName”:”org55d82660″,”orgId”:”470dbc79-bb81-4946-ab66-3e1b2241b628″,”userId”:”{AAEB5C64-FB48-EA11-A813-000D3AB4F1B4}”,”userLcid”:1033,”username”:”# Patrick Jones”,”crmVersion”:”9.2.22103.00194″,”cifVersion”:”9.1.0.549″,”isDirty”:false,”customParams”:”{\”f\” : true, \”a\”: \”user@customer.com\”, \”b\”: \”qW23E1as90frt-der\”, \”c\”: \”dtps-dtps-sh.dynamicstelephony.com\”, \”d\”: \”wd3\”}”}
20:10:48 DT : NOT in Quote so leaving entity as contact
20:10:48 DT : createCallActivity()
20:10:48 DT : getEntityData() OK. callattempt:null
20:10:51 DT : createCallActivity() – record created successfully, activity id:70ea2ec0-a16a-ed11-9561-0022489bd91f
20:10:58 DT : call request done:ok

Application (Client ID) and Client Secret

NOTE this user will expire every 2 years so you will need to renew in 2 years.

Steps in Microsoft Azure

  1. Navigate to portal.azure.com and login. ( This link might work: https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps )
  2. Navigate to Azure Active Directory > App Registrations > New Registration
  3. Register your Application.
    1. Enter an Application name. e.g. DT_Service
    2. Select which account types you wish to access this API.
    3. Click Register.
  4. Copy the Application (client) ID and note it for later use.
  5. Create a new Client Secret for the Application.
    1. Select Certificates & secrets > New Client Secret
    2. Enter a description, select an expiry duration and click Add.
  6. Copy the client secret and note it for later use. Make sure to copy the Value field.
  7. Grant Microsoft Dynamics permissions.
    1. Select API Permissions > Add a Permission > Dynamics CRM
    2. Select the checkbox for user_impersonation.
    3. Click Add permissions.

Steps in Microsoft Dynamics 365

  1. Login to your Dynamics 365 instance.
  2. Under Settings, select Security > Users. Change the view to Application Users (see below if view missing) and click New.
  3. Enter the Application user’s information.
    1. Paste the application ID previously noted in the Azure component into the Application ID field.
    2. Enter the user’s full name.
    3. Enter the Primary Email and click Save (User Name field should be automatically populated based on the primary email).
  4. Assign administrator permissions to the application user.
    1. Select the user and click Manage Roles > System Administrator > OK

IF VIEW IS MISSING…
Navigate to https://admin.powerplatform.microsoft.com/ and click Environments.
Open the Respective Environment where you want to create Application user.
Once Opened –> Click Settings.
Once Settings page Opened –> Click Users + permissions –> then Click Application Users.
Click Application User and add a new Application User
…RETURN TO STEP 3 ABOVE…

Ghost Calls

Ghost Calls are calls to your DT Client, when in SIP or Asterisk mode, that are dead air. You can get lots of these calls when it happens. It is due to an attack by a port scanner. the calls are not coming from the Phone System, but rather directly from the scanner to your public IP address.

Change IP Address

The quickest, but non-permanent fix, is to change your public IP address. For home users this might be simply rebooting your home router, or contacting your ISP to have it changed.

Block using Windows Firewall

A more permanent fix is to block traffic on the ports used for SIP traffic using your Windows Firewall. The steps are to 1) create a rule to block all traffic on ports 5060-5063 and then 2) create another rule to allow SIP traffic from the phone system. Here are the detailed steps:

1. Find Windows Firewall on your PC and go to Inbound Rules and click New Rule

a New Rule 1 b Rule 1 Type c Rule 1 ports d Rule 1 Action e Rule 1 Domains f Rule 1 Name

2. Now add the second rule

g New Rule 2 h Rule 2 Type i Rule 2 ports j Rule 2 Action k Rule 2 Users l Rule 2 Computers m Rule 2 Domains n Rule 2 Name

3. Find the second rule in the list of rules and open its properties. Set the IP address to that of your phone system

o Rule 2 Scope

There is no need to reboot your PC – the rules are automatically in place.

RTD Config Guide

You can easily add columns to the Agent RTD. This guide leads on from  here which deals with the attribute type. The steps below show you how to add columns of other types. Unless specifically mentioned, all

Type – Entity

The key specifies which table the data will be sourced from
Order and Value can be blank

 

Type – Filter

The key set which value to filter by e.g. Cts_Team==’ALL’
Order is 0
Value can be blank

 

Type – Calculated

The key is the formula used to calculate the result e.g. parseDate(rowData[‘Cts_Time’]).toHHMMSS() which would
write out the field Cts_Time in the format HHMMSS
Order is order
Value is column width

 

Type – Livestate

Similar to attribute except that livestate must be used when for times that update i.e. other than State Time

 

Type – Hidden

This is used so that you can cite this field in future fields or calculations.

 

Type – Link

Similar to attribute except it is a link. E.g. to link to the user’s profile you would use the key 
‘Xrm.Utility.openEntityForm(“systemuser”,”‘+rowData[“Cts_SystemUserId”]+'”)’

 

Type – Order

Is used to order the rows.
Key gives the field by which it will be ordered
Value defines whether the data is in ascending or descending order with the value ASC or DSC

 

Type – Rule

This defines appearance changes to be made in certain situations           e.g. make the call hold time blink red if it goes
over 1 minute
Key defines the situation e.g.
rowData.Cts_call_time_Hold >= ’00:01:00′
Value defines the changes to be made                                                                          e.g. background|#f4c212;effect|blink;

 

Note –

To be able to add or create a new report of the corresponding record from the DiallerReports, it must contain ‘entity’
as its type attribute value.

Agent RTD

The Realtime Display Dashboard in CRM allows you to see the real-time status of every agent using Dynamics Telephony in your Call Center. This can be a combination of telephony status (ready, not ready, talking etc.) and CRM data (customer name, lead topic, dialer campaign name, CRM queue name, etc.)

RTD_twitter

Features

  • Realtime status of every agent using Dynamics Telephony
  • Shows telephony state (e.g. talking) and CRM state (e.g. customer name) in one snapshot
  • Shows duration and the time the state was entered.
  • Shows Outcome of last call, e.g. SALE!
  • No server required – data stored in CRM
  • Full screen mode – perfect for Wallboard in Call Center
  • Auto-refresh in realtime
  • Can be filtered down per agent group
  • Configurable thresholds highlight if an agent is too long in a state
  • Threshold actions: change color, blink, send email

Using The RTD

  • To access RTD, simply go to Dashboards > Dynamics Telephony Dashboard – Agent RTD
  • The display auto-refreshes every 10s (by default). You can update now by clicking the update countdown timer.
  • For full screen use the direct URL (e.g. https://yourcrm.dynamics.com/webresources/cts_dtagentRTD.htm) in a browser and press F11

Customizable

  • Add your own custom field to our RTD. E.g. to show how much CRM work done today
  • Calculated fields
  •  Add / remove / reorder columns
  • Add / remove agents. E.g. individual RTD per group
  • Set sorting field
  • Trigger a workflow

Full Field List

You can use these fields, or calculations (in JavaScript format) of these fields. In the RTD table there is one record per user, with these fields:

AGENT
AGENTSTATE
CALL_TIME_HOLD  – – – – – – – > – – – following fields are for the current call
CALL_TIME_IDLE  – – -> the time the agent was idle after the last call/startup/login
CALL_TIME_PAUSE
CALL_TIME_PREVIEW
CALL_TIME_RING
CALL_TIME_TALK
CALL_TIME_TOTAL
CALL_TIME_WRAP
CALLSTATE
DATA TYPE  – – – > Daily / RealTime (‘Daily’ represents backup of that particulat day whereas ‘RealTime’ is the realtime data of the current day)
DIRECTION
DNIS
DNISNAME
DURATION
INBOUND QUEUES  – – -> name of all the queues the agent is serving for inbound calls
MODIFIED ON
CREATED ON
OTHERPARTY
OUTCOME
PHONE
REGARDING
RESET_TIME_RTD  – – -> the last time of the RTD reset
SYSTEMUSERID  – – – – – – > user’s CRM GUID for linking other data
TEAM
TEAMS
TIME
TIME_AVAILABLE – – ->the time agent was available after last call/login/startup
TIME_LAST_UPDATED  – – -> the last time the DiallerUser has been updated
TIME_UNAVAILABLE  – – -> the time agent was unavailable after last call/login/startup
TOTAL_ACCEPTS  – – – – > – –  Following are totals for today
TOTAL_BUSYS
TOTAL_CALLS
TOTAL_CLOSE_OUTCOMES
TOTAL_CONNECTS
TOTAL_DEFLECTS
TOTAL_MISS
TOTAL_NOANSWERS
TOTAL_REJECTS
TOTAL_RETRYS
TOTAL_RINGS
TOTAL_TIME_AVAILABLE  – – -> the total time the agent was available for the day
TOTAL_TIME_HOLD
TOTAL_TIME_IDLE  – – -> the total time the agent was idle
TOTAL_TIME_PAUSE
TOTAL_TIME_PREVIEW
TOTAL_TIME_RING
TOTAL_TIME_TALK
TOTAL_TIME_TOTAL
TOTAL_TIME_UNAVAILABLE  – – -> the total time the agent was unavailable for the day
TOTAL_TIME_WRAP

Phone Number Matching in CRM

Dynamics Telephony uses an advanced algorithm to match incoming phone numbers with phone numbers in your CRM. Dynamics Telephony will successfully math in the vast majority of situations. It can handle number formats in your CRM such as

(613) 555 1212
+44 1628 555 1212
45 56 67 78

Sometimes you will find that the callers number is not found in your CRM due to pattern matching problems. For example, you might find that the callers number is coming in with a “Tel:” or “Sip:” prefix and the phone numbers in your CRM do not have this prefix. In these cases, use the RegEx pattern match setting to fix the incoming number as follows:

Settings > Inbound Configuration : Regex Phone Number:

  • For Lync or Skype you must use: tel:\+(\d+)
  • For SIP you must use: sip:(\d+);.*
  • For all other CTI Providers use: sip:(\d+);.*