БСП: добавление нового провайдера SMS
Небольшая статья о том, как добавить нового провайдера SMS на примере конфигурации «Управление торговлей 11», используя библиотеку стандартных подсистем (БСП)
- Описание
- Подробнее
Описание
Перед началом добавления нового провайдера услуг нужно убедиться в работоспособности его API. Поможет в этом замечательный инструмент-расширение к браузеру Google Chrome click.
Будем считать, что все тесты прошли успешно. Во-первых, нужно разрешить возможность редактирования общего модуля ОтправкаСМСПереопределяемый и перечисления ПровайдерыСМС:
Во-вторых, добавить в перечисление ПровайдерыСМС название своего провайдера:
В-третьих, выполнить настройку провайдера SMS, указать логин и пароль в базе данных. Вкладка «Администрирование»:
Далее нужно определить описание взаимодействия с API в общем модуле ОтправкаСМСПереопределяемый. Нужно переопределить 3 пустых процедуры:
// Проверяет правильность сохраненных настроек отправки SMS. Процедура ПриПроверкеНастроекОтправкиSMS(НастройкиОтправкиSMS, Отказ) // Отправляет SMS через настроенного поставщика услуги, возвращает идентификатор сообщения. Процедура ОтправитьSMS(ПараметрыОтправки, Результат) // Запрашивает статус доставки SMS у поставщика услуг. Процедура СтатусДоставки(ИдентификаторСообщения, Провайдер, Логин, Пароль, Результат)
Важно, провайдер alphasms использует для коммуникации POST-запросы, на входе и выходе xml-файлы, у других провайдеров может быть все иначе (GET, POST, etc. и другие форматы).
Код процедуры ПриПроверкеНастроекОтправкиSMS у меня получился такой:
Процедура ПриПроверкеНастроекОтправкиSMS(НастройкиОтправкиSMS, Отказ) Экспорт Перем Провайдер, Логин, Пароль; Если ТипЗнч(НастройкиОтправкиSMS) = Тип("Структура") Тогда Если НастройкиОтправкиSMS.Свойство("Логин", Логин) И НастройкиОтправкиSMS.Свойство("Пароль", Пароль) И НастройкиОтправкиSMS.Свойство("Провайдер", Провайдер)Тогда Если Логин = Неопределено ИЛИ ПустаяСтрока(Логин) Тогда Отказ = Истина; КонецЕсли; Если Пароль = Неопределено ИЛИ ПустаяСтрока(Пароль) Тогда Отказ = Истина; КонецЕсли; Если Провайдер = Неопределено ИЛИ Провайдер = Перечисления.ПровайдерыSMS.ПустаяСсылка() Тогда Отказ = Истина; КонецЕсли; Иначе Отказ = Истина; КонецЕсли; Иначе Отказ = Истина; КонецЕсли; КонецПроцедуры
Код отправки SMS у меня базировался на API провайдера:
- тело POST запроса в кодировке «UTF-8»: