HTTP API¶
Описание¶
Предоставляемый API сервис отправки SMS-сообщений позволяет осуществить:
- Аутентификацию
- Получение баланса авторизованного пользователя
- Отправку SMS-сообщения на один или несколько номеров с учетом и без учета часового пояса получателя
- Получение статуса отправленного SMS-сообщения
- Получение SMS-сообщений за период
- Получение статистики по SMS-рассылкам
- Отправку Viber-сообщения на один или несколько номеров без учета часового пояса получателя
- Отправка Viber-сообщения на один или несколько номеров с переотправкой по SMS
- Получение статуса отправленного Viber-сообщения
Внимание
Для использования данного вида интеграции необходимо обратиться к менеджеру компании либо в техническую поддержку для настройки доступа.
API сервиса отправки SMS-сообщений организован в соответствии с принципами REST, что позволяет обмениваться HTTPS-запросами с URL-encoded кодировкой. HTTPS - это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS. Это позволяет обеспечить защиту от атак, основанных на прослушивании сетевого соединения (снифферских атак и атак типа man-in-the-middle), при условии использования шифрующих средств и подтвержденной надежности сертификата сервера.
Запрос к API состоит из следующих элементов:
- основной URL запроса:
https://integrationapi.net/rest/
- ресурс (например: /Sms/SendByTimeZone)
- параметры GET или POST-запроса (в кодировке UTF-8)
Аутентификация¶
Сервис создает ID сессии в системе после прохождения аутентификации данных, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/user/sessionid?login=<Login>&password=<Password>
Параметры запроса представляют собой последовательность пар вида {имя параметра}={значение параметра}
, разделенных символом амперсанда (&
).
Content-Type
для параметров запроса: application/x-www-form-urlencoded
. Это формат для кодирования пар ключ-значение
с возможностью дублирования ключей. Каждая пара ключ-значение отделяется символом &
ключ отделен от значения символом =
. При этом пробелы должны заменяться на знак +
, а затем, используя URL-кодирование, могут быть заменены на буквенно-цифровые символы.
Например:
login: Jonathan
password: a+b==13%!
Должно быть закодировано как:
login=Jonathan&password=a%2Bb%3D%3D13%25!
Ниже приведен пример запроса:
https://integrationapi.net/rest/user/sessionid?login=test&password=11111
Параметры GET-запроса для аутентификации¶
Параметр | Тип данных | Описание |
---|---|---|
Login | string | Логин, полученный при регистрации |
Password | string | Пароль, соответствующий логину |
В случае успешной аутентификации предоставленных данных от сервиса отправки SMS-сообщений будет получен ответ со следующими параметрами:
HTTP status code: 200 ОК
(статусOperationComplete
)
Cache-Control: private
(указание на то, что ответ разрешается сохранять только в закрытом кэше, т.е. только для текущего Пользователя)
Connection: Keep-Alive
(наименование заголовка соединения, которое не надо обновлять в кэше)
Content-Type: application/json; charset=utf-8
(фактически значение вернется в виде строки в кавычках (не в виде JSON) и кодировке UTF-8)
ID сессии (GUID)
Пример ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
"Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1"
В случае возникновения исключительной ситуации в ходе обработки запроса или ошибки аутентификации cервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например, при ошибке авторизации:
{
Code: 4,
Desc: "Invalid user login or password"
}
Полученный ID сессии действителен в течение 120 минут.
Получение баланса авторизованного пользователя¶
Протокол HTTP не имеет состояний. Это означает, что веб-сервер обрабатывает каждый HTTP-запрос со стороны внешнего приложения или сайта независимо и не сохраняет значения переменных, использованных в предшествующих запросах. Поэтому при выполнении запроса на получение баланса пользователя также необходимо передавать данные, полученные при авторизации этого пользователя.
Сервис возвращает значение баланса авторизованного пользователя в соответствии со значениями параметров, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/User/Balance?SessionID=<ID сессии>
Ниже приведен пример запроса:
https://integrationapi.net/rest/User/Balance?SessionID=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1
Параметры GET-запроса баланса¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID | string | ID сессии, полученный при аутентификации |
Сервис проверяет валидность полученного SessionID (проверяет актуальность и наличие в системе). В случае успеха сервис авторизует пользователя и в ответе передает баланс пользователя со следующими параметрами:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<Баланс пользователя>
Ниже приведен пример ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
В случае возникновения исключительной ситуации при обработке запроса или ошибки аутентификации сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например, при ошибке аутентификации ID сессии:
{
Code: 4,
Desc: "SessionID expired"
}
Отправка SMS-сообщений¶
Отправка SMS-сообщения на один номер без учета часового пояса получателя¶
Сервис инициирует отправку SMS-сообщения в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Sms/Send?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddress=<Номер получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Sms/Send?SessionId=C619DF83829F4C3094CB54F4D62878786B5B&DestinationAddress=79161002030&SourceAddress=DEVINO&Data=test&Validity=0
Параметры запроса на отправку SMS-сообщения¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddress обязательный |
string | Номер получателя сообщения, в международном формате: код страны и код сети плюс номер телефона. Пример: 79031234567 ; +79031234567 ; 89031234567 |
Data обязательный |
string | Текст сообщения, не более 2000 символов |
SourceAddress обязательный |
string | Адрес отправителя, не более 11 латинских символов или 15 цифр |
SendDate | DateTime | Дата и время отправки (пример Если не требуется отложенная отправка, то передавать данный параметр не нужно. |
Validity | integer | Время жизни сообщения (в минутах) |
Перед отправкой SMS-сервис выполняет проверку запроса:
- наличие обязательных параметров
- валидность сессии Пользователя (аутентификацию и определение, не истекло ли его время жизни SessionID)
- баланс пользователя на отправку SMS (достаточность средств на балансе определяется тарифом текущего пользователя на отправку SMS для мобильного оператора указанного в запросе номера)
- валидность указанного в запросе номера
- валидность адреса отправителя
- длина сообщения
Если все проверки пройдены успешно, сервис отправляет сообщение в SMS-центр и возвращает ID отправленного сообщения с параметрами:
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272358"]
В случае превышения длины отправляемого сообщения (70 символов на кириллице или 160 символов на латинице) сервис возвращает ответ в виде последовательности ID сообщений. Например:
["579700854169272358","579700854169272359"]
В случае непрохождения других проверок сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 6,
Desc: "Invalid source address"
}
Отправка SMS-сообщения на один номер с учетом часового пояса получателя¶
Сервис инициирует отправку SMS-сообщения в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Sms/SendByTimeZone?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddress=<Номер получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&SendDate=<Дата отправки сообщения>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Sms/SendByTimeZone?SessionId=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&SourceAddress=TESTSMS&DestinationAddress=79001234567&Data=testdata&sendDate=2011-01-28T16:00:00&validity=10
Параметры POST-запроса на отправку SMS-сообщения c учетом часового пояса¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddress обязательный |
string | Номер получателя сообщения, в международном формате: код страны и код сети плюс номер телефона. Пример: 79031234567 ; +79031234567 ; 89031234567 . |
Data обязательный |
string | Текст сообщения (не более 2000 символов) |
SourceAddress обязательный |
string | Адрес отправителя (не более 11 латинских символов или 15 цифр) |
SendDate обязательный |
DateTime | Дата и время отправки (пример 2011-01-28T16:00:00 ). Если в запросе передается этот параметр, то сообщение будет отправлено только при наступлении полученных даты и времени с учетом текущего часового пояса получателя. |
Validity | integer | Время жизни сообщения (в минутах) |
Перед отправкой SMS-сервис выполняет проверку запроса:
- наличие обязательных параметров
- валидность сессии Пользователя (аутентификацию и определение, не истекло ли его время жизни SessionID)
- баланс пользователя на отправку SMS (достаточность средств на балансе определяется тарифом текущего пользователя на отправку SMS для мобильного оператора указанного в запросе номера)
- валидность указанного в запросе номера
- валидность адреса отправителя
- длина сообщения
Если все проверки пройдены успешно, сервис отправляет сообщение в SMS-центр и возвращает ID отправленного сообщения с дополнительными параметрами.
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272359"]
В случае превышения длины отправляемого сообщения (70 символов на кириллице или 160 символов на латинице) сервис возвращает ответ в виде последовательности ID сообщений. Например:
["579700854169272358","579700854169272359"]
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272358","579700854169272359"]
В случае непрохождения других проверок сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 6,
Desc: "Invalid source address"
}
Отправка SMS-сообщения на несколько номеров без учета часового пояса получателя¶
Сервис инициирует отправку SMS-сообщения на несколько номеров в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Sms/SendBulk?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddresses=<Номер(а) получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Sms/SendBulk?SessionID=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&SourceAddress=TESTSMS&DestinationAddresses=79001234567&Data=testdata&Validity=10&DestinationAddresses=79160000000&data=testdata&sendDate=2011-01-28T16:00:00&validity=10
Параметры POST-запроса на отправку SMS-сообщения на несколько номеров¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddresses обязательный |
string | Номер получателя сообщения, в международном формате: код страны и код сети плюс номер телефона. Пример: 79031234567 ; +79031234567 ; 89031234567 . |
Data обязательный |
string | Текст сообщения (не более 2000 символов) |
SourceAddress обязательный |
string | Адрес отправителя (не более 11 латинских символов или 15 цифр) |
Validity | integer | Время жизни сообщения (в минутах) |
SendDate | DateTime | Дата и время отправки (пример 2010-0601T19:14:00 ). Если не требуется отложенная отправка, то передавать данный параметр не нужно. |
Перед отправкой SMS-сервис выполняет проверку запроса:
- наличие обязательных параметров
- валидность сессии пользователя (аутентификацию и определение, не истекло ли его время жизни SessionID)
- баланс пользователя на отправку SMS (достаточность средств на балансе определяется тарифом текущего пользователя на отправку SMS для мобильного оператора указанного в запросе номера)
- валидность указанного в запросе номера
- валидность адреса отправителя
- длина сообщения
Если все проверки пройдены успешно, сервис отправляет сообщение в SMS-центр и возвращает ID отправленного сообщения с дополнительными параметрами.
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272358"]
В случае превышения длины отправляемого сообщения (70 символов на кириллице или 160 символов на латинице) сервис возвращает ответ в виде последовательности ID сообщений. Для нескольких сообщений IDы сегментов будут расположены последовательно – сначала последовательно все сегменты одного сообщения, затем – все сегменты другого. Например:
["579700854169272358","579700854169272359","579700854169272360","579700854169272361"]
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272358","579700854169272359","579700854169272360","579700854169272361"]
В случае непрохождения других проверок сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 6,
Desc: "Invalid source address"
}
Отправка SMS-сообщения на несколько номеров с учетом часового пояса получателя¶
Сервис инициирует отправку SMS-сообщения в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Sms/SendByTimeZoneToAddresses?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddresses=<Номер(а) получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&SendDate=<Дата отправки сообщения>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Sms/SendByTimeZoneToAddresses?SessionID=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&SourceAddress=TESTSMS&DestinationAddresses=79001234567&Data=testdata&Validity=10&DestinationAddresses=79160000000&data=testdata&SendDate=2011-01-28T16:00:00&Validity=10
Параметры POST-запроса на отправку SMS-сообщения c учетом часового пояса¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddresses обязательный |
string | Номер получателя сообщения, в международном формате: код страны и код сети плюс номер телефона. Пример: 79031234567 ; +79031234567 ; 89031234567 . |
Data обязательный |
string | Текст сообщения (не более 2000 символов) |
SourceAddress обязательный |
string | Адрес отправителя (не более 11 латинских символов или 15 цифр) |
SendDate обязательный |
DateTime | Дата и время отправки (пример 2011-01-28T16:00:00 ). Если в запросе передается этот параметр, то сообщение будет отправлено только при наступлении полученных даты и времени с учетом текущего часового пояса получателя. Если не требуется отложенная отправка, то передавать данный параметр не нужно. |
Validity | integer | Время жизни сообщения (в минутах) |
Перед отправкой SMS-сервис выполняет проверку запроса:
- наличие обязательных параметров
- валидность сессии Пользователя (аутентификацию и определение, не истекло ли его время жизни SessionID)
- баланс пользователя на отправку SMS (достаточность средств на балансе определяется тарифом текущего пользователя на отправку SMS для мобильного оператора указанного в запросе номера)
- валидность указанного в запросе номеров
- валидность адреса отправителя
- длина сообщения
Если все проверки пройдены успешно, сервис отправляет сообщение в SMS-центр и возвращает ID отправленного сообщения с дополнительными параметрами.
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272359"]
В случае превышения длины отправляемого сообщения (70 символов на кириллице или 160 символов на латинице) сервис возвращает ответ в виде последовательности ID сообщений. Для нескольких сообщений IDы сегментов будут расположены последовательно – сначала последовательно все сегменты одного сообщения, затем – все сегменты другого. Например:
["579700854169272358","579700854169272359","579700854169272360","579700854169272361"]
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["579700854169272358","579700854169272359","579700854169272360","579700854169272361"]
В случае непрохождения других проверок сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 6,
Desc: "Invalid source address"
}
Получение статуса отправленного SMS-сообщения¶
Внимание
В случае, если сообщение было отправлено более 48 часов назад, то статус сообщения будет 255
.
Сервис возвращает статус отправленного SMS-сообщения в соответствии со значениями параметров, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/Sms/State?sessionId=<ID сессии>&messageId=<ID сообщения>
Ниже приведен пример запроса для односегментного сообщения (длина которого не превышает 70 символов на кириллице или 160 символов на латинице):
https://integrationapi.net/rest/Sms/State?sessionId=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&messageId=579700854169272358
Для многосегментных сообщений (длина сообщения превышает 70 символов на кириллице и 160 на латинице) запрос должен формироваться для каждого сегмента сообщения, например:
https://integrationapi.net/rest/Sms/State?sessionID=1AED345F65DD4C27BD37A17970C427FAE991&messageID=SAR-W+84333
Параметры GET-запроса статуса отправленного сообщения (сегмента сообщения)¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID | string | ID сессии, полученный при аутентификации (36 символов) |
messageId | string | ID сообщения (сегмента сообщения). Для одного запроса будет выполнен возврат статуса только одного сообщения (сегмента сообщения). |
После получения запроса сервис проверяет валидность ID сессии и наличие отправленного сообщения (сегмента сообщения) с присланным IDом. Если все проверки пройдены успешно, то сервис вернет статус отправленного SMS-сообщения в JSON-формате со следующими параметрами:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{
"State":<Код статуса сообщения>,
"CreationDateUtc":<Дата создания>,
"SubmittedDateUtc":<Дата отправки сообщения>,
"ReportedDateUtc":<Дата доставки сообщения>,
"TimeStampUtc":"<Дата и время получения отчета>",
"StateDescription":"<Описание статуса>",
"Price":<Стоимость>
}
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{
"State":255,
"CreationDateUtc":null,
"SubmittedDateUtc":null,
"ReportedDateU tc":null,
"TimeStampUtc":"\/Date(-62135596800000)\/",
"StateDescription":"Неизвестный",
"Price":null
}
Если какая-либо проверка неуспешна, сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1,
Desc: "MessageID can not be null or empty Parameter name: messageId"
}
Параметры ответа на запрос статуса сообщения¶
Наименование поля | Описание |
---|---|
State | Статус сообщения |
TimeStampUtc | Дата и время получения отчета (Гринвич GMT00:00 ) |
StateDescription | Описание статуса |
CreationDateUtc | Дата создания |
SubmittedDateUtc | Дата отправки |
ReportedDateUtc | Дата доставки |
Price | Цена за сообщение |
Получение SMS-сообщений за период¶
Сервис возвращает входящие SMS-сообщения за период в соответствии со значениями параметров, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/Sms/In?sessionId=<ID сессии>&minDateUTC=<Дата и время начала периода>&maxDateUTC=<Дата и время окончания периода>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Sms/In?sessionId=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&minDateUTC=2011-01-01T00:00:00&maxDateUTC=2011-01-11T00:00:00
Параметры GET-запроса на получение сообщений за период¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID | string | ID сессии, полученный при аутентификации (36 символов) |
maxDateUTC | DateTime | Дата и время окончания периода, за который происходит выборка входящих сообщений (например, 2010-06-02T19:14:00 ). |
minDateUTC | DateTime | Дата и время начала периода, за который происходит выборка входящих сообщений (например, 2010-06-01T19:14:00 ). |
Перед получением входящих сообщений, сервис проверяет запрос на:
- Наличие обязательных параметров
- Валидность SessionID
- Значение minDateUTC - разница между текущей датой и minDateUTC не может быть больше одного года
- Значение maxDateUTC и minDateUTC - maxDateUTC должно быть больше чем minDateUTC
Если все проверки пройдены успешно, то сервис вернет перечень сообщений и их параметров за период в JSON-файла следующего формата:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
[
{
"Data":<Текст сообщения>,
"SourceAddress":<Адрес отправителя>,
"DestinationAddress":<Номер получателя>,
"ID":<ID сообщения>,
"CreatedDateUtc":<Дата создания>
}
]
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
[
{
"Data":"test1",
"SourceAddress":"79260000000",
"DestinationAddress":"79160000000",
"ID":539187174,
"CreatedDateUtc":"\/Date(1294045911213)\/"
},
{
"Data":"test2",
"SourceAddress":"79260000001",
"DestinationAddress":"79160000000",
"ID":539187214,
"CreatedDateUtc":"\/Date(1294045911353)\/"
}
]
Если какая-либо проверка неуспешна, сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 9,
Desc: "The parameters dictionary contains a null entry for parameter
'maxDateUtc' of non-nullable type 'DateTime' for method
'System.Web.Mvc.ActionResult In(System.string, DateTime, DateTime)' in
'RestService.Controllers.SmsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters"
}
Получение статистики по SMS-рассылкам¶
Сервис возвращает статистику по SMS-рассылкам за период в соответствии со значениями параметров, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/Sms/Statistics?sessionId=<ID сессии>&startDateTime=<Дата и время начала периода >&endDateTime=<Дата и время конца периода>
Ниже приведен пример запроса:
dhttps://integrationapi.net/rest/Sms/Statistics?sessionId=FBHKZT9TBBTUWYUR1PYUTYRAGRLUUG0R8A8Z&startDateTime=2012-01-18%2000:00:00&endDateTime=2012-01-18T23:59:00
Параметры GET-запроса на формирование статистики за период**¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID | string | ID сессии (36 символов) |
startDateTime | DateTime | Дата и время начала периода, за который необходимо получить статистику, например 2012-01-18T00:00:00 . |
endDateTime | DateTime | Дата и время конца периода, за который необходимо получить статистику, например 2012-01-18T23:59:00 . |
После получения запроса сервис проверяет валидность присланного ID сессии, корректность дат начала/окончания формирования статистики, диапазон дат (не более 3 месяцев). Если все проверки пройдены успешно, сервис возвращает статистику по sms-сообщениям в JSON-формате со следующими параметрами:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{
"Sent":<Отправлено>,
"Delivered":<Доставлено>,
"Errors":<С ошибками>,
"InProcess":<В процессе>,
"Expired":<С истекшим сроком доставки>,
"Rejected":<Отмененные>,
"Total":<Всего>,
"TotalWithErrors":<Всего с ошибками>,
"DeliveryRatio":<Успешно доставлено>
}
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{
"Sent":9,
"Delivered":0,
"Errors":0,
"InProcess":7780,
"Expired":0,
"Rejected":56876,
"Total":64665,
"TotalWithErrors":64665,
"DeliveryRatio":0}
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>,
Desc: <”Текст ошибки”>
}
Например:
{
Code: 2,
Desc: "Нельзя указывать диапазон дат более 90 дней."
}
Отправка Viber-сообщений¶
Внимание
Для корректной работы переотправки необходимо запросить имя отправителя для SMS, идентичное имени отправителя Viber.
Отправка Viber-сообщения на один номер без учета часового пояса получателя¶
Сервис инициирует отправку Viber-сообщения в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Viber/Send?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddress=<Номер получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&Optional=<Доп.Параметр>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Viber/Send?SessionId=C619DF83829F4C3094CB54F4D62878786B5B&SourceAddress=DTSMS&DestinationAddress=79001234567&Data=testdata&Validity=86400&Optional=123456
Параметры запроса на отправку Viber-сообщения¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddress обязательный |
string | Номер получателя сообщения, в международном формате: код страны + код сети + номер телефона. Пример: 79031234567 ; +79031234567 |
Data обязательный |
string | Текст сообщения, сообщение не должно быть длиннее 1000 символов. Строки разделяются через символ новой строки %0A . |
SourceAddress обязательный |
string | Адрес отправителя сообщения. До 11 латинских или цифровых символов. |
Optional | string | Дополнительный параметр |
Validity | integer | Время жизни сообщения (мин, от 1 до 1440) |
Перед отправкой Viber-сообщения сервис проверяет запрос на:
- Наличие обязательных параметров
- Достаточно ли баланса пользователя на отправку Viber-сообщения
- Валидность указанного в запросе номера
- Валидность адреса отправителя
- Длину сообщения
Если все проверки пройдены успешно, то сервис отправит сообщение и вернет ID отправленного сообщения со следующими параметрами:
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["GW0261BBD6B3"]
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1
Desc: "error-address-format"
}
Отправка Viber-сообщения на несколько номеров без учета часового пояса получателя¶
Сервис инициирует отправку Viber-сообщения на несколько номеров в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Viber/SendBulk?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddresses=<Номер(а) получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&Optionals=<Доп. параметр(ы)>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Viber/SendBulk?SessionId=C619DF83829F4C3094CB54F4D62878786B5B&SourceAddress=TESTSMS&DestinationAddresses=79001234567&DestinationAddresses=79059999999&Data=testdata&Validity=86400&Optionals=123456&Optionals=789012
Параметры POST-запроса на отправку Viber-сообщения на несколько номеров¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddresses обязательный |
string | Номер получателя сообщения, в международном формате: код страны + код сети + номер телефона. Пример: 79031234567 ; +79031234567 |
Data обязательный |
string | Текст сообщения, сообщение не должно быть длиннее 1000 символов. Строки разделяются через символ новой строки %0A . |
SourceAddress обязательный |
string | Адрес отправителя сообщения. До 11 латинских или цифровых символов. |
Optionals | string | Дополнительный параметр (или параметры в случае нескольких получателей) |
Validity | integer | Время жизни сообщения (мин, от 1 до 1440) |
Перед отправкой Viber сервис проверяет запрос на:
- Наличие обязательных параметров
- Достаточно ли баланса пользователя на отправку Viber
- Валидность указанных в запросе номеров (если хоть один номер не проходит валидацию, то сообщения не отправляются)
- Валидность адреса отправителя
- Длину сообщения
Если все проверки пройдены успешно, то сервис отправит сообщения и вернет IDы отправленных сообщений с дополнительными параметрами.
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["GW0261BBD6B3"]
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1
Desc: "error-address-format"
}
Отправка Viber-сообщения на один номер с переотправкой по SMS¶
Сервис инициирует отправку Viber-сообщения в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Viber/SendWithResend?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddress=<Номер получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&Optional=<Доп. Параметр>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Viber/SendWithResend?SessionId=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&SourceAddress=DTSMS&DestinationAddress=79001234567&Data=testdata&Validity=86400&Optional=123456
Параметры POST-запроса на отправку Viber-сообщения с переотправкой по SMS¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddress обязательный |
string | Номер получателя сообщения, в международном формате: код страны + код сети + номер телефона. Пример: 79031234567 ; +79031234567 |
Data обязательный |
string | Текст сообщения, сообщение не должно быть длиннее 1000 символов. Строки разделяются через символ новой строки %0A . |
SourceAddress | string | Адрес отправителя сообщения. До 11 латинских или цифровых символов. Для корректной работы переотправки адрес отправителя SMS должен быть идентичен используемому адресу отправителя Viber |
Optional | string | Дополнительный параметр |
Validity | integer | Время жизни сообщения (мин, от 1 до 1440) |
Перед отправкой Viber сервис проверяет запрос на:
- Наличие обязательных параметров
- Достаточно ли баланса пользователя на отправку Viber
- Валидность указанных в запросе номеров (если хоть один номер не проходит валидацию, то сообщения не отправляются)
- Валидность адреса отправителя
- Длину сообщения
Если все проверки пройдены успешно, то сервис отправит сообщение и вернет ID отправленного сообщения с дополнительными параметрами.
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["GW0261BBD6B3"]
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1
Desc: "error-address-format"
}
Отправка Viber-сообщения на несколько номеров с переотправкой по SMS¶
Сервис инициирует отправку Viber-сообщения на несколько номеров в соответствии со значениями параметров, передаваемых сервису в POST-запросе следующего формата:
https://integrationapi.net/rest/Viber/SendWithResendBulk?SessionID=<ID сессии>&SourceAddress=<Адрес отправителя>&DestinationAddresses=<Номер(а) получателя>&Data=<Текст сообщения>&Validity=<Время жизни сообщения>&Optionals=<Доп. параметр(ы)>
Ниже приведен пример запроса:
https://integrationapi.net/rest/Viber/SendWithResendBulk?SessionID=Z5CYSZEKDL1DPICU37WEHQVOYKP0T1GSLHX1&SourceAddress=TESTSMS&DestinationAddresses=79001234567&DestinationAddresses=79059999999&Data=testdata&Validity=86400&Optionals=123456&Optionals=789012
Параметры POST-запроса на отправку Viber-сообщения с переотправкой по SMS¶
Параметр | Тип данных | Описание |
---|---|---|
SessionID обязательный |
string | ID сессии, полученный при аутентификации (36 символов) |
DestinationAddresses обязательный |
string | Номер получателя сообщения, в международном формате: код страны + код сети + номер телефона. Пример: 79031234567 ; +79031234567 |
Data обязательный |
string | Текст сообщения, сообщение не должно быть длиннее 1000 символов. Строки разделяются через символ новой строки %0A . |
SourceAddress обязательный |
string | Адрес отправителя сообщения. До 11 латинских или цифровых символов. Для корректной работы переотправки адрес отправителя SMS должен быть идентичен используемому адресу отправителя Viber |
Optionals | string | Дополнительный параметр (или параметры в случае нескольких получателей) |
Validity | integer | Время жизни сообщения (мин, от 1 до 1440) |
Перед отправкой Viber сервис проверяет запрос на:
- Наличие обязательных параметров
- Валидность сессии Пользователя (аутентификацию и определение, не истекло ли его время жизни SessionID)
- Достаточно ли Баланса Пользователя на отправку Viber
- Валидность указанных в запросе номеров (если хоть один номер не проходит валидацию, то сообщения не отправляются)
- Валидность адреса отправителя
- Длину сообщения
Если все проверки пройдены успешно, то сервис отправит сообщения и вернет IDы отправленных сообщений со следующими параметрами:
Формат ответа:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
<ID сообщения>
Например:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
["GW0261BBD6B3"]
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1
Desc: "error-address-format"
}
Получение статуса отправленного Viber-сообщения¶
Сервис возвращает статус отправленного Viber-сообщения в соответствии со значениями параметров, передаваемых сервису в GET-запросе следующего формата:
https://integrationapi.net/rest/Viber/State?sessionId=<ID сессии>&messageId=<ID сообщения>
Параметры GET-запроса статуса отправленного сообщения¶
Параметр | Тип данных | Описание |
---|---|---|
sessionId | string | ID сессии, полученный при аутентификации (36 символов) |
messageId | string | ID сообщения |
После получения запроса сервис проверяет валидность ID сессии и наличие отправленного сообщения с присланным IDом. Если все проверки пройдены успешно, то сервис вернет статус отправленного Viber-сообщения в JSON-формате со следующими параметрами:
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{
"State":<Код статуса сообщения>,
"CreationDateUtc":<Дата создания>,
"SubmittedDateUtc":<Дата отправки сообщения>,
"ReportedDateUtc":<Дата доставки сообщения>,
"TimeStampUtc":"<Дата и время получения отчета>",
"StateDescription":"<Описание статуса>",
"Price":<Стоимость>,
"ResentSms":[
{
"State":<Код статуса переотправленного смс-сообщения>,
"CreationDateUtc":<Дата создания переотправленного смс-сообщения>,
"SubmittedDateUtc":<Дата отправки переотправленного смс-сообщения>,
"ReportedDateUtc":<Дата доставки переотправленного смс-сообщения>,
"TimeStampUtc":"<Дата и время получения отчета по переотправленному смс-сообщению>",
"StateDescription":"<Описание статуса переотправленного смс-сообщения>",
"Price":<Стоимость переотправленного смс-сообщения>,
"Id":<ID переотправленного смс-сообщения>
}
]
}
Если какая-нибудь проверка не проходит успешно, то сервис возвращает код ошибки в виде JSON следующего формата:
{
Code: <Код ошибки>
Desc: <”Текст ошибки”>
}
Например:
{
Code: 1
Desc: "MessageID can not be null or empty Parameter name: messageId"
}
Параметры ответа на запрос статуса сообщения¶
Наименование поля | Описание |
---|---|
State | Статус сообщения |
TimeStampUtc | Дата и время получения отчета (Гринвич GMT00:00) |
StateDescription | Описание статуса |
CreationDateUtc | Дата создания |
SubmittedDateUtc | Дата отправки |
ReportedDateUtc | Дата доставки |
Price | Цена за сообщение |
ResentSms | Данные о SMS-сообщениях, которые были отправлены в рамках переотправки текущего Viber-сообщения |
Коды ошибок. Статусы SMS и Viber¶
Коды ошибок¶
REST error code | HTTP status code | Описание |
---|---|---|
200 | Operation complete | |
1 | 400 | Argument cannot be null or empty |
2 | 400 | Invalid argument |
3 | 400 | Invalid session id |
4 | 401 | Unauthorized access |
5 | 403 | Not enough credits |
6 | 400 | Invalid operation |
7 | 403 | Forbidden |
8 | 500 | Gateway error |
9 | 500 | Internal server error |
Статусы SMS¶
State | Описание |
---|---|
-1 | Отправлено (передано в мобильную сеть) |
-2 | В очереди |
47 | Удалено |
-98 | Остановлено |
0 | Доставлено абоненту |
10 | Неверно введен адрес отправителя |
11 | Неверно введен адрес получателя |
41 | Недопустимый адрес получателя |
42 | Отклонено смс-центром |
46 | Просрочено (истек срок жизни сообщения) |
48 | Отклонено Платформой |
69 | Отклонено |
99 | Неизвестный |
255 | статус: ○ сообщение еще не успело попасть в БД ○ сообщение старше 48 часов. |
Статусы Viber¶
State | Описание |
---|---|
0 | Отправляется |
1 | Отправлено |
2 | Доставлено (не прочитано) |
3 | Доставлено (прочитано) |
4 | Не доставлено |
5 | Ошибка |
6 | Неизвестно |
7 | Просрочено |
8 | Переход по ссылке |
Коды возврата обработки сообщения в рамках запроса (Viber-сообщения)¶
Код | Описание |
---|---|
error-address-format | неправильный формат номера абонента |
error-address-not-specified | номер абонента не указан |
error-address-unknown | отправка на номерную емкость, к которой относится номер абонента не разрешена клиенту в конфигурации платформы провайдера |
error-content-not-specified | содержимое сообщения не указано |
error-subject-format | неправильный формат подписи |
error-subject-not-specified | подпись не указана |
error-subject-unknown | указанная подпись не разрешена клиенту в конфигурации платформы провайдера |
error-system | системная ошибка |
error-validity-period-seconds-format | неправильно указано значение времени ожидания доставки |
ok | исходящее сообщение успешно принято на отправку |