The CreatorCon Call for Content is officially open! Get started here.

CTI Integration from Avaya to ServiceNow

Chris Gillett
Kilo Explorer

Hello,

We have just started project where we are looking at integrating our Avaya IVR with ServiceNow.  I am very new to this so please excuse any silly questions.  The use case we are trying to implement is defined below.  Does any one have any experience of this or any documentation that you could point me in the direction of?  Any help with need to be great.

  1. A User calls the Service Desk using their company mobile phone;
  2. The IVR (Avaya) receives the call and contacts ServiceNow to match the number that was used to make the call with a ServiceNow User’s number in the ‘mobile’ or ‘business phone’ field.
  3. ServiceNow finds the caller’s details and passes back to Avaya.
  4. When Agent accepts the call in ServiceNow an 'Call' is opened automatically with the Caller's details already populated.

Many thanks

Chris

1 ACCEPTED SOLUTION

Manoj Kumar16
Giga Guru

Please follow the below steps:

1. All the users must be having company mobile number tagged to their user profile in ServiceNow

2. Ask Avaya team to redirect to the below URL with the mobile number or phone number amended

https://INSTANCE_NAME.service-now.com/incident.do?sys_id=-1&sysparm_query=active=true&sysparm_stack=incident_list.do?sysparm_query=active=true&caller_phone=PHONE_NUMBER_OF_THE_USER%20INTL

3. Create an on Load Client script

function onLoad() {
//Type appropriate comment here, and begin script below
if(g_form.isNewRecord()){
var ph, incUrl;
incUrl = window.location.href;
ph = incUrl.split('caller_phone=').pop().split('%20INTL')[0];
var str='mobile_phoneLIKE'+ph+'^ORphoneLIKE'+ph;

var ga = new GlideAjax('PopulateRequestedFor');
ga.addParam('sysparm_name', 'reqForValue');
ga.addParam('sysparm_ph_number', ph);
ga.getXML(urlParse);
}
function urlParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('caller_id',answer);
}
}

4. Create an Ajax call- Script Include

Name-PopulateRequestedFor

Client Callable- True

 

var PopulateRequestedFor = Class.create();
PopulateRequestedFor.prototype = Object.extendsObject(AbstractAjaxProcessor,{
    reqForValue: function() {
		var phnum = this.getParameter('sysparm_ph_number');
		gs.log("The phone number is "+phnum);
		var str='mobile_phoneLIKE'+phnum+'^ORphoneLIKE'+phnum;
		var gr= new GlideRecord('sys_user');
		gr.addEncodedQuery(str);
		gr.query();
		while(gr.next())
			{
				var answer=gr.sys_id;
				return answer;
			}
    },
	
    type: 'PopulateRequestedFor'
});

 

So whenever Avaya gets a call with the number it redirects the user to the given URL with embedded phone number, as soon as the URL is loaded there is a client script on Load which search's for the user and populates in the caller name

View solution in original post

3 REPLIES 3

Manoj Kumar16
Giga Guru

Please follow the below steps:

1. All the users must be having company mobile number tagged to their user profile in ServiceNow

2. Ask Avaya team to redirect to the below URL with the mobile number or phone number amended

https://INSTANCE_NAME.service-now.com/incident.do?sys_id=-1&sysparm_query=active=true&sysparm_stack=incident_list.do?sysparm_query=active=true&caller_phone=PHONE_NUMBER_OF_THE_USER%20INTL

3. Create an on Load Client script

function onLoad() {
//Type appropriate comment here, and begin script below
if(g_form.isNewRecord()){
var ph, incUrl;
incUrl = window.location.href;
ph = incUrl.split('caller_phone=').pop().split('%20INTL')[0];
var str='mobile_phoneLIKE'+ph+'^ORphoneLIKE'+ph;

var ga = new GlideAjax('PopulateRequestedFor');
ga.addParam('sysparm_name', 'reqForValue');
ga.addParam('sysparm_ph_number', ph);
ga.getXML(urlParse);
}
function urlParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('caller_id',answer);
}
}

4. Create an Ajax call- Script Include

Name-PopulateRequestedFor

Client Callable- True

 

var PopulateRequestedFor = Class.create();
PopulateRequestedFor.prototype = Object.extendsObject(AbstractAjaxProcessor,{
    reqForValue: function() {
		var phnum = this.getParameter('sysparm_ph_number');
		gs.log("The phone number is "+phnum);
		var str='mobile_phoneLIKE'+phnum+'^ORphoneLIKE'+phnum;
		var gr= new GlideRecord('sys_user');
		gr.addEncodedQuery(str);
		gr.query();
		while(gr.next())
			{
				var answer=gr.sys_id;
				return answer;
			}
    },
	
    type: 'PopulateRequestedFor'
});

 

So whenever Avaya gets a call with the number it redirects the user to the given URL with embedded phone number, as soon as the URL is loaded there is a client script on Load which search's for the user and populates in the caller name

Chris Gillett
Kilo Explorer

Thanks Manoj for the very detailed information, this is very, very useful.

 

Regards

Chris

RahulMishra01
Tera Contributor

Hey Chris,

 

This use case seems to empower Avaya contact center agents with ServiceNow data on their screens as soon as the IVR routes a call to them. The readily available customer information in real-time helps improve AHT and FCR while enhancing customer satisfaction and experience.NovelVox’s agent desktop integration for Avaya contact centers is intended to equip agents with the same effortless experience. By leveraging ServiceNow open API accessibility, the complete application is embedded within the agent’s workspace, saving them to go back and forth between the applications.  

 

Download some useful assets on Avaya ServiceNow integration from here: https://www.novelvox.com/integrations/servicenow/