Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

From ContactWorld version 2.4 in Salesforce, if enabled for your account, you can configure ContactWorld to dynamically select a callback number. The dynamically selected callback number takes precedence for individual calls over both the callback number defined by your agent in ContactPad and your account's default callback number. For information on callback numbers, see /wiki/spaces/PD/pages/50070640.

To use a callback number, that number must be configured and available for your account. To add a new callback number to use with your account, contact support.

You can use this feature in various ways depending on how your Salesforce org is set up. To override callback numbers, you must create a custom Apex class that implements the NVMContactWorld.ISelectPresentedClid interface and defines the GetPresentedClid method. The GetPresentedClid method describes how ContactWorld can generate or locate the callback number. ContactWorld can then present this number as the callback number.

To create the custom class, you must be familiar with creating Apex classes in Salesforce. For information on creating Apex classes, see Salesforce help.

Progress
The selected root page could not be found.

NVMContactWorld.ISelectPresentedClid interface definition

global interface ISelectPresentedClid{
	String GetPresentedClid(String clickToDialResult);
}

The clickToDialResult contains the phone number that the agent clicked to dial, and the object ID and type of the Salesforce object from which the agent clicked. clickToDialResult is in JSON string format, for example, {"number":"4155551212","objectId":"001x0000003DIGj","object":"Account"}. You do not need to provide clickToDialResult because Salesforce passes the value to the method for you when an agent initiates a Click to dial event.

GetPresentedClid returns the callback number as a String object.

When creating your new class, you must declare both the class and the method as global so that the ContactWorld installation package can access the class and invoke the method.

When you have created your class, you must ensure that ContactWorld uses the class in Salesforce. For information about configuring the class that ContactWorld uses to select the presented CLID, see Configuring custom settings for optional ContactWorld features in Salesforce.

ContactWorld validates the value returned by the GetPresentedClid method according to the following rules:

  • if a null value is returned, the Click to dial call continues and ContactWorld uses the agent's default callback number, if set, or the account's default callback number
  • if a non-null value is returned but the value is not configured as a callback number for the account, the agent receives an error message
  • if a non-null value is returned and the value is configured as a callback number for the account, but that callback number is restricted from the agent, the agent receives an error message
  • if a non-null value is returned and if the value is configured as a callback number for the account and that callback number is not restricted from the agent, the Click to dial call continues, and the value is used as the callback number for the call
 Example 1

In our first example, the presented callback number is stored in and retrieved from a custom field, called ClickToDialPresentedClid, on an Account object. Firstly we created an Account object field called ClickToDialPresentedClid. For information on creating custom fields, see Salesforce help.

Presented CLID field createPresented CLID read

Secondly, we created a new Apex class called SelectPresentedClidForContactByAccount:

global class SelectPresentedClidForContactByAccount implements NVMContactWorld.ISelectPresentedClid{
    
    // The clickToDialResult parameter contains the response string from the Salesforce ClickToDial event.
    // Salesforce passes the clickToDialResult parameter to us:
    // for example '{number: "07890123456", objectId: "0032000001FTGSo", object: "Contact"}'
    // Find more information at: https://www.salesforce.com/us/developer/docs/api_cti/Content/sforce_api_cti_onclicktodial.htm
 
    global String GetPresentedClid(String clickToDialResult){
         
        Map<String,Object> clickToDialResultMap = (Map<String,Object>)JSON.deserializeUntyped(clickToDialResult);
        String contactId = (String)clickToDialResultMap.get('objectId');
         
        Contact c = [SELECT Id, AccountId FROM Contact WHERE Id = :contactId];
        Account a = [SELECT Id, ClickToDialPresentedClid__c FROM Account WHERE Id = :c.AccountId];
         
        String presentedClid = a.ClickToDialPresentedClid__c;
         
        return presentedClid;       
    }
}

When an agent clicks to dial a number in a contact record, ContactWorld runs our GetPresentedClid method in the SelectPresentedClidForContactByAccount class, which implements the ISelectPresentedClid interface. The GetPresentedClid method performs the following tasks:

  • receives the details (clickToDialResult) of the Click to dial event
  • uses the objectId from clickToDialResult to identify the contact record from which the agent initiated the call
  • locates the record for the account to which the contact belongs
  • returns the number from the custom field (ClickToDialPresentedClid__c) on the account record

ContactWorld uses the returned number as the callback number. The number appears both in ContactPad and on handset of the person that the agent has clicked to dial.

 Example 2

In our second example, the presented callback number is set according to whether the customer's telephone number is a mobile—or cell—number, a number with a London area code, or other number.

The Apex class that implements NVMContactWorld.SelectPresentedClidByPolicy is called SelectPresentedClidForContactByAccount:

global class SelectPresentedClidByPolicy implements NVMContactWorld.ISelectPresentedClid{
     
    // The clickToDialResult parameter contains the response string from the Salesforce ClickToDial event.
    // Salesforce passes the clickToDialResult parameter to us:
    // for example '{number: "07890123456", objectId: "0032000001FTGSo", object: "Contact"}'
    // Find more information at: https://www.salesforce.com/us/developer/docs/api_cti/Content/sforce_api_cti_onclicktodial.htm
  
    global String GetPresentedClid(String clickToDialResult){
          
        Map<String,Object> clickToDialResultMap = (Map<String,Object>)JSON.deserializeUntyped(clickToDialResult);
        String customerNumber = (String)clickToDialResultMap.get('number');
        
        //Account default
        String presentedClid = '01234567890';
          
        if (customerNumber.startsWith('07') || customerNumber.startsWith('+447')) {
            //Mobile, or cell, numbers
            presentedClid = '07123456789';
        } else if (customerNumber.startsWith('0207') || customerNumber.startsWith('+44207')) {
            //Basingstoke numbers
            presentedClid = '02071234567';
        }
          
        return presentedClid;    
    }
}

When an agent clicks to dial a number in a contact record, ContactWorld runs the GetPresentedClid method in the SelectPresentedClidByPolicy. The GetPresentedClid method performs the following tasks:

  • receives the details (clickToDialResult) of the Click to dial event
  • uses the number from clickToDialResult to identify the customer's telephone number, which the agent clicked to dial
  • returns the appropriate number:
    • if the customer's number is a mobile number, the method returns a mobile number
    • if the customer's number has a London area code, the method returns a London area code
    • if the customer's number is any other number, the method returns the default number (01234567890)

ContactWorld uses the returned number as the callback number. The number appears both in ContactPad and on handset of the person that the agent has clicked to dial.

This feature is not currently available for calls made from the NVM Call action in Salesforce1.

  • No labels