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

25.09.17

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Отправка СМС через МЕГАФОН по https для корпоративных клиентов.:
.epf 17,60Kb ver:1.0
64
64 Скачать (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 рассылки мегафон

См. также

Платные (руб)

Битрикс24 – это цифровое рабочее пространство для автоматизации вашей компании и работы сотрудников. Ставьте и контролируйте задачи, отправляйте файлы и голосовые сообщения, общайтесь в чате, обсуждайте планы и принимайте взвешенные решения. Используйте для работы десктопное и мобильное приложения. Мы проконсультируем по стоимости Bitrix24 и выбору нужного тарифа, а также поможем внедрить решение в вашем бизнесе!

159000 руб.

30.11.2020    30850    153    0    

57

Пользователь Платформа 1С v8.3 Управленческий учет Платные (руб)

Решение 1С:CRM 3.0 предназначено для компаний с потребностью совместной работы более 5 пользователей в единой информационной базе. Решение позволяет автоматизировать все бизнес-процессы компании в соответствии с концепцией CRM, включая закупки, продажи, маркетинг, сервисное обслуживание и пр.

9700 руб.

10.11.2015    43545    34    1    

20

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

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

30000 руб.

02.11.2015    113390    103    88    

186

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С. Бесплатный период Техподдержки - 1 месяц.

60000 руб.

07.05.2019    34219    64    45    

24

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

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

12000 руб.

20.03.2019    23246    55    0    

38

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

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

18000 руб.

08.11.2016    61805    40    23    

62

Взаиморасчеты Производство готовой продукции (работ, услуг) Рабочее место Пользователь Руководитель проекта Платформа 1С v8.3 Гостиничный бизнес Управленческий учет Платные (руб)

Конфигурация для автоматизации учета работы мини-отеля или хостела. Конфигурация максимально проста, что позволяет приступить к работе максимально быстро! Достаточно посмотреть 9-ти минутное видео, в котором показаны основные принципы работы с конфигурацией. Разработана на управляемых формах. Код открыт, при необходимости конфигурацию можно дорабатывать под свои нужды.

8400 руб.

30.09.2015    40930    13    40    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
В файле обработки отсутствует вкладка "Настройки"
Оставьте свое сообщение