Столкнулся с задачей отправки sms из 1С. Спасибо Якову за напутствие в решении данной задачи и указание сервиса avisosms.ru.
На сайте сервиса предоставлена документация по работе с ним. В частности сервис предлагает следующие варианты работы:
После проб и ошибок с протоколом email2sms (ну не любит мой провайдер через smtp слать письма на не очень красивые адреса относя их к спаму и блокируя) был выбран вариант решения с JSON протоколом. Для краткой демонстрации работы сервера приведена небольшая конфигурация. Конфигурация написана на 1С Предприятие 8.2 с поддержкой работы веб-клиента. Для работы конфигурации необходимо заполнить константы:
- ПользовательСМС — Ваш логин в систему;
- ПарольСМС — Ваш пароль в систему;
- ПодписьСМС — Ваш адрес отправителя, который был создан в личном кабинете.
Конфигурация позволяет:
- Отправлять смс контрагенту, номер которого записан в соответствующем реквизите (номер пишем в формате 380ХХХХХХХХХХ);
- Получать статусы отправленных смс.
Ниже приведу код формирования запроса на отправку смс
&НаСервере Функция ОтправитьСервер() УспешнаяОтправка = Ложь; ПараметрJSON = "{'username': '" + Константы.ПользовательСМС.Получить() + "'"; ПараметрJSON = ПараметрJSON + ",'password': '" + Константы.ПарольСМС.Получить() + "'"; ПараметрJSON = ПараметрJSON + ",'request_type': 'send_message'"; ПараметрJSON = ПараметрJSON + ",'destination_address': '" + Объект.Контрагент.НомерТелефона+ "'"; ПараметрJSON = ПараметрJSON + ",'message': '" + Объект.ТекстСМС+ "'"; ПараметрJSON = ПараметрJSON + ",'source_address': '" + Константы.ПодписьСМС.Получить() + "'"; ПараметрJSON = ПараметрJSON + ",flash:'0'}"; Попытка WinHttp=Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("POST","http://api.avisosms.ru/sms/json/",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","Windows-1251"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251"); WinHttp.Send(ПараметрJSON); ТекстОтвет = WinHttp.ResponseText(); Если Найти(ТекстОтвет, "OK_Operation_Completed") Тогда УспешнаяОтправка = Истина; КонецЕсли; Исключение Сообщить("Ошибка соединения:"); Сообщить(ОписаниеОшибки()); КонецПопытки; //Запись отправленной смс в историю Если УспешнаяОтправка Тогда ПозицияКодаНачало = Найти(ТекстОтвет, "messageId") + СтрДлина("messageId")+3; ПозицияКодаКонец = Найти(ТекстОтвет, "}"); КодСМС = Сред(ТекстОтвет, ПозицияКодаНачало, ПозицияКодаКонец-ПозицияКодаНачало-1); СМСРассылка.ЗаписатьСМСВИсторию(Объект.Контрагент, Объект.ТекстСМС, КодСМС); Иначе Сообщить("Отправка смс не состоялась. Текст ошибки: " + ТекстОтвет); КонецЕсли; Возврат УспешнаяОтправка; КонецФункции
SMSDemo.cf (23,9 KiB, 909 скачиваний)
Похожие записи: