Отправка SMS
Отправка сообщений SMS осуществляется через общий метод отправки сообщений POST /api/message
.
- cURL
- PHP
- Node.js
- Python
curl -X POST "https://cp.redsms.ru/api/message" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')" \
-H "Content-type: application/json" \
-d '{
"route": "sms",
"from": "<SMS_SENDER_NAME>",
"to": "+79993332211",
"text": "Используйте код 0917 для авторизации на сайте site.ru"
}'
# В OSX вместо команды md5sum необходимо использовать команду md5
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/message');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . $secret,
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'route' => 'sms',
'from' => '<SMS_SENDER_NAME>',
'to' => '+79993332211',
'text' => 'Используйте код 0917 для авторизации на сайте site.ru'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const ts = `ts-value-${Date.now()}`;
const apiKey = '<API_KEY>';
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const body = JSON.stringify({
route: 'sms',
from: '<SMS_SENDER_NAME>',
to: '+79993332211',
text: 'Используйте код 0917 для авторизации на сайте site.ru',
});
const request = https.request(
{
method: 'POST',
host: 'cp.redsms.ru',
path: '/api/message',
headers: {
login,
ts,
secret,
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/json',
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.write(body);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import json
import requests
import time
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret,
'Content-type': 'application/json',
}
data = {
'route': 'sms',
'from': '<SMS_SENDER_NAME>',
'to': '+79993332211',
'text': 'Используйте код 0917 для авторизации на сайте site.ru'
}
r = requests.post('https://cp.redsms.ru/api/message', headers=headers, data=json.dumps(data))
# print(r.status_code)
# print(r.text)
Пример ответа:
{
"items": [
{
"uuid": "0f9a4cfa-8bed-11ee-94af-0242c0a86496",
"status": "created",
"status_time": 1703956078,
"to": "+79993332211"
}
],
"errors": [],
"count": 1,
"success": true
}
Для получения статуса доставки SMS используйте метод GET /api/message/{uuid}
или Webhook.
Если в поле from
указано незарегистрированное имя отправителя, оно будет заменено на имя отправителя для SMS по умолчанию, указанное в разделе «Настройки» в личном кабинете.
Отправка отложенного SMS
Вы можете создать SMS, которое будет отправлено позже. Для этого укажите в параметре startTime
временную метк у (UNIX Timestamp) отправки сообщения. Сообщение не будет отправлено раньше указанного значения.
Параметр startTime
не может быть позднее, чем 7 календарных дней от текущего времени.
Пример запроса для отправки отложенного SMS:
- cURL
- PHP
- Node.js
- Python
curl -X POST "https://cp.redsms.ru/api/message" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')" \
-H "Content-type: application/json" \
-d "{
\"route\": \"sms\",
\"from\": \"<SMS_SENDER_NAME>\",
\"startTime\": $(date -d '+1 hour' +%s),
\"to\": \"+79993332211\",
\"text\": \"Час назад вы воспользовались услугами нашей компании.\nОцените качество работы, оставив отзыв на Яндекс.Картах\"
}"
# В OSX вместо команды md5sum необходимо использовать команду md5, для формирования времени date -v+1H +%s
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/message');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . $secret,
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'route' => 'sms',
'from' => '<SMS_SENDER_NAME>',
'startTime' => time() + (60 * 60),
'to' => '+79993332211',
'text' => 'Час назад вы воспользовались услугами нашей компании.\nОцените качество работы, оставив отзыв на Яндекс.Картах'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const ts = `ts-value-${Date.now()}`;
const apiKey = '<API_KEY>';
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const body = JSON.stringify({
route: 'sms',
from: '<SMS_SENDER_NAME>',
startTime: Math.floor(Date.now() / 1000) + (60 * 60),
to: '+79993332211',
text: 'Час назад вы воспользовались услугами нашей компании.\nОцените качество работы, оставив отзыв на Яндекс.Картах',
});
const request = https.request(
{
method: 'POST',
host: 'cp.redsms.ru',
path: '/api/message',
headers: {
login,
ts,
secret,
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/json',
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.write(body);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import json
import requests
import time
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret,
'Content-type': 'application/json',
}
data = {
'route': 'sms',
'from': '<SMS_SENDER_NAME>',
'startTime': int((datetime.now() + timedelta(hours=1)).timestamp()),
'to': '+79993332211',
'text': 'Час назад вы воспользовались услугами нашей компании.\nОцените качество работы, оставив отзыв на Яндекс.Картах'
}
r = requests.post('https://cp.redsms.ru/api/message', headers=headers, data=json.dumps(data))
# print(r.status_code)
# print(r.text)
Отправка SMS с временем жизни
По умолчанию максимальное время ожидания статуса доставки после отправки SMS – 24 часа.
Если вам предпочтительно доставка сообщения в ограниченном временном интервале (например, если информация в сообщении может стать неактуальной через несколько часов), вы можете указать параметр validity
со значением времени жизни сообщения в секундах.
Минимально допустимое значение – 600
(10 минут), максимальное – 86400
(24 часа).
- cURL
- PHP
- Node.js
- Python
curl -X POST "https://cp.redsms.ru/api/message" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')" \
-H "Content-type: application/json" \
-d '{
"route": "sms",
"from": "<SENDER_NAME>",
"validity": 3600,
"to": "+79993332211",
"text": "Код подтверждения операции 7801 действителен 1 час"
}'
# В OSX вместо команды md5sum необходимо использовать команду md5
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/message');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . $secret,
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'route' => 'sms',
'from' => '<SENDER_NAME>',
'validity' => 3600,
'to' => '+79993332211',
'text' => 'Код подтверждения операции 7801 действителен 1 час'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const ts = `ts-value-${Date.now()}`;
const apiKey = '<API_KEY>';
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const body = JSON.stringify({
route: 'sms',
from: '<SENDER_NAME>',
validity: 3600,
to: '+79993332211',
text: 'Код подтверждения операции 7801 действителен 1 час',
});
const request = https.request(
{
method: 'POST',
host: 'cp.redsms.ru',
path: '/api/message',
headers: {
login,
ts,
secret,
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/json',
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.write(body);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import json
import requests
import time
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret,
'Content-type': 'application/json',
}
data = {
'route': 'sms',
'from': '<SENDER_NAME>',
'validity': 3600,
'to': '+79993332211',
'text': 'Код подтверждения операции 7801 действителен 1 час'
}
r = requests.post('https://cp.redsms.ru/api/message', headers=headers, data=json.dumps(data))
# print(r.status_code)
# print(r.text)