Перейти к основному содержимому

Отправка каскадных сообщений

Каскадные сообщения – это последовательность каналов отправки, каждый из которых срабатывает в зависимости от статуса сообщения, полученном на предыдущем этапе.

В большинстве случаев переотправка сообщения по другому каналу происходит, если на предыдущем был получен «отрицательный» статус, такой как undelivered или timeout. Исключением являются каналы hlr и ping, которые инициируют отправку сообщения по очередному каналу в случае «положительного» статуса delivered.

Для отправки каскадного сообщения используйте стандартный метод отправки сообщения POST /api/message с последовательностью каналов, разделённых запятой , в параметре route.

Вы можете изменять параметры отдельного канала, например, текст или время ожидания статуса. Для этого используйте общие параметры с префиксом [route]_, где [route] – название канала.

Примеры использования каскадных сообщений​

Предварительная проверка активности абонента перед отправкой SMS​

Чтобы не отправлять SMS абоненту не в сети, можно предварительно проверить его активность, используя HLR-запрос, который будет стоить значительно меньше.

В случае, если HLR-запрос будет иметь статус delivered (абонент в сети), автоматически будет отправлено SMS.

Пример отправки SMS с предварительной проверкой HLR:

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 '{
"to": "+79993332211",
"route": "hlr,sms",
"hlr_validity": 500,
"sms_from": "<SMS_SENDER_NAME>",
"sms_text": "Ваш заказ А-381 отправлен, отслеживайте статус в приложении"
}'

# В OSX вместо команды md5sum необходимо использовать команду md5

Отправка маркетингового сообщения клиенту по одному из доступных каналов​

В случае отправки маркетинговых сообщений отсутствует необходимость оперативной доставки, поэтому можно не указывать параметры _validity, используя значение по умолчанию – 24 часа.

В примере ниже мы будем пытаться доставить сообщение клиенту в Viber, а в случае, если приложение не установлено – отправим SMS. Мы также укажем для SMS более короткий текст в целях экономии.

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 '{
"to": "+79993332211",
"route": "viber,sms",

"viber_from": "<VIBER_SENDER_NAME>",
"viber_imageUrl": "https://loremflickr.com/400/400",
"viber_text": "Только до конца марта – скидки на все категории товаров. Успейте купить дешевле",
"viber_btnText": "Получить скидку",
"viber_btnUrl": "https://your-site.ru/sales",

"sms_from": "<SMS_SENDER_NAME>",
"sms_text": "Скидки на все категории до 31.03"
}'

# В OSX вместо команды md5sum необходимо использовать команду md5

Отправка уведомления через VK, звонок или SMS​

В следующем примере рассмотрим отправку с разным временем ожидания статуса на разных каналах.

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 '{
"to": "+79993332211",
"route": "vk,voice,sms",

"text": "Напоминаем о предстоящей записи завтра в 16:00",

"vk_from": "<VK_SENDER_NAME>",
"vk_validity": 3600,

"voice_from": "<VOICE_SENDER_NAME>",
"voice_voice": "jane",
"voice_emotion": "good",
"voice_validity": 1200,

"sms_from": "<SMS_SENDER_NAME>",
"sms_text": "Вы записаны завтра в 16:00",
"sms_validity": 1800
}'

# В OSX вместо команды md5sum необходимо использовать команду md5

Авторизация через PushOk (SIM-Push) или SMS​

Услугу PushOk (SIM-push) поддерживают только 4 основных оператора. Для авторизации абонентов других операторов можно использовать SMS.

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 '{
"to": "+79993332211",
"route": "pushok,sms",

"pushok_validity": 60,
"pushok_text": "enter",

"sms_from": "<SMS_SENDER_NAME>",
"sms_text": "Ваш код авторизации 8085"
}'

# В OSX вместо команды md5sum необходимо использовать команду md5

Отслеживание статуса доставки каскадного сообщения​

Каскадные сообщения, которые были отправлены более чем по одному каналу (сработала хотя бы одна переотправка) состоят из нескольких «обычных» сообщений, которые связаны как двунаправленный связный список.

В поле сообщения child_uuid хранится UUID сообщения по следующему каналу, в поле parent_uuid – по предыдущему.

Вы можете хранить UUID и информацию только о последнем сообщении в последовательности отправки, либо дополнительно сохранять информацию о промежуточных отправках.

Схема определения статуса доставки каскадного сообщения: