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

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

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

В большинстве случаев переотправка сообщения по другому каналу происходит, если на предыдущем был получен «отрицательный» статус, такой как 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 и информацию только о последнем сообщении в последовательности отправки, либо дополнительно сохранять информацию о промежуточных отправках.

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