Настройка виртуальной АТС МТС в УНФ (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 набор номера

См. также

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

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

4100 руб.

28.04.2022    16028    18    10    

41

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

Продукт интеграции возможностей Облачной АТС Билайн в систему 1С Предприятие 8. Звонки прямо из программы 1С, уведомления о текущих звонках, регистрация пропущенных и завершенных вызовов, ведение журнала, анализ данных об использовании мобильной связи.

12000 руб.

20.03.2019    23013    54    0    

37

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

Связка 1С и виртуальных АТС (от Мегафон, Zadarma, Новофон ) позволит четко ответить на вопросы: кто звонил, когда звонил, кому звонил, сколько говорил, сколько ждал на линии, что особо актуально при удаленной работе операторов и менеджеров, о чем говорили, результат разговора, обработаны ли пропущенные звонки, прослушать сам разговор, запланировать встречу, звонок, напоминание по результатам разговора. Возможность позвонить клиенту прямо из 1С одной кнопкой, оставить комментарий о звонке, посмотреть по каждому партнеру и клиенту, контакту клиента историю его звонков и взаимоотношений.

9600 руб.

08.05.2020    27470    31    74    

42

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

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

2400 руб.

04.05.2018    46873    122    66    

66

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

Удобная универсальная обработка для быстрых звонков с мобильного телефона по контактам из 1С. Поддерживается работа с другими видами контактов. Возможно копирование карточки контакта на мобильный телефон. Просто отсканируйте QR-код камерой телефона!

5 стартмани

26.11.2024    163    1    bme    0    

3

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

Модуль интеграции с виртуальной телефонией Новофон для решения 1С:Управление нашей фирмой, редакция 3.0. Обновление релиза в связи с переходом на API 2.0 поставщиком сервиса. Бета-версия 2.0 до окончания перехода поставщиком на новую версию.

12000 руб.

26.02.2024    974    1    0    

2

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

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

1 стартмани

18.01.2024    1001    1    v3132    0    

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