Эта статья о том, как отправлять SMS из 1С при помощи сервиса МТС Коммуникатор. Сделать это достаточно просто, так как МТС предоставляет весьма удобный веб-сервис. Ниже рассмотрим два способа использования этого веб-сервиса.
Подключение веб-сервиса как WS-ссылку
Создаем новую WS-ссылку, со следующим WSDL: http://www.mcommunicator.ru/m2m/m2m_api.asmx?WSDL

Как видите у данного веб-сервиса достаточно много методов, их назначение и необходимые параметры говорят сами за себя и не нуждаются в описании. Для примера рассмотрим вызов самого очевидного метода SendMessage.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | &НаКлиенте Процедура ОтправитьWS(Команда) ОтправитьSMSЧерезWSСсылку("79151234567", "Текст сообщения", "Имя отправителя", "логин", "пароль"); КонецПроцедуры &НаСервере Функция ОтправитьSMSЧерезWSСсылку(НомерПолучателя, ТекстСообщения, ИмяОтправителя, Логин, Знач Пароль) Пароль = MD5ХешСтрока(Пароль); WSСервис = WSСсылки.МТСКоммуникатор.СоздатьWSПрокси("http://mcommunicator.ru/M2M", "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_API", "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_APISoap"); WSСервис.Пользователь = ""; WSСервис.Пароль = ""; Возврат WSСервис.SendMessage(НомерПолучателя, Лев(ТекстСообщения, 1000), ИмяОтправителя, Логин, Пароль); КонецФункции &НаСервере Функция MD5ХешСтрока(Знач Строка) ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); ХешированиеДанных.Добавить(Строка); Возврат СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); КонецФункции |
Все предельно просто, отмечу только, что номер должен начинаться с цифры — 7. Кроме этого, если версия платформы не позволяет использовать объект «ХешированиеДанных» (в функции «MD5ХешСтрока»), то обратитесь к этой статье и выберите подходящий способ.
Программное подключение и использование веб-сервиса МТС Коммуникатор
Второй способ чуть сложнее, но не требует никаких изменений в конфигурации, все можно сделать внешней обработкой. Это способ взят из «Библиотеки стандартных подсистем», я просто убрал весь код кроме необходимого и собрал все в две функции. Кроме этого изменены конструкторы объектов «WSОпределения» и «WSПрокси» для того, чтобы код работал и в 1С 8.2 (конструкторы этих объектов в 1С 8.2 и 8.3 различаются по количеству параметров). Для примера вызовем метод отправляющий сообщение списку номеров.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | &НаКлиенте Процедура ОтправитьБезWS(Команда) МассивНомеров = Новый Массив; МассивНомеров.Добавить("7915123456789"); ОтправитьSMS(МассивНомеров, "Текст сообщения", "Имя отправителя", "логин", "пароль"); КонецПроцедуры &НаСервере Функция ОтправитьSMS(НомераПолучателей, Текст, ИмяОтправителя, Логин, Знач Пароль) Пароль = MD5ХешСтрока(Пароль); ВебСервис = ПодключитьВебСервис(); ТипArrayOfString = ВебСервис.ФабрикаXDTO.Пакеты.Получить("http://mcommunicator.ru/M2M").Получить("ArrayOfString"); ArrayOfString = ВебСервис.ФабрикаXDTO.Создать(ТипArrayOfString); Для Каждого НомерПолучателя Из НомераПолучателей Цикл ArrayOfString.string.Добавить(НомерПолучателя); КонецЦикла; ArrayOfSendMessageIDs = ВебСервис.SendMessages(ArrayOfString, Лев(Текст, 1000), ИмяОтправителя, Логин, Пароль); Для Каждого SendMessageID Из ArrayOfSendMessageIDs.SendMessageIDs Цикл НомерПолучателя = SendMessageID.Msid; ИдентификаторСообщения = SendMessageID.MessageID; КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция ПодключитьВебСервис() АдресWSDL = "http://www.mcommunicator.ru/m2m/m2m_api.asmx?WSDL"; URIПространстваИмен = "http://mcommunicator.ru/M2M"; ИмяСервиса = "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_API"; ИмяТочкиПодключения = "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_APISoap12"; Таймаут = 60; WSОпределения = Новый WSОпределения(АдресWSDL, "", "", Таймаут); Прокси = Новый WSПрокси(WSОпределения, URIПространстваИмен, ИмяСервиса, ИмяТочкиПодключения, Таймаут); Прокси.Пользователь = ""; Прокси.Пароль = ""; Возврат Прокси; КонецФункции &НаСервере Функция MD5ХешСтрока(Знач Строка) ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); ХешированиеДанных.Добавить(Строка); Возврат СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); КонецФункции |
Замечания по формату номера и получению MD5-хэша такие же как и для предыдущего пункта.
На этом все, надеюсь данная статья Вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Подскажите, как увидеть результат доставки?