Отправка Flash-call
Flash-call используется для авторизации пользователя по последним цифрам звонящего номера и является альтернативой классическим SMS.
Отправка Flash-call осуществляется через общий метод отправки сообщений POST /api/message
.
В тексте сообщения укажите код из 4-х цифр.
Пример запроса для отправки Flash-call:
- 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": "fcall",
"to": "+79993332211",
"text": "1234"
}'
# В 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' => 'fcall',
'to' => '+79993332211',
'text' => '1234'
]));
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: 'fcall',
to: '+79993332211',
text: '1234',
});
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': 'fcall',
'to': '+79993332211',
'text': '1234'
}
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
}
примечание
Flash-call не является официальной услугой операторов. Такой способ доставки кодов блокируется со стороны операторов, процент прохождения вызовов составляет приблизительно 75%.
Рекомендуем использовать Flash-call в каскадных сообщениях, либо давать клиенту резервный способ авторизации.