Отправка СМС через МЕГАФОН по https для корпоративных клиентов

25.09.17

Функциональные - Управление взаимоотношениями с клиентами (CRM)

Рассылка SMS через оператора МЕГАФОН.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Отправка СМС через МЕГАФОН по https для корпоративных клиентов.:
.epf 17,60Kb
63
63 Скачать (1 SM) Купить за 1 850 руб.

Предыстория.

Понадобилось как-то сделать рассылку sms. И случилось так, что корпоративной связью оказался Мегафон. Что может быть проще, подумал я. Ведь в БСП есть модуль рассылки sms. Но не все оказалось так радостно. Так как в БСП не оказалось сервиса Мегафона. И конфигурацию изменять не разрешили, чтобы дописать его туда.

Поиск готового решения не принес результатов. Так как готовые решения были реализованы на внешний компонентах или на ActiveX. И вызывали сомнения в своей работоспособности.

Пообщавшись с техподдержкой, выяснил, что Мегафон предоставляет два варианта использования сервиса, через https и SMPP.

Выбор пал на http, так как рассылка предполагалась разовая, иногда персональная. SMPP подразумевает более оперативную рассылку с большим количеством сообщений. И к тому же это легко реализуется через HTTPСоединение.

После заключения доп. соглашения, Мегафон прислал данные для авторизации и инструкцию, описывающую API своего сервиса.

Описание подключения.

Сервис рассылки у Мегафона располагается на сервере https://a2p-api.megalabs.ru/ адрес ресурса /sms/v1/sms, запросы посылаются в нотации JSON, кодировка UTF-8.

В заголовке передаются авторизационные данные в формате login:pass закодированные Base64. Например, cG8nbX54dGAyqx==.

Обязательное требование - авторизация проходит только с заявленного IP.

Описание запросов.

Запрос отправляется методом POST.

{
	"from": "Johnny_Viper",
	"to": 79001234212,
	"message": "Это тест",
	"callback_url": "http://www.sombodyserver.ru/sms_callback"
}

Параметры:

from - имя отправителя. Тип строка. Обязательный параметр. Имя отправителя может содержать латинские буквы в разных регистрах, цифры, пробелы, а так же спецсимволы: '!"#$%()*+,-./:;<=>?@[\]^_`{|}~. Длина имени отправителя не должна превышать 11 символов, с учетом пробелов. Имя отправителя не может начинаться с одного или нескольких пробелов и/или заканчиваться одним или несколькими пробелами.

to - номер телефона. Тип число. Обязательный параметр. Из-за этого не получится отправить одно сообщение на несколько номеров. Т.е. один запрос - один номер.

message - собственно текст сообщения. Тип строка от 1 до 1000 символов.

callback_url - URL адрес вашей службы, для отправки уведомлений о статусе сообщения. Не обязательный параметр.

msg_id - УИД сообщения. Тип строка от 1 до 16 символов. Не обязательный параметр. По этому идентификатору можно получить состояние сообщения. Получил его абонент или нет. А так же сервис по этому номер понимает что сообщение с таким УИД уже отправлялось и не допускает дублей.

Реализация.

Для запроса нам понадобятся заголовки и тело запроса в нотации JSON.

Заголовки выглядят так:

Заголовоки = Новый Соответствие;
Заголовоки.Вставить("Authorization", "Basic " + ЛогинИПарольЗашифрованныйBase64);
Заголовоки.Вставить("Content-Type", "application/json; charset=utf-8");

Далее формируем запрос:

НТТРЗапрос = Новый HTTPЗапрос("/sms/v1/sms", Заголовоки);
НТТРЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);

Тело запроса формируем примерно так:

ЗаписьJSON = Новый ЗаписьJSON;
	
ЗаписьJSON.ПроверятьСтруктуру = Ложь;

ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON;
	
ИмяФайлаОтвета = ПутьКФайлуОтвета;
	
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	
ЗаписьJSON.ЗаписатьНачалоОбъекта();
	
ЗаписьJSON.ЗаписатьИмяСвойства("from");	
ЗаписьJSON.ЗаписатьЗначение(Отправитель);
	
ЗаписьJSON.ЗаписатьИмяСвойства("to");
ЗаписьJSON.ЗаписатьЗначение(Номер);
	
ЗаписьJSON.ЗаписатьИмяСвойства("message");
ЗаписьJSON.ЗаписатьЗначение(Сообщение);
	
ЗаписьJSON.ЗаписатьИмяСвойства("callback_url");
ЗаписьJSON.ЗаписатьЗначение("http://www.sombodyserver.ru/sms_callback");
	
УИДСообщения = СтрЗаменить(Прав(Строка(Новый УникальныйИдентификатор), 17), "-", "");
	
ЗаписьJSON.ЗаписатьИмяСвойства("msg_id");
ЗаписьJSON.ЗаписатьЗначение(УИДСообщения);

ЗаписьJSON.ЗаписатьКонецОбъекта();
ТелоЗапроса = ЗаписьJSON.Закрыть();

Устанавливаем соединение и отправляем запрос.

Попытка
   Соединение = Новый HTTPСоединение("a2p-api.megalabs.ru", , , , ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси("http"), 60, Новый ЗащищенноеСоединениеOpenSSL);
   Соединение.ОтправитьДляОбработки(НТТРЗапрос, ИмяФайлаОтвета);
Исключение
   //ОписаниеОшибки();
КонецПопытки;

Для отправки сообщений этого хватит.

В обработке-примере реализован механизм рассылки по сотрудникам организации. Обработка должна работать в конфигурациях ERP 2, ЗУП 3, КА 2.

Тестировалась на ЕРП - 2.2.4.67.

P.S.: Если статья окажется полезной, у меня не единичный случай применения данной рассылки. Я сделаю описание службы, которая принимает состояние сообщения. И описание встраивания данного функционала в БСП.

В обработке настройки включаются сочетанием клавиш Ctrl+Shift+P.

SMS рассылки мегафон

См. также

Управление взаимоотношениями с клиентами (CRM) Оптовая торговля Розничная торговля Пользователь Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 10 1С:Розница 2 Россия Управленческий учет Платные (руб)

Подсистема призвана упростить и автоматизировать процесс расчета и начисления бонусов покупателей. Бонусная система работает с конфигурациями 1С:УТ 10.3, 1С:Розница. Механизм реализован в начале 2013г. и работает до сих пор с постоянными совершенствованиями.

30000 руб.

02.11.2015    111818    99    87    

182

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

Данная обработка - удобный инструмент в 1С для менеджеров по продажам для повседневной работы с клиентами. Позволяет упростить весь цикл работы с клиентом: первичная консультация по наличию товара, быстрое оформление нового заказа, контроль исполнения заказов. Обработка будет особенно актуальна для компаний, работающих, в основном, с юридическими лицами.

18000 руб.

08.11.2016    60924    39    22    

61

SMS рассылки Оптовая торговля Розничная торговля Пользователь Оперативный учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Клиенту на номер телефона уходит СМС с четырехзначным случайным цифровым кодом. Клиент сообщает код продавцу, если код подходит, только тогда применяется скидка или бонусная программа. Вместо SMS можно направлять входящий звонок на телефон покупателя, последние четыре цифры и будут являться кодом подтверждения.

4500 руб.

06.09.2017    25613    28    2    

35

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

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1356    3    6    

6

Управление взаимоотношениями с клиентами (CRM) Производство готовой продукции (работ, услуг) Учет рабочего времени Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Автомобили, автосервисы Управленческий учет Платные (руб)

Модуль для автоматизации СТО, служащий для планирования записи клиентов на посты (ямы и т.д) на базе УТ 11. Включает в себя Подсистему "СТО", обработку "Планирование СТО", справочник "Посты СТО" и регистр сведений "Резервирование времени СТО". Все остальные объекты полностью типовые.

4800 руб.

04.07.2018    25658    12    5    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ltfriend 25.09.17 13:11 Сейчас в теме
1. Имя пользователя и пароль можно передать в параметрах конструктора HTTPСоединение в место заголовков. Ну тут на любителя.
2. Для такой простой структуры JSON я бы сразу формировал строку без всяких ЗаписьJSON. Кода меньше и проще. Ну опять же на любителя.
3. Зачем нужны все эти "ИмяФайлаОтвета" когда есть объект HTTPОтвет?
2. Захаров_Николай 12 25.09.17 13:52 Сейчас в теме
Согласен, можно все задать строкой.
Это писалось на скорую руку, вслепую, так как авторизованного IP у меня не было.
Файл ответа нужен для отладки.
3. пользователь 16.10.17 14:50
Сообщение было скрыто модератором.
...
4. user669425_potolitsyn 19.10.17 13:41 Сейчас в теме
Сделал отправку SMS по вашей статье, взлетало только так:
НТТРЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса,,ИспользованиеByteOrderMark.НеИспользовать);
5. Захаров_Николай 12 19.10.17 14:14 Сейчас в теме
(4) А запрос как формировали? Не в блокноте?
6. user669425_potolitsyn 19.10.17 14:32 Сейчас в теме
Нет, точно как у Вас ЗаписьJSON, также строкой пробовал, результат одинаков. С дополнением работает в обоих вариантах.
7. Захаров_Николай 12 20.10.17 09:05 Сейчас в теме
(6) По умолчанию этот параметр стоит в состоянии Авто. Следовательно можно предположить, что используются системные настройки.
В документации нет четкого указания используется BOM (Маркер последовательности байтов) или нет.
Все взаимодействие происходит в кодировке UTF-8.

Из этого можно сделать вывод что либо у меня по умолчанию стоит кодировка без BOM (как у большинства у кого тестировался механизм), либо у вас с BOM.
То что вы обнаружили этот момент это очень хорошо. Возможно будет кому-то полезно.
8. j_alenka 25.12.17 10:34 Сейчас в теме
Добрый день! Чтобы использовать сервис рассылки от Мегафона нужно заключать доп соглашение с Мегафоном? Как получить логин и пароль на рассылку?
9. Захаров_Николай 12 25.12.17 10:51 Сейчас в теме
(8) Да. Нужно доп. соглашение. Напишите своему менеджеру.
Надо будет предоставить свой внешний, белый IP.
Придумать имя отправителя - 11 символов латиницей. (слово вместо номера, от которого будет приходить смс).
Скорость отправки предложат в соответствии с выбранным пакетом.
В ответе пришлют логин и пароль.
10. j_alenka 25.12.17 11:03 Сейчас в теме
Спасибо. В Мегафоне категорически отрицают, что у них есть данный сервис( Предлагают только подключить услугу Таргер.
11. j_alenka 25.12.17 12:10 Сейчас в теме
Услуга Мегафона:

МОБИЛЬНОЕ ИНФОРМИРОВАНИЕ
Размещение Рекламно-информационных материалов (РИМ) посредством канала SMS
(подключение через WEB–интерфейс или по SMPP-протоколу)

Тариф «Мобильное информирование. ФИКС»
12. Захаров_Николай 12 25.12.17 14:44 Сейчас в теме
(11) А вы являетесь корпоративным клиентом Мегафона?
13. dvissarov5 11 01.02.18 10:32 Сейчас в теме
Здравствуйте!

При отправке смс возвращает:
1281 Pdu запрещена по правилам роутинга (номера нет в списке ращрешённых или смс не разрешены для system_id, нет сессии для ussd).

С такой ошибкой не сталкивались. С чем связано?
14. Захаров_Николай 12 01.02.18 10:44 Сейчас в теме
(13) Судя по ошибке ваш номер не прошел проверку на сервере. Возможные причины: отправляете с другого IP (не с того который в договоре); вам еще не включили услугу sms.
dvissarov5; +1 Ответить
15. dvissarov5 11 01.02.18 13:26 Сейчас в теме
(14) Спасибо. Будем выяснять
16. pvb2004 19.03.19 11:06 Сейчас в теме
Добрый день, Николай! Скажите, а ЛогинИПарольЗашифрованныйBase64 это как? Просто строка логин+пароль и кодированная Base64, или как?
17. Захаров_Николай 12 20.03.19 23:43 Сейчас в теме
Да верно. Строка логин + пароль.
18. пользователь 24.04.19 20:37
Сообщение было скрыто модератором.
...
19. Mit 06.10.21 12:33 Сейчас в теме
Телефон почему не подставляется
20. Serezha_Ivchik 24.11.23 13:03 Сейчас в теме
Есть шаблоны файлов XML
21. UPKA 02.02.24 14:33 Сейчас в теме
В файле обработки отсутствует вкладка "Настройки"
Оставьте свое сообщение