IMOBIS API (3.0)

Download OpenAPI specification:Download

API для отправки сообщений различными каналами

Точка подключения: https://api.imobis.ru/v3

Формат данных: JSON

Кодировка: UTF-8

Заголовки

Authorization: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Content-Type: application/json

Введение

Документация по API системы Imobis. Для работы с API необходим ключ, который можно получить в личном кабинете Imobis в разделе Токены -> Создать токен. Используйте токен в заголовке для авторизации HTTP запросов к системе Imobis. Подробнее о получении доступа к API и генерации токенов - см. нашу статью в базе знаний.

Авторизация

Для аутентификации запросов включите в запрос заголовок Authorization: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Песочница

Режим песочницы — это удобный и безопасный способ тестировать Imobis перед запуском в боевом режиме. Вы сможете отправлять запросы и получать статусы, но без отправки реальных сообщений. Для активации необходимо зайти в личный кабинет Imobis (app.imobis.ru) и в верхнем правом меню переключиться в "режим песочницы", в случае успеха внизу появится баннер о том, что вы находитесь в режиме песочницы. Далее для работы с API создайте ключ, перейдя в раздел Токены-> Создать токен и перенаправьте все запросы на домен песочницы (https://sandbox.imobis.ru).

Для получения определенного статуса сообщений необходимо использовать номер в специальном формате. Формат номера (CRXYZNNNNNN): код страны (C), одна произвольнная цифра (R), код статуса, который вы хотите получить, для каждого из трех каналов (X - SMS, Y - Viber, Z - VK), далее (N) произвольные цифры для соответствия формату номера. Пример: +79165123456. В примере, сначала указан код страны (+7), потом одна произвольнная цифра (9), затем три кода статусов по каналам (1 - SMS, 6 - Viber, 5 - VK), далее произвольные цифры (123456) для соответствия формату номера. Песочница поддерживает номера следующих стран: Россия (+7), Финляндия (+358), США/Канада (+1).

Коды статусов сообщений

Код Статус Описание
0 random Случайный выбор
1 delivered Доставлено
2 read Прочитано (только VK/Viber)
3 sent Сообщение передано оператору, окончательный статус не был получен
4 undelivered Сообщение не может быть доставлено
5 rejected Сообщение отклонено оператором
6 expired Время на доставку сообщения истекло
7 unknown Статус неизвестен
8 error Ошибка отправки
9 deleted Сообщение не прошло модерацию

Отправка сообщения

Методы для отправки сообщений возвращают статус приема в обработку и идентификатор сообщения. Все методы отправки поддерживают параметр daydelivery, который отвечает за доставку сообщений в дневные часы. Время дневных часов можно настроить в Личном кабинете, перейдя в раздел Дополнительные настройки. По умолчанию дневными часами считается период с 9 утра до 8 вечера. Сообщения отправленные до или после дневных часов, при условии наличия параметра daydelivery, начнут доставлять в момент начала нового периода дневных часов. Также все методы отправки поддерживают параметр delivery_date с помощью которого можно задать отложенное время доставки. Параметр delivery_date имеет следующий формат даты и времени Y-m-d H:i:s. Время указывается в UTC и не должно быть больше чем 3 дня от текущего времени.

SMS-сообщение

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
sender
required
string

Имя отправителя

phone
required
string

Номер абонента

text
required
string

Текст сообщения

ttl
number [ 60 .. 172800 ]
Default: 172800

Время жизни сообщения в секундах

custom_id
string

Пользовательский идентификатор сообщения

report
string

URL для получения статусов

daydelivery
boolean

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

delivery_date
string <date-time>

Дата и время доставки сообщения

Responses

Callbacks

Request samples

Content type
application/json
{
  • "sender": "imobis.ru",
  • "phone": "70000000000",
  • "text": "Текст",
  • "ttl": 172800,
  • "custom_id": "123",
}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Callback payload samples

Callback
POST: Статус сообщения
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Viber-сообщение

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
sender
required
string

Имя отправителя

phone
required
string

Номер абонента

text
string

Текст сообщения

image
string

URL картинка (рекомендуется 400x400, не более 1 МБ)

object (Action)
ttl
number [ 60 .. 86400 ]
Default: 600

Время жизни сообщения в секундах

custom_id
string

Пользовательский идентификатор сообщения

report
string

URL для получения статусов

reply
string

URL для получения ответов

daydelivery
boolean

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

delivery_date
string <date-time>

Дата и время доставки сообщения

Responses

Callbacks

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Callback payload samples

Callback
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Сообщение Вконтакте

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
group
required
number

Идентификатор группы ВК

phone
required
string

Номер абонента

text
required
string

Текст сообщения

ttl
number [ 60 .. 86400 ]
Default: 600

Время жизни сообщения в секундах

custom_id
string

Пользовательский идентификатор сообщения

report
string

URL для получения статусов

reply
string

URL для получения ответов

daydelivery
boolean

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

delivery_date
string <date-time>

Дата и время доставки сообщения

Responses

Callbacks

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Callback payload samples

Callback
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Гибридная(каскадная) отправка

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
custom_id
string

Пользовательский идентификатор сообщения

report
string

URL для получения статусов

reply
string

URL для получения ответов

daydelivery
boolean

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

delivery_date
string <date-time>

Дата и время доставки сообщения

required
Array of objects (Route)

Порядок отправки

Responses

Callbacks

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Callback payload samples

Callback
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Отправка каналами по умолчанию (отправим так, как указано в профиле клиента)

Cуть метода в том, чтобы отправить сообщение несколькими каналами(каскадом), но в запросе передать только текст. Мы же при обработке сообщения будем учитывать те каналы и ту очередность, которые установлены в личном кабинете.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
custom_id
string

Пользовательский идентификатор сообщения

report
string

URL для получения статусов

reply
string

URL для получения ответов

daydelivery
boolean

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

delivery_date
string <date-time>

Дата и время доставки сообщения

sender
string

Имя отправителя

phone
required
string

Номер абонента

text
required
string

Текст сообщения

ttl
number [ 60 .. 86400 ]
Default: 300

Время жизни сообщения в секундах

Responses

Callbacks

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Callback payload samples

Callback
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Несколько сообщений на несколько номеров

В данном методе поля и правила к ним соответствуют методу "Гибридная (каскадная) отправка", но отправляются в виде массива.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
Array
custom_id
string
report
string
reply
string
daydelivery
boolean
delivery_date
string <date-time>
required
Array of objects (Desc)

Responses

Callbacks

Request samples

Content type
application/json
[]

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": [
    ]
}

Callback payload samples

Callback
Content type
application/json
{
  • "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
  • "custom_id": "123",
  • "status": "error",
  • "channel": "sms",
  • "error": "The text is not matched existing templates",
  • "code": 1000
}

Ответ сервера и возможные ошибки

Ошибки возникающие в момент выполнения запроса на отправку сообщения.

Описание ошибок

Ошибка Описание
Not found channel settings Настройки канал не найдены
The channel is not allowed Отправка по данному каналу запрещена
The text is not matched existing templates Текст сообщения не соответствует шаблону
No params Не указаны параметры
No field "<field name>" Отсутствует обязательное поле "<название поля>"
Text or image or action must be specified Отсутствует текст, картинка или кнопка (только Viber)
Incorrect content combination Неверная комбинация содержимого (только Viber)
Action title and URL must be specified Должны быть указаны заголовок и URL для кнопки (только Viber)
No phone or user Отсутствует номер абонента или телефон (только VK)
No text or tmpl Отсутствует текст или шаблон (только VK)

Статусы сообщений

Для того, чтобы получить статус сообщения нужно в запросе на его отправку указать URL вашего обработчика в параметре report. На указанный URL будет выслан запрос методом POST. В случае, если параметр report не был указан, статус сообщения можно отследить в Личном кабинете.

Основные статусы

Статус Описание
accepted Сообщение принято, подготовка к передаче оператору
sent Сообщение передано оператору, окончательный статус не был получен
unknown Статус неизвестен
rejected Сообщение отклонено оператором
undelivered Сообщение не может быть доставлено
expired Время на доставку сообщения истекло
deleted Сообщение не прошло модерацию
delivered Доставлено
read Прочитано (только VK/Viber)
error Ошибка отправки

Коды ошибок в статусе сообщения

Для того, чтобы получать ошибки при отправке сообщения нужно в запросе на его отправку указать URL вашего обработчика в параметре report. На указанный URL будет выслан запрос методом POST. В случае, если параметр report не был указан, ошибки при отправке сообщения можно отследить в Личном кабинете.

Описание ошибок

Код Ошибка Описание
1000 Undocumented mistake (please ask support) Недокументированная ошибка (обратитесь в поддержку)
1001 Internal error Внутренняя ошибка
1003 Authorization error Ошибка авторизации
1010 Tel.number error Ошибка номера абонента
1011 Sender ID error Ошибка имени отправителя
1012 Message text error Ошибка текста сообщения
1013 IP error (request from blacklisted IP) Ошибка IP (запрос с запрещенного IP адреса)
1014 User message ID error Ошибка пользовательского идентификатора сообщения
1015 Balance error - not enough funds Недостаточно средств на балансе
1016 Delivery failure (routing is not configured) Ошибка отправки (не настроена маршрутизация)
1018 You've already sent message with same user message ID Сообщение с указанным пользовательским идентификатором сообщения уже было
1019 Tel.number is in the black list Номер находится в «Чёрном списке»
1020 You've reached max. subscribers per request limit Превышено допустимое кол-во абонентов в запросе на множественную отправку
1021 Invalid argument Недопустимый аргумент
1022 Delivery is only opened to the number registered for you account Отправка доступна только на номер аккаунта
1025 Wrong sms ID format Неверный формат идентификатора
1026 Wrong user message ID format Неверный формат пользовательского идентификатора сообщения
1027 There should be at least one sms ID in the request Не передано ни одного идентификатора сообщения
1029 Message with this ID was not found Сообщение с указанным идентификатором не найдено
1030 Routing error Ошибка очередности каналов отправки
1031 Invalid content type Недопустимый тип контента
1033 Wrong TTL for messengers Неправильный TTL для мессенджеров
1034 Wrong time-out ("time-to-live") for Viber Ошибка таймаута («времени жизни») на Viber
1035 Wrong set of parameters for your content (text, image, button) Неверный набор параметров для контента (текст, картинка, кнопка)
1036 Wrong image URL Некорректный URL для картинки
1037 Wrong button URL Некорректный URL для кнопки
1040 Wrong time-out ("time-to-live") for SMS Ошибка таймаута («времени жизни») в SMS
1042 Missed title for the template Отсутствует заголовок шаблона
1043 Missed template text Отсутствует текст шаблона
1050 Template does not exist Такого шаблона не существует
1051 You don't have access to the template У вас нет доступа к данному шаблону
1052 There was an error verifying fields values Ошибка при проверке значений полей
1053 Missed value that is obligatory Не передано обязательное значение
1054 Wrong DATE format Неверный формат даты
1056 Wrong value for this field type Неверное значение для данного типа поля
1058 User can't make that action Действие недоступно пользователю
1100 Unknown error (VK.com) Неустановленная ошибка (Вконтакте)
1101 Exceeding the limit (VK.com) Превышен лимит (Вконтакте)
1102 Message delivery is blocked by the VK.com user Получение сообщений заблокировано пользователем Вконтакте
1200 No existing transactional messages delivered to the user at the moment (Viber) Не было сервисного сообщения (Viber)
1201 Message delivery is blocked by the Viber user Абонент заблокировал прием сообщений для отправителя (Viber)
1202 Viber app is not installed Не установлено приложение Viber
1203 Old version of Viber app Устаревшая версия приложения Viber

Ответы на сообщения

Некоторые каналы (например, Viber) позволяют абонентам отправлять ответы на сообщения. В данном разделе описано как вы можете настроить получение этих ответов в свою систему.Для того, чтобы пользователь мог что-то ответить/написать вам через Viber, нужно, чтобы у вашего имени отправителя, зарегистрированного в Viber, поддерживалась опция 2-way - поддержка входящих/исходящих сообщений (узнать подключена ли опция для вашего имени, можно у представителя Imobis).

Указывайте адрес вашего ресурса в параметре reply при отправке сообщения, куда мы перенаправим ответ пользователя.

При отправке сообщения в параметре reply нужно указать url обработчика на который будет отправлен запрос.

Шаблоны

В тексте шаблонов могут встречаться переменные. Для корректного создания и обновления переменных в шаблонах используйте один из методов, представленных ниже.

Вариант 1

Использование служебных конструкций указывающих на тип переменных прямо в параметре text.

Виды служебных конструкций

Переменная Описание
%d любой непрерывный набор цифр и\или спецсимволов
%d+ последовательность чисел и\или спецсимволов разделенные пробелом
%w любой непрерывный набор букв и\или спецсимволов
%w+ последовательность слов (состоящих из букв, цифр или спецсимволов) разделенные пробелами

Пример: Заказ %d подтвержден. Благодарим за выбор сервиса %w+

Исходя из примера предполагается, что в тексте сообщения вместо переменной %d придет набор цифр и/или спецсимволов, а вместо переменной $w+ любая последовательность букв, цифр или спецсимволов, причем внутри значения могут быть разделены пробелом.

Совет. Если вы заранее не знаете какой вид служебной конструкции использовать в тексте шаблона, выбирайте универсальный вариант %w+.

Вариант 2

Совместное использование параметров text и fields для указания переменных и их типов. При использовании данного варианта имена переменных обрамляются знаками {{ перед и }} после, а их тип указывается в параметре fields. Это решение удобно, когда важно пользовательское наименование переменной.

Пример: Здравствуйте, {{name}}. Благодарим за регистрацию в сервисе {{service}}

Сразу видно где какое значение будет передаваться. При этом для передачи вида служебной конструкции используется параметр fields. Именно в нем должна содержаться информация о типах переменных.

{ "text": "Здравствуйте, {{name}}. Благодарим за регистрацию в сервисе {{service}}", "fields": [ { "name": "name", "type": "%w+" }, { "name": "service", "type": "%w+" } ] }

Список шаблонов

Возвращает список шаблонов аккаунта.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Responses

Response samples

Content type
application/json
{
  • "result": "success",
  • "data": {
    }
}

Создание шаблона

Создание шаблона.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
name
string

Имя

text
required
string

Текст

Array of objects (Template fields data)

Типы переменных

channels
required
Array of strings
Items Enum: "sms" "viber" "vk"

Каналы

group_url
string

Ссылка на группу (ВК)

comment
string

Комментарий

Responses

Request samples

Content type
application/json
{
  • "name": "template name",
  • "text": "template {{name}} created {{date}}",
  • "fields": [
    ],
  • "channels": [
    ],
  • "group_url": "only VK channel",
  • "comment": "comment"
}

Response samples

Content type
application/json
{
  • "result": "success",
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "name": "template name"
}

Обновление шаблона

Обновление шаблона.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
id
required
string

ID шаблона

required
Array of objects (Template options data)

Поля для обновления

Array of objects (Template fields data)

Типы переменных

Responses

Request samples

Content type
application/json
{
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "options": {
    },
  • "fields": [
    ]
}

Response samples

Content type
application/json
{
  • "result": "success",
  • "change": {
    }
}

Удаление шаблона

Удаление шаблона.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
id
required
string

Responses

Request samples

Content type
application/json
{
  • "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Response samples

Content type
application/json
{
  • "result": "success"
}

Другие запросы

Запрос баланса

Возвращает текущий баланс клиента в системе Imobis.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Responses

Response samples

Content type
application/json
{
  • "result": "success",
  • "balance": "500.25"
}

Запрос списка имен отправителей

Возвращает список Имен отправителей, активных в профиле. Если в параметре channel указано значение all, то вернет все имена для всех активных каналов. Если указано значение sms, то вернет только те имена, которые подключены для канала SMS.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
channel
required
string
Enum: "sms" "all"

Канал списка

Responses

Request samples

Content type
application/json
{
  • "channel": "all"
}

Response samples

Content type
application/json
{
  • "result": "success",
  • "senders": {
    }
}

Информация о логине

Возвращает логин клиента в системе Imobis.

header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Responses

Response samples

Content type
application/json
{
  • "result": "success",
  • "login": "login"
}

Проверка номера

Позволяет привести номер к корректному формату. Проверяет является ли номер мобильным и к какой стране относится. Для мобильных РФ дополнительно возвращает оператора, регион обслуживания и часовой пояс. При определении оператора учитывает базу портированных номеров.

Параметр phone предназначен для получения информации об одном номере. Чтобы получить информацию о нескольких номерах используйте параметр phones. Параметр phones не должен содержать больше 500 номеров. Рекомендуется использовать только один параметр. Из номера удаляются все лишние символы +()- и тд.

Параметр в ответе Описание
phone_source Телефонный номер без лишних символов
phone_number Телефонный номер, приведенный к международному стандарту
status Статус (invalid, ok)
country Страна
operator Оператор (только РФ)
region_id Цифровой код региона РФ
region_name Название региона РФ
region_timezone Разница региона РФ в часах с Москвой
Статус Описание
invalid Неверный формат номера / не существует
ok Номер валидный и существует
header Parameters
Content-Type
required
string
Example: application/json
Authorization
required
string
Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Request Body schema: application/json
phone
string
phones
Array of strings

Responses

Request samples

Content type
application/json
{
  • "phone": "79421547878",
  • "phones": [
    ]
}

Response samples

Content type
application/json
{
  • "result": "success",
  • "data": [
    ]
}

История изменений

03.12.2021