CommuniGate Pro
+7 (499) 271-31-54 обратный звонок

Интеграция CommuniGate Pro Contact Center с osTicket

Ниже приведен пример простого CG/PL модуля, реализующего интеграцию Контакт-центра CommuniGate Pro и системы osTicket. Модуль использует HTTP запросы к системе osTicket как для авторизации в системе и сохранения значения "Cookie", так и для поиска звонящего клиента в системе и получения данных о нем.

Когда звонок от клиента приходит в Контакт-центр CommuniGate Pro, нижеприведенный модуль ccOsTicketCRM() отправляет запрос на поиск клиента в системе osTicket по номеру телефона и возвращает в модуль Контакт-центра полученные из CRM данные найденного клиента. Эти данные в краткой форме отображаются на всплывающей карточке в Интерфейсе Агента Контакт-Центра в момент прихода звонка от клиента. Если агент имеет также доступ к системе osTicket, то карточка клиента с более подробной информацией автоматически открывается и в osTicket, что дает возможность агенту работать с карточкой в процессе разговора с клиентом.

// ================================================== //
//   Contact Center integration with osTicket CRM     //
//                   Version 2.0                      //
// ================================================== //

function  consultCRM(finalAttempt)       forward;
function  requestCRM(cookie,qParam)      forward;

var monitorSettings;

function ccOsTicketCRM() {
	return consultCRM(false);
}

function consultCRM(finalAttempt) {
	var qParam = EmailUserPart(SIPURItoEmail(RemoteURI()));
	var cookie = GetAccountPreferences("~" + MyEmail() + "/CRMCookie");
	var result;
	if(!IsString(cookie)) {
		result = requestCRM(null,null);        // login to the osTicket CRM
		if(IsDictionary(result) && result.responseCode < 400) {
			cookie = result.("Set-Cookie");
			if(IsString(cookie)) {
				cookie = cookie.subString(0,cookie.findSubString(";"));
				void(ExecuteCLI("UpdateAccountPrefs " + MyEmail() + " {CRMCookie=\"" + cookie + "\";}") != null);
			} else {return null;}
		} else {return null;}
	}
		
	result = requestCRM(cookie,qParam);       // request customer card using stored session 'cookie' value
	if(IsDictionary(result)) {
		if(result.responseCode < 400 && IsData(result.body)) {
			var crmResult = Convert(result.body,result.charset);
			return IsString(crmResult) ? JSONToObject(crmResult) : null;
		} else {  // perhaps the 'cookie' value has expired, try to login and request the customer card one more time
			if(!finalAttempt) {
				void(ExecuteCLI("UpdateAccountPrefs " + MyEmail() + " {CRMCookie=#NULL#;}") != null);
				return consultCRM(true);    
			} else {return null;}
		}
	}
	return null;
}

function requestCRM(cookie,qParam) {
	var url = monitorSettings.iFrameUrl + (qParam == null ? "login.php" : "ajax.php/users/local?q=" + String(qParam));
	var params     = NewDictionary();
	params.method  = qParam == null ? "POST" : "GET";
	params.Cookie  = IsString(cookie) ? cookie : null;
	params.timeout = 2;
	if(qParam == null) {                  // login to the osTicket CRM with 'user'/'password' credentials
		params.body = NewDictionary();
		params.body.do = "scplogin";
		params.body.userid = monitorSettings.crmUser || "user"; // the osTicket CRM user name and password should be redefined
		params.body.passwd = monitorSettings.crmPass || "password";
		params.body.submit = "Log In"; 
	}
	return HTTPCall(url,params);
}

Для получения более подробной информации пишите на support@communigate.ru