версия от 2023-08-01 |
Группа методов позволяет обмениваться SMS-сообщениями, получать информацию и управлять пакетами SMS.
Адрес: https://restapi.plusofon.ru
POST
api/v1/sms
Метод позволяет отправить SMS-сообщение.
Body
"text"
string
* текст сообщения
"number_id"
integer
* ИД номера-отправителя (см. "id"
в ответе на запрос получения списка номеров)
"to"
number
* номер-получатель
"dlr_level"
integer
уровень отчёта о доставке (DLR)
"1"
— получать DLR уровня 1 — отчёт о доставке от вышестоящего SMSC (SMS-центра)
"2"
— получать DLR уровня 2 — отчёт о доставке конечному получателю (абонентскому устройству)
"3"
— получать одновременно DLR 1 и DLR 2
"reject_long"
boolean
признак запрета отправки SMS, превышающего максимальную длину (по умолчанию — отправлять, "false"
)
"count_pdu"
boolean
признак необходимости в ответе количества сегментов сообщения
curl -X POST \
"https://restapi.plusofon.ru/api/v1/sms" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"text":"mollitia","number_id":2,"to":241.77791,"dlr_level":18,"reject_long":true,"count_pdu":true}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"text": "mollitia",
"number_id": 2,
"to": 241.77791,
"dlr_level": 18,
"reject_long": true,
"count_pdu": true
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/sms',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'text' => 'mollitia',
'number_id' => 2,
'to' => 241.77791,
'dlr_level' => 18,
'reject_long' => true,
'count_pdu' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms'
payload = {
"text": "mollitia",
"number_id": 2,
"to": 241.77791,
"dlr_level": 18,
"reject_long": true,
"count_pdu": true
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
"data"
объект с данными отправленного сообщения
"id"
"jmx_id"
в DLR)"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"data": {
"id": "3610afe59f3242ebbdb03f3484b06b8d"
},
"success": true
}
GET
api/v1/sms
Метод позволяет просмотреть список SMS-сообщений.
Body
"date_from"
date
фильтр по дате начала
"date_to"
date
фильтр по дате окончания
"incoming"
integer
фильтр по признаку входящего сообщения
"1"
— входящее сообщение
"0"
— исходящее сообщение
"receiver"
string
фильтр по номеру-получателю
"sender"
string
фильтр по номеру-отправителю
"limit"
integer
лимит записей в ответе
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"date_from":"alias","date_to":"natus","incoming":3,"receiver":"facere","sender":"rem","limit":18}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"date_from": "alias",
"date_to": "natus",
"incoming": 3,
"receiver": "facere",
"sender": "rem",
"limit": 18
}
fetch(url, {
method: "GET",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'date_from' => 'alias',
'date_to' => 'natus',
'incoming' => 3,
'receiver' => 'facere',
'sender' => 'rem',
'limit' => 18,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms'
payload = {
"date_from": "alias",
"date_to": "natus",
"incoming": 3,
"receiver": "facere",
"sender": "rem",
"limit": 18
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив "data"
:
"created_datetime"
дата создания сообщения
"sent_datetime"
дата отправки сообщения
"sender"
номер-отправитель
"receiver"
номер-получатель
"msg"
текст сообщения
"incoming"
boolean
признак входящего сообщения
"pdu"
количество сегментов сообщения
{
"current_page": 1,
"data": [
{
"created_datetime": "2022-07-25 12:59:19",
"sent_datetime": "2022-07-25 12:59:21",
"sender": "79993332210",
"receiver": "79993332211",
"msg": "привет, мир!",
"incoming": false,
"pdu": 1
},
{
"created_datetime": "2022-07-25 13:01:34",
"sent_datetime": "2022-07-25 13:01:36",
"sender": "79993332211",
"receiver": "79993332210",
"msg": "ну да, привет, привет",
"incoming": true,
"pdu": 1
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/sms?page=1",
"from": 1,
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/sms",
"per_page": 15,
"prev_page_url": null,
"to": 2
}
GET
api/v1/sms/dialog/{number}
Метод позволяет получить список диалогов.
Path
"number"
stringBody
"date_from"
date
фильтр по дате начала
"date_to"
date
фильтр по дате окончания
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/dialog" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"date_from":"doloremque","date_to":"aperiam"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dialog"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"date_from": "doloremque",
"date_to": "aperiam"
}
fetch(url, {
method: "GET",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/dialog',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'date_from' => 'doloremque',
'date_to' => 'aperiam',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dialog'
payload = {
"date_from": "doloremque",
"date_to": "aperiam"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()
В ответе возвращается массив "data"
:
"id"
внутренний ИД сообщения
"jasmax_id"
сквозной ИД сообщения
"sender"
номер-отправитель
"receiver"
номер-получатель
"sent_datetime"
дата отправки сообщения
"created_datetime"
дата создания сообщения
"msg"
текст сообщения
"incoming"
признак входящего сообщения
"1"
— входящее сообщение
"0"
— исходящее сообщение
"readed"
"1"
— сообщение прочитано
"0"
— сообщение не прочитано
"interlocutor_number"
{
"data": [
{
"id": 15,
"sender": "79993332210",
"receiver": "79993332211",
"sent_datetime": "2022-08-26 10:27:10",
"created_datetime": "2022-08-26 10:27:10",
"msg": "Тест 2",
"incoming": 0,
"readed": 0,
"interlocutor_number": "79993332211",
"jasmax_id": "a7702a80b12d4"
},
{
"id": 114258467,
"sender": "79993332210",
"receiver": "79993332212",
"sent_datetime": "2022-08-17 15:23:29",
"created_datetime": "2022-08-17 15:23:27",
"msg": "Тест 1",
"incoming": 0,
"readed": 0,
"interlocutor_number": "79993332212",
"jasmax_id": "58b90fa618b64186ef"
}
],
"success": true
}
GET
api/v1/sms/unread
Метод позволяет получить количество непрочитанных SMS-сообщений.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/unread" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/unread"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/unread',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/unread'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе может возвращаться:
"data"
объект с количеством непрочитанных сообщений
"count"
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"data": {
"count": 1
},
"success": true
}
PATCH
api/v1/sms/dialog/{interlocutor_number}/set-read
Метод позволяет отметить диалог по конкретному номеру, как прочитанный.
Path
"interlocutor_number"
string"interlocutor_number"
в ответе на запрос списка диалогов)curl -X PATCH \
-G "https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "PATCH",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->PATCH(
'https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dialog/79993332210/set-read'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
В ответе может возвращаться:
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"success": true
}
PATCH
api/v1/sms/packets
Метод позволяет активировать пакет SMS-сообщений.
Body
"number_id"
integer
* ИД номера (см. "id"
в ответе на запрос получения списка номеров)
"packet"
string
* ИД пакета (см. "id"
в ответе на запрос получения доступных пакетов)
curl -X PATCH \
"https://restapi.plusofon.ru/api/v1/sms/packets" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number_id":16,"packet":"ut"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/packets"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number_id": 16,
"packet": "ut"
}
fetch(url, {
method: "PATCH",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->patch(
'https://restapi.plusofon.ru/api/v1/sms/packets',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number_id' => 16,
'packet' => 'ut',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/packets'
payload = {
"number_id": 16,
"packet": "ut"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"success": true
}
GET
api/v1/sms/packets
Метод позволяет получить список всех доступных пакетов SMS-сообщений.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/sms/packets" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/packets"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/sms/packets',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/packets'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив "packets"
:
"id"
ИД пакета
"name"
название пакета
"description"
описание
"price"
абонентская плата
"sms_count"
количество SMS в пакете
{
"packets": [
{
"id": "401f6fbc-87db-0df2-6ccf-624161f2c7e3",
"name": "Пакет SMS 0",
"description": "Пакет активирует отправку и прием SMS. ",
"price": 0,
"sms_count": 0
},
{
"id": "8ccddfe2-2a7b-bb2a-40f8-624161d3f93a",
"name": "Пакет SMS 50",
"description": "Пакет на 50 SMS в месяц",
"price": 30,
"sms_count": 50
},
{
"id": "16fade6a-1232-d42f-6012-624162c4c018",
"name": "Пакет SMS 1000",
"description": "Пакет на 1000 SMS в месяц",
"price": 600,
"sms_count": 1000
}
],
"success": true
}
Для конкретного номера можно указать URL-адрес обработчика входящих SMS, на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json», содержащие SMS-сообщение.
"src_number"
номер-отправитель
"dst_number"
номер-получатель
"content"
текст сообщения
"date"
дата и время получения сообщения
{
"src_number": "79993332210",
"dst_number": "79993332211",
"content": "мир, привет!",
"date": "2023-07-25 12:29:50"
}
POST
api/v1/sms/url
Метод позволяет указать для конкретного номера URL-адрес обработчика входящих SMS, на который будут приходить вебхуки (POST-запросы) с SMS-сообщениями.
Body
"number"
string
* телефонный номер
"url"
string
* адрес обработчика
curl -X POST \
"https://restapi.plusofon.ru/api/v1/sms/url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"velit","url":"et"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "velit",
"url": "et"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/sms/url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 'velit',
'url' => 'et',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/url'
payload = {
"number": "velit",
"url": "et"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"success": true
}
DELETE
api/v1/sms/url
Метод позволяет удалить для всех номеров (или для конкретного номера) URL-адрес обработчика входящих SMS.
Body
"number"
string
телефонный номер (по умолчанию — для всех номеров)
"url"
string
* адрес обработчика
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/sms/url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"aperiam","url":"ipsam"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "aperiam",
"url": "ipsam"
}
fetch(url, {
method: "DELETE",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://restapi.plusofon.ru/api/v1/sms/url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 'aperiam',
'url' => 'ipsam',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/url'
payload = {
"number": "aperiam",
"url": "ipsam"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('DELETE', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"success": true
}
Сразу для всех номеров можно указать URL-адрес обработчика отчётов о доставке (DLR), на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json», содержащие этот DLR.
"message_status"
"ESME_ROK" |
сообщение принято |
"ESME_RALYBND" |
связка уже существует |
"ESME_RBINDFAIL" |
не удалось выполнить привязку |
"ESME_RCANCELFAIL" |
ошибка отмены сообщения |
"ESME_RCNTSUBDL" |
недопустимая отправка в список рассылки |
"ESME_RDELIVERYFAILURE" |
сбой доставки транзакции |
"ESME_RINVBNDSTS" |
неверный статус привязки для данной команды |
"ESME_RINVCMDID" |
ИД команды неверен или не поддерживается |
"ESME_RINVCMDLEN" |
недопустимая длина команды |
"ESME_RINVDCS" |
недопустимая кодировка |
"ESME_RINVDESTFLAG" |
недопустимый флаг получателя |
"ESME_RINVDFTMSGID" |
предопределенное сообщение не найдено |
"ESME_RINVDLNAME" |
недопустимое имя списка рассылки |
"ESME_RINVDSTADDRSUBUNIT" |
недопустимый элемент адреса получателя |
"ESME_RINVDSTADR" |
неверный адрес получателя |
"ESME_RINVDSTNPI" |
неверный план нумерации адресов получателя (NPI) |
"ESME_RINVDSTTON" |
недопустимый тип номера получателя (TON) |
"ESME_RINVESMCLASS" |
недопустимый набор ESM |
"ESME_RINVEXPIRY" |
недопустимое значение периода действия |
"ESME_RINVMSGID" |
недопустимый ИД сообщения |
"ESME_RINVMSGLEN" |
сообщение слишком длинное |
"ESME_RINVNUMDESTS" |
недопустимое количество получателей |
"ESME_RINVNUMMSGS" |
недопустимое количество сообщений |
"ESME_RINVOPTPARAMVAL" |
недопустимое значение необязательного параметра |
"ESME_RINVOPTPARSTREAM" |
ошибка в необязательной части PDU |
"ESME_RINVPARLEN" |
недопустимая длина параметра |
"ESME_RINVPASWD" |
неверный пароль |
"ESME_RINVPRTFLG" |
недопустимый флаг приоритета |
"ESME_RINVREGDLVFLG" |
недопустимый флаг доставки |
"ESME_RINVREPFLAG" |
недопустимый флаг "replace_if_present" |
"ESME_RINVSCHED" |
неверный срок отложенной доставки |
"ESME_RINVSERTYP" |
недопустимый тип услуги |
"ESME_RINVSRCADDRSUBUNIT" |
недопустимый элемент адреса отправителя |
"ESME_RINVSRCADR" |
неверный адрес отправителя |
"ESME_RINVSRCNPI" |
неверный план нумерации адресов отправителя (NPI) |
"ESME_RINVSRCTON" |
недопустимый тип номера отправителя (TON) |
"ESME_RINVSUBREP" |
недопустимая отправка с запросом на замену |
"ESME_RINVSYSID" |
неверный системный ид |
"ESME_RINVSYSTYP" |
недопустимый системный тип |
"ESME_RMISSINGOPTPARAM" |
ожидаемый необязательный параметр отсутствует |
"ESME_RMSGQFUL" |
очередь сообщений заполнена |
"ESME_ROPTPARNOTALLWD" |
необязательный параметр не разрешен |
"ESME_RPROHIBITED" |
ESME запрещено использовать указанную операцию |
"ESME_RQUERYFAIL" |
ошибка запроса сообщения |
"ESME_RREPLACEFAIL" |
не удалось повторно отправить сообщение |
"ESME_RSERTYPDENIED" |
указанный тип услуги отклонен |
"ESME_RSERTYPUNAUTH" |
ESME не авторизован для использования указанной услуги |
"ESME_RSERTYPUNAVAIL" |
указанный тип услуги недоступен |
"ESME_RSUBMITFAIL" |
не удалось отправить сообщение |
"ESME_RSYSERR" |
системная ошибка |
"ESME_RUNKNOWNERR" |
неизвестная ошибка |
"ESME_RX_P_APPN" |
постоянная ошибка ESME |
"ESME_RX_R_APPN" |
ошибка сообщения об отклонении ESME |
"ESME_RX_T_APPN" |
временная ошибка ESME |
"DELIVRD" |
сообщение доставлено получателю |
"UNDELIV" |
сообщение не удалось доставить |
"ACCEPTD" |
сообщение было принято SMS-центром |
"EXPIRED" |
истёк срок действия сообщения |
"DELETED" |
сообщение было удалено |
"UNKNOWN" |
статус сообщения неизвестен |
"REJECTD" |
сообщение было отклонено |
"level"
уровень DLR
"id"
внутренний ИД сообщения
"jmx_id"
сквозной ИД сообщения
"donedate"
дата доставки сообщения
"sub"
...
"err"
...
"id_smsc"
ИД SMS-центра
"dlvrd"
...
"subdate"
...
{
"message_status": "ESME_ROK",
"id": "a8bca126-a658-4d95-9597-c8dc47fe4170",
"level": "1",
"jmx_id": "fad79df82475491da0bba9e9d07cb33e"
}
{
"message_status": "DELIVRD",
"donedate": "2307251237",
"sub": "001",
"err": "000",
"level": "2",
"id_smsc": "1854FB649B4BAA",
"dlvrd": "001",
"subdate": "2307251237",
"id": "e16c1024-ca0d-430e-84c8-b8266549e1ca",
"jmx_id": "1b9f98d7dfb84fc79c5cb5c4a7296818"
}
PUT
api/v1/sms/dlr-url
Метод позволяет указать URL-адрес обработчика отчётов о доставке (DLR), на который будут приходить вебхуки (POST-запросы) с телом в формате JSON и типом контента «application/json».
Body
"url"
stringcurl -X PUT \
"https://restapi.plusofon.ru/api/v1/sms/dlr-url" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"url":"iusto"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/sms/dlr-url"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"url": "iusto"
}
fetch(url, {
method: "PUT",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://restapi.plusofon.ru/api/v1/sms/dlr-url',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'url' => 'iusto',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/sms/dlr-url'
payload = {
"url": "iusto"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
В ответе может возвращаться:
"success"
признак успешно выполненного запроса
"message"
сообщение об ошибке
{
"success": true
}