Метод Create
Примените этот метод для создания массовой каскадной или SMS-рассылки. Узнайте, как отправить SMS-рассылку в этой инструкции.
Каскадная рассылка — это автоматизированная последовательная отправка уведомлений через голосовой и текстовый каналы. Например, можно запустить обзвон, а тем, до кого не получилось дозвониться, отправить SMS. Так вы быстрее сможете донести нужную информацию до ваших клиентов удобным для них способом.
Точка подключения: Выполните POST-запрос с входными параметрами к точке подключения:
POST: https://api.exolve.ru/campaign/v1/Create
Авторизация
Передайте следующие Заголовки HTTP для успешной авторизации.
| Имя | Тип | Описание |
|---|---|---|
| Authorization | string | API-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения |
Входные параметры
Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.
| Параметр | Тип | Описание |
|---|---|---|
| name | string | наименование рассылки |
| timezone | boolean | параметр учёта часового пояса. По умолчанию False - рассылка отправляется по московскому времени (UTC+3), True — учитывать часовой пояс, указанный в списке контактов |
| schedule | Schedule | расписание рассылки |
| channel | oneof Channel | один из каналов рассылки (текстовое SMS, голосовое SMS или каскадная рассылка) |
Channel
| Параметр | Тип | Описание |
|---|---|---|
| sms | Sms | канал рассылки — текстовое SMS |
| voice_message | VoiceMessage | канал рассылки — голосовое SMS (исходящий обзвон с предзаписанным аудио) |
| cascade | Cascade | каскадная рассылка (комбинация текстового и голосового каналов для последовательного уведомления абонентов) |
Sms
| Параметр | Тип | Описание |
|---|---|---|
| props | SmsProps | атрибуты сценария текстового SMS |
SmsProps
| Параметр | Тип | Описание |
|---|---|---|
| alpha_name | string | согласованное операторами имя, от которого отправляются текстовые SMS |
| text | string | текст сообщения |
Текст рассылки можно персонализировать: обратиться к клиенту по имени, указать номер заказа или адрес доставки. Для этого в тексте введите переменные в двойных фигурных скобках. Поддерживается латиница и спецсимволы (кроме пробела). Максимум: 100 переменных.
Например: Здравствуйте, {{name}}! Ваш заказ {{order_number}} будет доставлен {{date}} по адресу: {{address}}
Затем скачайте шаблон файла с помощью метода DownloadFileTemplate, добавьте в него номера получателей и названия этих переменных как заголовки. Для каждого получателя укажите своё значение переменной.
Узнайте, как сэкономить и отправить рассылку по шаблону в этой инструкции.
VoiceMessage
| Параметр | Тип | Описание |
|---|---|---|
| props | VoiceMessageProps | атрибуты сценария голосового SMS |
VoiceMessageProps
| Параметр | Тип | Описание |
|---|---|---|
| voice_message_id | string | идентификатор ресурса голосового SMS |
| from | string | номер телефона Exolve, с которого отправляются голосовые SMS |
Cascade
| Параметр | Тип | Описание |
|---|---|---|
| elements | CascadeElement | структура каскадной рассылки. Один элемент (шаг) — один канал рассылки (текстовое или голосовое SMS). Максимум — 10 шагов |
CascadeElement
| Параметр | Тип | Описание |
|---|---|---|
| sms | Sms | канал рассылки — текстовое SMS |
| voice_message | VoiceMessageChannel | канал рассылки — голосовое SMS |
| condition | enum Condition | условие перехода к следующему каналу рассылки |
SmsChannel
| Параметр | Тип | Описание |
|---|---|---|
| props | SmsProps | атрибуты сценария текстового SMS |
| ttl | string | период времени в формате ’60s’, по истечении которого будет запрошен статус SMS (от 10 до 300 секунд). |
VoiceMessageChannel
| Параметр | Тип | Описание |
|---|---|---|
| props | VoiceMessageProps | атрибуты сценария голосового SMS |
Condition
| Параметр | Тип | Описание |
|---|---|---|
| 1 | enum | звонок не принят/SMS не доставлено |
| 2 | enum | звонок принят/SMS доставлено |
| 3 | enum | в любом случае |
Schedule
| Параметр | Тип | Описание |
|---|---|---|
| days | CallIntervalDays | настройка интервалов рассылки по дням недели |
CallIntervalDays
| Параметр | Тип | Описание |
|---|---|---|
| mon | CallInterval | интервал понедельника |
| tue | CallInterval | интервал вторника |
| wed | CallInterval | интервал среды |
| thu | CallInterval | интервал четверга |
| fri | CallInterval | интервал пятницы |
| sat | CallInterval | интервал субботы |
| sun | CallInterval | интервал воскресенья |
CallInterval
From/To
| Параметр | Тип | Описание |
|---|---|---|
| hours | uint32 | час интервала |
| minutes | uint32 | минута интервала |
| seconds | uint32 | секунда интервала |
| nanos | uint32 | наносекунда интервала |
Примечание
Если вы создаёте рассылку во время одного из указанных интервалов, рассылка будет запущена только при наступлении следующего интервала. Например, если вы создаете рассылку с расписанием с понедельника по среду с 10:00 по 13:00 МСК в понедельник в 10:30 МСК, то первая рассылка будет запущена только на следующий день, то есть во вторник в 10:00 МСК.
Если при создании рассылки вы не укажете интервалы расписания, рассылка будет запускаться по расписанию по умолчанию - с понедельника по пятницу с 9:00 до 18:00 МСК.
Выходные параметры
| Параметр | Тип | Описание |
|---|---|---|
| campaign_id | uint64 | идентификатор рассылки |
Возможные ошибки
| Код | Статус | Пример сообщения | Описание |
|---|---|---|---|
| 404 | Not Found | Not Found | некорректный URL запроса |
| 401 | Unauthorized | invalid token | невалидный API-ключ |
| 400 | Bad Request | token is empty | в запросе не передан API-ключ |
| 400 | Bad Request | couldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of value | невалидный API-ключ |
| 404 | Not Found | invalid alpha name: alpha name is not found | введённое имя отправителя (альфа-имя) для текстовой SMS не принадлежит приложению |
| 404 | Not Found | invalid number: number not found | введённый номер телефона для голосовой SMS не принадлежит приложению |
| 404 | Not Found | couldn’t find voice message scenario [voice_message_id]: scenario not found | введённый идентификатор ресурса голосового SMS не принадлежит приложению |
| 409 | Conflict | couldn’t create campaign: campaign already exists | рассылка с указанными параметрами уже существует |
| 400 | Bad Request | invalid SmsProps.AlphaName: value length must be between 3 and 11 runes, inclusive | поле alpha_name содержит некорректное количество символов (корректно от 3 до 11 символов) |
| 400 | Bad Request | invalid VoiceMessageProps.From: value length must be between 1 and 14 runes, inclusive | поле from содержит некорректное количество символов (корректно от 1 до 14 символов) |
| 400 | Bad Request | invalid CreateRequest.Name: value length must be between 3 and 40 runes, inclusive | поле name содержит некорректное количество символов (корректно от 3 до 40 символов) |
| 400 | Bad Request | invalid value for string type: [value] | невалидное значение в одном из полей |
| 400 | Bad Request | invalid character " after object key:value pair | в запросе пропущена запятая в одном из параметров |
Примеры
Входные параметры:
Канал рассылки - текстовое SMS
{
"name": "test",
"timezone": true,
"sms": {
"props": {
"alpha_name": "shop",
"text": "Приходите к нам в магазин!"
}
}
}
Канал рассылки - голосовое SMS
{
"name": "test",
"timezone": true,
"voice_message": {
"props": {
"voice_message_id": "41117356-c9d5-4c94-8c62-68d7d2dac285",
"from": "79991112233"
}
}
}
Каскадная рассылка
{
"name": "Рассылка с расписанием",
"cascade": {
"elements": [
{
"sms": {
"props": {
"alpha_name": "shop",
"text": "Приходите к нам!"
}
},
"condition": "1"
},
{
"voice_message": {
"props": {
"voice_message_id": "353b86e0-a62c-47d4-9b94-8dba32c922fc",
"from": "79991112233"
}
}
}
]
},
"schedule": {
"days": {
"mon": {
"intervals": [
{
"from": {
"hours": 10,
"minutes": 0,
"seconds": 0,
"nanos": 0
},
"to": {
"hours": 15,
"minutes": 30,
"seconds": 0,
"nanos": 0
}
}
]
}
}
}
}
Выходные параметры:
{
"campaign_id": "130370354778222592"
}