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

22.06.22

Интеграция - Телефония, SIP

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

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

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

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 нет возможности поднять этот сервис на стороне УНФ. Т.к. МТС стучится к нам используя ключ авторизации а не Логин и пароль пользователя.  Оказывается можно.

В файле публикации default.vrd прописываем

Пример файловой базы:

ib="File="[КаталогВиртуальноПриложения]";Usr=[Пользователь];Pwd=[Пароль];"

Пример клиент-серверной базы:

ib="Srvr="tcp://[ИмяСервера]";Ref="[ИмяПубликации]";Usr=[Пользователь];Pwd=[Пароль];"

Получится примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		base="/unf"
		ib="File=&quot;D:\УНФ&quot;;Usr=TelephonyService;Pwd=&quot;111111111&quot;;">

Ссылка на пруфы:

 https://its.1c.ru/db/metod81#content:6966:hdoc ) 

А Токен авторизации проверяется в самом коде программы.

В модуле http-сервиса:

 	Если НЕ ТелефонияСервер.КорректнаяПодписьЗапроса(Перечисления.ДоступныеАТС.ДомRu, Запрос.Заголовки["X-AUTH-TOKEN"]) Тогда
 			Ответ = СообщениеОбОшибке(
			400,
			ИмяСобытияДляЖурналаРегистрации,
			НСтр("ru='Некорректный ключ'"));
		ТелефонияСервер.ЛогироватьИсходящийОтвет(Ответ, ИдентификаторЗапроса);
		Возврат Ответ;
	КонецЕсли;

Однако, в дальнейшем есть смысл поднять сервис на отдельно взятой конфигурации и обеспечить взаимодействие с ней УНФ. Чтобы в УНФ поступали только "рабочие" звонки. Практика тестирования показала, что в регистрах оседает много ненужного мусора, который сложно отсеять. Информации во входящих запросах МТС маловато и ее сложно однозначно идентифицировать как конкретное событие. Примерно 90% информации - сервисного характера (пытаюсь дозвониться на ИД 1,2,3,4,5,6... ИД 3 ответил, ИД 1,2,4,5... положили трубку, а они и не брали, ИД3 - активен разговор, ИД3 закончил разговор и, зачем-то, повтор об остальных, которые не взяли трубки, и это продублировано с 2х IP адресов МТС).  Но это мое мнение и оно может быть не единственным. 

Далее продолжу разговор о получении записей разговора. Сейчас у них технические работы. Ждем...

МТС виртуальная АТС vpbx.mts.ru набор номера

См. также

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    14123    11    8    

36

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    45186    117    66    

61

Модуль интеграции с телефонией Новофон для 1С:УНФ 3.0

Телефония, SIP Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Модуль интеграции с виртуальной телефонией Новофон для решения 1С:Управление нашей фирмой, редакция 3.0.

12000 руб.

26.02.2024    372    0    0    

0

Звонок из 1С через сервис сайта zvonok.com

Телефония, SIP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 Россия Абонемент ($m)

Данная внешняя обработка позволяет делать звонки из программы 1С, используя сервис сайта zvonok.com.

1 стартмани

18.01.2024    486    0    v3132    0    

3

Как мы проводили автообзвон должников

Телефония, SIP Россия Бесплатно (free)

Делимся опытом разработки системы обзвона абонентов-задолжников.

18.01.2024    705    slavik27    11    

5

Простые звонки, модификация расширения для УНФ

Телефония, SIP Адаптация типовых решений 8.3.14 1С:Управление нашей фирмой 1.6 Россия Абонемент ($m)

Модифицированное расширение "Простые звонки" для УНФ (1.6.25 и выше).

1 стартмани

20.09.2022    4806    2    Scroudge    3    

3

Интеграция с программой для звонков Softphone.Pro

Телефония, SIP Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Отображение информации о клиенте из 1С при входящем звонке — настраиваем интеграцию с Softphone.Pro.

1 стартмани

20.07.2022    3031    1    nikolay.surdo    0    

3

Выгрузка записей разговоров с АТС Билайна

WEB-интеграция Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Внешняя обработка для выгрузки записей разговоров с виртуальной АТС Билайна.

1 стартмани

01.07.2022    2435    2    s_evgen    0    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1799092 15.06.22 11:58 Сейчас в теме
Евгений, спасибо за материал! Можете как-нибудь связаться со мной? Может, контакты в моём профиле помогут. Есть пара вопросов по статье.
Оставьте свое сообщение