Интеграция заключается в два этапа:
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;
КонецЕсли;
КонецФункции