Отправка SMS через web-сервис turbosms.com.ua (SOAP)

Простой пример отправки SMS по протоколу SOAP через сервис turbosms.com.ua

На этом сайте уже видел реализации отправки СМС через  turbosms.com.ua , но там отправка сделана через mysql-connector .

Возможно, кому-то так и удобнее, но что делать тем, у кого порты нужные закрыты и наружу только HTTP смотрит ?  — Ответ: отправлять СМС по SOAP TurboSMS.

И чтобы не тратить ваше время на изучение документации на их сайте делюсь обработкой, в которой реализованы следующие методы:

  1. Auth — авторизирует пользователя на сервере
  2. GetCreditBalance — возвращает остаток на счёте пользователя
  3. SendSMS — отправляет сообщения
  4. GetMessageStatus — возвращает статус доставки сообщения

C HTTP работаю через WinHttp.WinHttpRequest.5.1, поэтому код процедур легко можно переписать и для 7.7 :

Функция Auth(ТурбоЛогин,ТурбоПароль,Прокси)
ВинХТТП =Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
Если ЗначениеЗаполнено(Прокси) Тогда
ВинХТТП.SetProxy(2,Прокси);
КонецЕсли;
ВинХТТП.Open("POST","http://turbosms.in.ua/api/soap.html",0);
sXML =
"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tur=""http://turbosms.in.ua/api/Turbo"">
| <soapenv:Header/>
| <soapenv:Body>
|    <tur:Auth>
|       <!--Optional:-->
|       <tur:login>"+СокрЛП(ТурбоЛогин)+"</tur:login>
|       <!--Optional:-->
|       <tur:password>"+СокрЛП(ТурбоПароль)+"</tur:password>
|    </tur:Auth>
| </soapenv:Body>
|</soapenv:Envelope>";

ВинХТТП.Send(sXML);
Если Найти(ВинХТТП.ResponseText(),"Вы успешно авторизировались")>0 Тогда
Возврат ВинХТТП.getResponseHeader("Set-Cookie");
Иначе
Возврат "";
КонецЕсли;
КонецФункции


Функция GetCreditBalance(Прокси,Куки)
ВинХТТП =Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
Если ЗначениеЗаполнено(Прокси) Тогда
ВинХТТП.SetProxy(2,Прокси);
КонецЕсли;
ВинХТТП.Open("POST","http://turbosms.in.ua/api/soap.html",0);
sXML =
"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tur=""http://turbosms.in.ua/api/Turbo"">
|<soapenv:Header/>
| <soapenv:Body>
|  <tur:GetCreditBalance/>
| </soapenv:Body>
|</soapenv:Envelope>";
ВинХТТП.setRequestHeader ("COOKIE", Куки);
ВинХТТП.Send(sXML);
Возврат ПарситьСтроку(ВинХТТП.ResponseText(),"<ns1:GetCreditBalanceResult>","</ns1:GetCreditBalanceResult>");
КонецФункции

2 Comments

  1. script

    Здравствуйте. Обработка не работает. Возможно у Вас есть обновленный вариант?

    {ВнешняяОбработка.WS.Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Send)
    ВинХТТП.Send(sXML);
    по причине:
    Произошла исключительная ситуация (WinHttp.WinHttpRequest): Время ожидания операции истекло
    Reply
  2. 6есик

    Обработка рабочая, судя по вашей ошибке — у вас или порты закрыты фаерволом или проблемы с интернетом на том компьютере где запускаете.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *