Массовая отправка сообщений
С помощью общего метода отправки сообщения POST /api/message вы можете отправлять множество сообщений разным получателем. Для этого укажите в параметре to список номеров телефонов, разделённых запятой ,.
Максимальное количество сообщений в одном запросе – 300 000 шт.
Важно
Сообщения будут отправлены одновременно всем указанным получателям. Данный метод может не подойти, если вам необходима равномерная отправка по времени.
На этой странице приведены примеры массовой отправки 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": "<SENDER_NAME>",
"to": "+79993332211,+79993332212,+79993332213",
"text": "Только до конца февраля! Скидки на все категории товаров до 50%"
}'
# В 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>',
'to' => implode(',', ['+79993332211', '+79993332212', '+79993332213']),
'text' => 'Только до конца февраля! Скидки на все категории товаров до 50%'
]));
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>',
to: ['+79993332211', '+79993332212', '+79993332213'].join(','),
text: 'Только до конца февраля! Скидки на все категории товаров до 50%',
});
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>',
'to': ','.join(['+79993332211', '+79993332212', '+79993332213']),
'text': 'Только до конца февраля! Скидки на все категории товаров до 50%'
}
r = requests.post('https://cp.redsms.ru/api/message', headers=headers, data=json.dumps(data))
# print(r.status_code)
# print(r.text)
Пример тела ответа:
{
"items": [
{
"uuid": "21c2e4ce-c503-11ee-b60a-0242c0a86496",
"status": "created",
"status_time": 1707232773,
"to": "+79993332211"
},
{
"uuid": "21cb4b8c-c503-11ee-b364-0242c0a86496",
"status": "created",
"status_time": 1707232773,
"to": "+79993332212"
},
{
"uuid": "21cd3a96-c503-11ee-a723-0242c0a86496",
"status": "created",
"status_time": 1707232773,
"to": "+79993332213"
}
],
"errors": [],
"count": 3,
"success": true
}
Для получения статуса доставки сообщений используйте запросы GET /api/message/{uuid} или Webhook.