Тарифы  Услуги  API  Партнерам  О сервисе  Контакты 
8 (800) 700 7672
Бесплатно по России
 

Интеграция с сервисом (API)

API позволяет рассылать сообщения через ваши проекты и сервисы по протоколам HTTP/HTTPS, SMTP и SMPP. Готовые библиотеки на разных языках программирования подключаются к вашему проекту и помогают отправлять сообщения из любого места с помощью одной команды. Для упрощенной авторизации вместо пары логин и пароль можно использовать специальный API-ключ.


HTTP/HTTPS SMTP SMPP SOAP OMS SMS-команды Библиотеки и примеры кода

Для Microsoft Excel

Скачать файл библиотеки: smsc_api_excel.bas

Исходный код библиотеки:
Attribute VB_Name = "smsc_api"
' SMSC.RU API (www.smsc.ru) версия 1.3 (27.03.2025)

Public Const SMSC_DEBUG As Byte = 0                '
флаг отладки
Public Const SMSC_CHARSET As String = "utf-8"     ' кодировка сообщения (utf-8 или koi8-r), по умолчанию используется windows-1251

Public SMSC_LOGIN As String                        '
логин клиента
Public SMSC_PASSWORD As String                    ' пароль клиента
Public SMSC_HTTPS As Byte                        '
использовать HTTPS протокол

Public Const SMTP_SERVER As String = "smtp.mail.ru"                ' адрес SMTP сервера
Public Const SMTP_USERNAME As String = "<smtp_user_name>"        '
логин на SMTP сервере
Public Const SMTP_PASSWORD As String = "<smtp_password>"        ' пароль на SMTP сервере
Public Const SMTP_FROM As String = "smtp_user_name@mail.ru"     '
e-mail адрес отправителя

Public CONNECT_MODE As Byte                        ' режим соединения с интернетом: 0 - прямое, 1 - Proxy, 2 - настройки из Internet Exporer
Public PROXY_SERVER As String                     '
адрес Proxy-сервера
Public PROXY_PORT As Integer                    ' порт Proxy-сервера
Public PROXY_AUTORIZATION As Byte                '
флаг использования авторизации на Proxy-сервере
Public PROXY_USERNAME As String                    ' логин на Proxy-сервере
Public PROXY_PASSWORD As String                    '
пароль на Proxy-сервере

Public Connection As Object
Public Formats(14) As String                    ' форматы сообщений

'
Пауза в приложении
'
'
Параметры:
'    PauseTime - время паузы в секундах
'
Private Sub Sleep(PauseTime As Integer)

   
Start = Timer
   
Do While Timer < Start + PauseTime
        DoEvents
    Loop

End Sub


Public Function URLEncode(ByVal Str As String) As String

    Dim Ret

    Ret
= ""
   
CharStr = " !""@№#;%:?*().,/$^&\+"

   
Str = Trim(Str)
    For
i = 1 To Len(Str)

       
S = Mid(Str, i, 1)
       
SymCode = Asc(S)

       
' Перевод из UNICODE в ASCII
        If ((SymCode > 1039) And (SymCode < 1104)) Then
            SymCode = SymCode - 848
        ElseIf SymCode = 8470 Then
            SymCode = 185
        ElseIf SymCode = 1105 Then
            SymCode = 184
        ElseIf SymCode = 1025 Then
            SymCode = 168
        End If

        fl_replace = 0
        If InStr(1, CharStr, S, vbBinaryCompare) > 0 Then
            Ret = Ret & "%" & Hex(Int(SymCode / 16)) & Hex(Int(SymCode Mod 16))
            fl_replace = 1
        End If

        If (SymCode <= 127) And (fl_replace = 0) Then
            Ret = Ret & S
        ElseIf fl_replace = 0 Then
            Ret = Ret + "%" + Hex(Int(SymCode / 16)) & Hex(Int(SymCode Mod 16))
        End If

    Next i

    URLEncode = Ret

End Function

'
Функция чтения URL.
'
Private Function SMSC_Read_URL(URL As String, Params As String) As String

    Dim Ret As String

    On Error GoTo 0
    Connection.Open "POST", Trim(URL), 0
    Connection.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    Connection.Send Trim(Params)
    Ret = Connection.ResponseText()
    If Err.Number <> 0 Then
        MsgBox "Не удалось получить данные с сервера!", , "Ошибка"
        SMSC_Read_URL = ""
        Exit Function
    End If

    SMSC_Read_URL = Ret

End Function

'
Функция вызова запроса. Формирует URL и делает 5 попыток чтения.
'
Private Function SMSC_Send_Cmd(Cmd As String, Optional Arg As String = "")

    Dim URL As String, Params As String, Ret As String

    URL_orig = IIf(SMSC_HTTPS, "https", "http") & "://smsc.ru/sys/" & Cmd & ".php"
    URL = URL_orig

    Params = "login=" & SMSC_LOGIN & "&psw=" & SMSC_PASSWORD & "&fmt=1" _
            & IIf(SMSC_CHARSET = "", "", "&charset=" + SMSC_CHARSET) & "&" & Arg

    i = 1
    Do
        If i > 1 Then
            URL = URL_orig
            URL = Replace(URL, "://smsc.ru/", "://www" & i & ".smsc.ru/")
        End If

        Ret = SMSC_Read_URL(URL, Params)
        i = i + 1
    Loop While (Ret = "" And i < 6)

    If (Ret = "") Then
        If SMSC_DEBUG Then MsgBox "Ошибка чтения адреса: " & URL, , "Ошибка"
        Ret = ","    '
фиктивный ответ
    End
If

   
SMSC_Send_Cmd = Split(Ret, ",", -1, vbTextCompare)

End Function

' Функция получения баланса
'
' без параметров
'
' возвращает баланс в виде строки или CVErr(N_Ошибки) в случае ошибки
'
Public Function Get_Balance()

   
Dim m

    m
= SMSC_Send_Cmd("balance")    ' (balance) или (0, -error)

    If UBound(m) = 0 Then
        Get_Balance = m(0)
    Else
        Get_Balance = CVErr(-m(1))
    End If

End Function

'
Функция отправки SMS
'
'
обязательные параметры:
'
'
Phones - список телефонов через запятую или точку с запятой
' Message - отправляемое сообщение
'
' необязательные параметры:
'
' Translit - переводить или нет в транслит (1 или 0)
'
Time - необходимое время доставки в виде строки (DDMMYYhhmm, h1-h2, 0ts, +m)
' Id - идентификатор сообщения
'
Format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 12 - bots, 13 - telegram)
' Sender - имя отправителя (Sender ID)
'
Query - дополнительные параметры
'
'
возвращает массив (<id>, <количество sms>, <стоимость>, <баланс>) в случае успешной отправки
' либо массив (<id>, -<код ошибки>) в случае ошибки
'
Public Function Send_SMS(Phones As String, Message As String, Optional Translit = 0, Optional Time = 0, Optional Id = 0, Optional Format = 0, Optional sender = "", Optional Query = "")

   
Dim m

    m
= SMSC_Send_Cmd("send", "cost=3&phones=" & URLEncode(Phones) & "&mes=" & Message _
                   
& "&translit=" & Translit & "&id=" & Id & IIf(Format > 0, "&" & Formats(Format), "") _
                   
& IIf(sender = "", "", "&" & IIf(Format = 12, "bot", "sender") & "=" & URLEncode(sender)) _
                   
& "&charset=" & SMSC_CHARSET & IIf(Time = "", "", "&time=" & URLEncode(Time)) _
                   
& IIf(Query = "", "", "&" & Query))


   
' (id, cnt, cost, balance) или (id, -error)

    Send_SMS = m

End Function


'
Функция получения стоимости SMS
'
'
обязательные параметры:
'
'
Phones - список телефонов через запятую или точку с запятой
' Message - отправляемое сообщение
'
' необязательные параметры:
'
' Translit - переводить или нет в транслит (1 или 0)
'
Sender - имя отправителя (Sender ID)
' Query - дополнительные параметры
'
Format - формат сообщения (0 - обычное sms, 1 - flash-sms, 2 - wap-push, 3 - hlr, 4 - bin, 5 - bin-hex, 6 - ping-sms, 7 - mms, 8 - mail, 9 - call, 10 - viber, 11 - soc, 12 - bots, 13 - telegram)
'
'
возвращает массив (<стоимость>, <количество sms>) либо массив (0, -<код ошибки>) в случае ошибки
'
Public Function Get_SMS_Cost(Phones As String, Message As String, Optional Translit = 0, Optional sender = "", Optional Query = "", Optional Format = 0)

    Dim m

    m = SMSC_Send_Cmd("send", "cost=1&phones=" & URLEncode(Phones) & "&mes=" & Message & IIf(Format > 0, "&" & Formats(Format), "") _
                    & IIf(sender = "", "", "&" & IIf(Format = 12, "bot", "sender") & "=" & URLEncode(sender)) _
                    & "&translit=" & Translit & IIf(Query = "", "", "&" & Query))

    '
(cost, cnt) или (0, -error)

   
Get_SMS_Cost = m

End
Function

' Функция проверки статуса отправленного SMS
'
' Id - ID cообщения
'
Phone - номер телефона
'
'
возвращает массив
' для отправленного SMS (<статус>, <время изменения>, <код ошибки sms>)
'
для HLR-запроса (<статус>, <время изменения>, <код ошибки sms>, <код страны регистрации>, <код оператора абонента>,
' <название страны регистрации>, <название оператора абонента>, <название роуминговой страны>, <название роумингового оператора>,
'
<код IMSI SIM-карты>, <номер сервис-центра>)
' либо список (0, -<код ошибки>) в случае ошибки
'
Public Function Get_Status(Id, Phone)

   
Dim m

    m
= SMSC_Send_Cmd("status", "phone=" & URLEncode(Phone) & "&id=" & Id)

   
' (status, time, err) или (0, -error)

    Get_Status = m

End Function

'
Функция получения имен отправителей
'
'
Возвращает массив с именами отправителей
' либо список (0, -<код ошибки>) в случае ошибки
'
Public Function Get_Senders()
   
Dim m

    m
= SMSC_Send_Cmd("get", "get_senders=1")

   
Get_Senders = m

End
Function


' Инициализация подключения
'
Public Function SMSC_Initialize()

   
On Error GoTo 0
    Set Connection
= CreateObject("WinHttp.WinHttpRequest.5.1")
   
Connection.Option 9, 80

   
If Err.Number = 440 Or Err.Number = 432 Then
        MsgBox
"Не удалось создать объект ""WinHttp.WinHttpRequest.5.1""!" & Chr(13) & "Проверьте наличие системной библиотеки ""WinHttp.dll""", , "Ошибка"
       
Err.Clear
    End
If

   
Formats(1) = "flash=1"
   
Formats(2) = "push=1"
   
Formats(3) = "hlr=1"
   
Formats(4) = "bin=1"
   
Formats(5) = "bin=2"
   
Formats(6) = "ping=1"
   
Formats(7) = "mms=1"
   
Formats(8) = "mail=1"
   
Formats(9) = "call=1"
   
Formats(10) = "viber=1"
   
Formats(11) = "soc=1"
   
Formats(12) = ""
   
Formats(13) = "tg=1"

End Function

Полнофункциональная надстройка для отправки SMS-сообщений на основе библиотеки.

Инструкция по установке надстройки:
1) Находясь в главном окне Excel, откройте меню Файл, далее Параметры.
2) Откройте вкладку Надстройки и нажмите кнопку Перейти.
3) В появившемся окне нажмите Обзор и выберите файл с надстройкой.
4) После того, как надстройка появится в окне Доступные надстройки, выделите ее и нажмите ОК.
5) В главном окне во вкладке надстройки появится кнопка Отправить SMS.
6) Чтобы отправить SMS на несколько номеров выделите столбец с номерами и нажмите Отправить SMS.
7) Для отправки индивидуальных сообщений в первом столбце расположите номера телефонов, а во втором тексты сообщений, выделите их и нажмите Отправить SMS.

В некоторых случаях из-за обновления системы безопасности Windows все файлы, полученные из интернета/почты, блокируются при загрузке в Excel. Это делается без каких-либо предупреждающих сообщений.

Если в процессе установки нашей надстройки не появляется кнопка "Отправить SMS" или вкладка "Надстройки", то снять блокировку можно следующим образом:
1. Закрыть все окна Excel.
2. В проводнике выполнить правый клик мыши на файле надстройки.
3. Выбрать пункт "Свойства".
4. На вкладке "Общие" поставить флаг "Разблокировать".
5. Нажать кнопки "Применить" - "OK" или просто "OK".