Интеграция с UniBell

Интеграция заключается в два этапа:

1) Отправка голосового сообщения

2) Обработконфигурациика результата доставки голосового сообщения до абонента.

 

Реализация первого этапа.

На первом этапе происходит отправка POST - запроса с заданплатфорконсоль отчетов маными параметрами.

Функция ОтправитьГолосовоеОповещение(Контрагент, ТекстОповещения) 
    
    ОповещениеОтправлено = Ложь;        
    
    Соединение = Новый HTTPСоединение("api.unibell.ru",,,,,3,); 
    
    IDУведомления = Строка(Новый УникальныйИдентификатор);
    
    Структура = Новый Структура;

    Структура.Вставить("reference",  IDУведомления);
    Структура.Вставить("sourceAddr", "78002220480");
    
    МобильныйНомер = ПолучитьКонтактнуюИнформацию(Контрагент, Справочники.ВидыКонтактнойИнформации.ТелефонСотовыйКонтрагенты);
    МобильныйНомер = "7" + Прав(СтроковыеФункцииКлиентСервер.ОставитьТолькоЦифрыВСтроке(МобильныйНомер), 10);
    Структура.Вставить("destAddr", МобильныйНомер);
    Структура.Вставить("attempsNumber", 1);
    Структура.Вставить("attempsInterval", 30);
    Структура.Вставить("scenarioData", "text=" + ТекстОповещения);
    
    // Формируем JSON для запроса
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина)); 
    
    ЗаписатьJSON(ЗаписьJSON, Структура);
    СтрокаJS = ЗаписьJSON.Закрыть();         
    
    Заголовки = Новый Соответствие;    
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("X-Authorization", "AccessKey (здесь указывается Ваш ключ API)");
    
    Запрос = Новый HTTPЗапрос("/apps/activate", Заголовки);
    Запрос.УстановитьТелоИзСтроки(СтрокаJS);
    
    Ответ = Соединение.ОтправитьДляОбработконфигурациики(Запрос);
    
    Если Ответ.КодСостояния = 200 Тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
        Если Данные.status = "ok" Тогда
            //Записываем в регистр, чтобы в дальнейшем обработчетыотать по факту доставки оповещения до абонента
            МенеджерЗаписи = РегистрыСведений.ГолосовыеОповещения.СоздатьМенеджерЗаписи();
            МенеджерЗаписи.Период = ТекущаяДата();
            МенеджерЗаписи.ID = IDУведомления;
            МенеджерЗаписи.Контрагент = Контрагент;
            
            МенеджерЗаписи.ИнформацияЗапроса = СтрокаJS;            
            МенеджерЗаписи.Записать();
            
            ОповещениеОтправлено = Истина;
        Конец автоматизацией Если;        
    Конец автоматизацией Если;
    
    Возврат управления ОповещениеОтправлено;
    
Конец автоматизацией Функции

 

Реализация второго этапа.

Юнибелл по факту доставки/недоставки оповещения возвращает коллбэк.

Для этого необходимо реализовать на своей стороне HTTP-сервис, и в личном кабинете указать путь к нему. 

По этому адресу Юнибелл будут возвращать коллбэк по каждому оповещению.

Процесс создания HTTP-сервиса довольно простой и не относится к этой статье. Ниже представлен лишь код данного сервиса.

Функция ОбработконфигурацииатьВходящийЗапрос(Запрос) Экспорт
    
    Тип = Запрос.ПараметрыЗапроса.Получить("type");
    
    Если Тип = "endCallback" Тогда
        
        ИД = Запрос.ПараметрыЗапроса.Получить("reference");
        РезультатВыполнения = Запрос.ПараметрыЗапроса.Получить("state");
        КодОшибки = Запрос.ПараметрыЗапроса.Получить("error");
                
        НаборЗаписей = РегистрыСведений.ГолосовыеОповещения.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.ID.Установить(ИД);
        НаборЗаписей.Прочитать();
        
        Если НаборЗаписей.Количество() > 0 Тогда
            
            Запись = НаборЗаписей[0];
            Если Число(КодОшибки) = 0 Тогда
                Запись.Доставлено = Истина;
            Конец автоматизацией Если;
            
            ЗаписьJSON = Новый ЗаписьJSON;
            ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина)); 
            
            ЗаписатьJSON(ЗаписьJSON, Запрос.ПараметрыЗапроса);
            СтрокаJS = ЗаписьJSON.Закрыть();
            
            Запись.ИнформацияОтвета = СтрокаJS;
            НаборЗаписей.Записать();
            
            //Обработконфигурацииали успешно, ответим
            ОтветHTTP = Новый HTTPСервисОтвет(200);        
            Возврат управления ОтветHTTP;
            
        Иначе
            
            ОтветHTTP = Новый HTTPСервисОтвет(403);        
            Возврат управления ОтветHTTP;
            
        Конец автоматизацией Если;
        
    Иначе
        
        ОтветHTTP = Новый HTTPСервисОтвет(403);        
        Возврат управления ОтветHTTP;
        
    Конец автоматизацией Если;        
    
Конец автоматизацией Функции

 

Скриншоты


image.png

image.png

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru