Каталог решений - Настройка виртуальной АТС МТС в УНФ (vpbx.mts.ru)

Настройка виртуальной АТС МТС в УНФ (vpbx.mts.ru)

Настройка виртуальной АТС МТС в УНФ (vpbx.mts.ru)

В наличии

«Доводка» УНФ для реализации телефонных звонков с кнопки в программе.

Категория:

Описание

Давно чесались руки, но не было времени для реализации данного функционала.

Итак, начнем настройку.

1. Настройка в личном кабинете https://vpbx.mts.ru/

Главное меню — Методы API:

 

 

Активируем API, генерируем ключ, указываем URL для обратных вызовов (об этом подробнее ниже).

Переходим Главное меню — web hooks, активируем.

 

 

Заполняем настройки CRM УНФ — Облачная телефония:

 

 

Ставим галочку здесь:

 

 

Копируем ключ API и заполняем адрес АТС:

 

 

Заполняем пользователей телефонии. Важно: вместо внутренних телефонов указываем идентификаторы абонентов отсюда (главное меню-абоненты):

 

 

Число в адресной строке и есть идентификатор абонента.

 

 

Заполняем действия при исходящих звонках (входящие мы пока не будем отслеживать, т.к. надо поднять отдельный HTTP сервис для callback-запросов МТС и об этом будет отдельная тема):

 

 

Теперь конфигуратор.

В конфигураторе добавляем расширение. 

Заимствуем процедуру ДополнитьПараметрыОтправки общего модуля ОтправкаЗапросов для исправления запроса по требованиям API МТС:

Вставляем следующий код:

&После("ДополнитьПараметрыОтправки")
Процедура Расш1_ДополнитьПараметрыОтправки(ПараметрыОтправки)    
	
	ИДАбонента =ПараметрыОтправки.ПараметрыТела["user"];
	ИсходящийНомер = ПараметрыОтправки.ПараметрыТела["phone"];
	ПараметрыОтправки.URL = "https://vpbx.mts.ru/api/user/" + ИДАбонента + "/calls?address=tel:" + ИсходящийНомер;
	ПараметрыОтправки.Заголовки.Вставить("X-AUTH-TOKEN", ПараметрыОтправки.ПараметрыТела["token"]);
	ПараметрыОтправки.Заголовки.Вставить("cache-control", "no-cache");


КонецПроцедуры

Запускаем в режиме предприятия, находим контакт для звонка. Нажимаем трубочку, радуемся.

Немного про callback адрес и webhooks.

Из описания методов API:

Для активации API CRM необходимо выбрать в левом меню пункт "Активация API". В нем необходимо активировать API, сгенерировать токен авторизации и настроить URL для обратного вызова. URL для обратного вызова должен быть доступен в публичном интернете.

Если мы не предполагаем использование входящих вызовов в CRM, то можно поднять простой HTTP сервис с методом POST.

 

 

 

Адрес запроса будет выглядеть так:

http://ххх.ххх.ххх.ххх/mts/hs/api/post/subscription

Примерный код обработки входящих запросов

Функция ШаблонURL1subscription(Запрос)   
	
	ТекДата = ТекущаяДата();
	суффикс = Формат(Год(текДата),"ЧГ=") + "_" + Формат(Месяц(Текдата),"ЧГ=") + "_" + Формат(День(Текдата),"ЧГ=");     
	ИмяЛога = "D:\Разработка\МТС\Логи\logHooks_" + суффикс + ".txt";
	ткс = НайтиФайлы(ИмяЛога);           //лог входящих запросо для отладки
	Текст = Новый ТекстовыйДокумент;
	Если НЕ ткс.Количество() = 0 тогда
		Текст.Прочитать(ИмяЛога);  
	КонецЕсли;
	СтрокаЗапрос = Запрос.ПолучитьтелоКакСтроку(); 
	
	Чтение = Новый ЧтениеJSON;   
	Чтение.УстановитьСтроку(СтрокаЗапрос);      
	Попытка           
		мДаты = Новый Массив;            //формат даты в запросе ФорматДатыJSON.JavaScript надо восстанавливать функцией ВосстановитьДатуJSON  
		мДаты.Добавить("startTime");
		мДаты.Добавить("endTime");
		мДаты.Добавить("answerTime");
		Данные = ПрочитатьJSON(Чтение,,мДаты,ФорматДатыJSON.JavaScript,"ВосстановитьДатуJSON",МТС);
	Исключение
		иск = ОписаниеОшибки();
	КонецПопытки;
	Чтение.Закрыть();
	Попытка	
		МТС.ДобавитьЗаписьВходящийЗапрос(Данные); //процедура заполнения регистра с протоколом входящих запросов
	Исключение
		
	КонецПопытки;
	
	Текст.ДобавитьСтроку(Формат(ТекДата,"ДЛФ=T") + "	" + СтрокаЗапрос);
	Текст.Записать(ИмяЛога);
	Ответ = Новый HTTPСервисОтвет(200);
	Возврат Ответ;     

КонецФункции  

И на всякий случай функция разбора даты:

&НаСервере
Функция ВосстановитьДатуJSON(Свойство, Значение, ДополнительныеПараметры) Экспорт
	
	Если Свойство = "answerTime" Или Свойство = "endTime" Или Свойство = "startTime" Тогда
		Результат = Дата(1,1,1);
		Если ЗначениеЗаполнено(Значение) Тогда 
			Попытка
				фЗначение = "new Date(" + Формат(Значение,"ЧГ=") + ")";
				Результат = ПрочитатьДатуJSON(фЗначение, ФорматДатыJSON.JavaScript);     
				Возврат Результат;
			Исключение
			КонецПопытки;
		КонецЕсли;   
	КонецЕсли;   
	
КонецФункции  

Теперь МТС при проверке нашего адреса получит код 200 и не отключит API взаимодействие. До выхода стабильной платформы 8.3.21 нет возможности поднять этот сервис на стороне УНФ. Т.к. МТС стучится к нам используя ключ авторизации а не Логин и пароль пользователя. Поэтому есть смысл поднять сервис на отдельно взятой конфигурации и обеспечить взаимодействие с ней УНФ. Но это мое мнение и оно может быть не единственным. 

has been added to your cart:
Оформление заказа