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 дня от текущего времени.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
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> Дата и время доставки сообщения |
{- "sender": "imobis.ru",
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 172800,
- "custom_id": "123",
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
- "custom_id": "123",
- "status": "error",
- "channel": "sms",
- "error": "The text is not matched existing templates",
- "code": 1000
}
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
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> Дата и время доставки сообщения |
{- "sender": "imobis",
- "phone": "70000000000",
- "text": "Текст",
- "action": {
- "title": "Кнопка",
- "url": "string"
}, - "ttl": 600,
- "custom_id": "123",
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
- "custom_id": "123",
- "status": "error",
- "channel": "sms",
- "error": "The text is not matched existing templates",
- "code": 1000
}
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
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> Дата и время доставки сообщения |
{- "group": 5965316,
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 600,
- "custom_id": "123",
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
- "custom_id": "123",
- "status": "error",
- "channel": "sms",
- "error": "The text is not matched existing templates",
- "code": 1000
}
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
custom_id | string Пользовательский идентификатор сообщения |
report | string URL для получения статусов |
reply | string URL для получения ответов |
daydelivery | boolean Отправка сообщения в дневные часы |
delivery_date | string <date-time> Дата и время доставки сообщения |
required | Array of objects (Route) Порядок отправки |
{- "custom_id": "123",
- "route": [
- {
- "channel": "vk",
- "group": 5965316,
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 600
}, - {
- "channel": "viber",
- "sender": "imobis",
- "phone": "70000000000",
- "text": "Текст",
- "action": {
- "title": "Кнопка",
- "url": "string"
}, - "ttl": 600
}, - {
- "channel": "sms",
- "sender": "imobis.ru",
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 172800
}
]
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
- "custom_id": "123",
- "status": "error",
- "channel": "sms",
- "error": "The text is not matched existing templates",
- "code": 1000
}
Cуть метода в том, чтобы отправить сообщение несколькими каналами(каскадом), но в запросе передать только текст. Мы же при обработке сообщения будем учитывать те каналы и ту очередность, которые установлены в личном кабинете.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
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 Время жизни сообщения в секундах |
{- "custom_id": "123",
- "sender": "imobis",
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 300
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "id": "fd698b41-7476-4478-bd1c-d74266f3cc86",
- "custom_id": "123",
- "status": "error",
- "channel": "sms",
- "error": "The text is not matched existing templates",
- "code": 1000
}
В данном методе поля и правила к ним соответствуют методу "Гибридная (каскадная) отправка", но отправляются в виде массива.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
custom_id | string |
report | string |
reply | string |
daydelivery | boolean |
delivery_date | string <date-time> |
required | Array of objects (Desc) |
[- {
- "custom_id": "123",
- "route": [
- {
- "channel": "vk",
- "group": 5965316,
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 600
}, - {
- "channel": "viber",
- "sender": "imobis",
- "phone": "70000000000",
- "text": "Текст",
- "action": {
- "title": "Кнопка",
- "url": "string"
}, - "ttl": 600
}, - {
- "channel": "sms",
- "sender": "imobis.ru",
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 172800
}
]
}, - {
- "custom_id": "123",
- "route": [
- {
- "channel": "vk",
- "group": 5965316,
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 600
}, - {
- "channel": "viber",
- "sender": "imobis",
- "phone": "70000000000",
- "text": "Текст",
- "action": {
- "title": "Кнопка",
- "url": "string"
}, - "ttl": 600
}, - {
- "channel": "sms",
- "sender": "imobis.ru",
- "phone": "70000000000",
- "text": "Текст",
- "ttl": 172800
}
]
}
]
{- "result": "success",
- "id": [
- "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
}
{- "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 обработчика на который будет отправлен запрос.
В тексте шаблонов могут встречаться переменные. Для корректного создания и обновления переменных в шаблонах используйте один из методов, представленных ниже.
Использование служебных конструкций указывающих на тип переменных прямо в параметре text.
Переменная | Описание |
---|---|
%d | любой непрерывный набор цифр и\или спецсимволов |
%d+ | последовательность чисел и\или спецсимволов разделенные пробелом |
%w | любой непрерывный набор букв и\или спецсимволов |
%w+ | последовательность слов (состоящих из букв, цифр или спецсимволов) разделенные пробелами |
Пример: Заказ %d подтвержден. Благодарим за выбор сервиса %w+
Исходя из примера предполагается, что в тексте сообщения вместо переменной %d придет набор цифр и/или спецсимволов, а вместо переменной $w+ любая последовательность букв, цифр или спецсимволов, причем внутри значения могут быть разделены пробелом.
Совет. Если вы заранее не знаете какой вид служебной конструкции использовать в тексте шаблона, выбирайте универсальный вариант %w+.
Совместное использование параметров text и fields для указания переменных и их типов. При использовании данного варианта имена переменных обрамляются знаками {{ перед и }} после, а их тип указывается в параметре fields. Это решение удобно, когда важно пользовательское наименование переменной.
Пример: Здравствуйте, {{name}}. Благодарим за регистрацию в сервисе {{service}}
Сразу видно где какое значение будет передаваться. При этом для передачи вида служебной конструкции используется параметр fields. Именно в нем должна содержаться информация о типах переменных.
{ "text": "Здравствуйте, {{name}}. Благодарим за регистрацию в сервисе {{service}}", "fields": [ { "name": "name", "type": "%w+" }, { "name": "service", "type": "%w+" } ] }
Возвращает список шаблонов аккаунта.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
{- "result": "success",
- "data": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "template name",
- "text": "template text",
- "channel": "sms",
- "group_url": null,
- "status": "approved",
- "comment": "",
- "notify_service": null,
- "active": true,
- "created": 1638306000,
- "updated": 1638306000
}
}
Создание шаблона.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
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 Комментарий |
{- "name": "template name",
- "text": "template {{name}} created {{date}}",
- "fields": [
- {
- "name": "name",
- "type": "%w+"
}, - {
- "name": "date",
- "type": "%w+"
}
], - "channels": [
- "sms",
- "vk"
], - "group_url": "only VK channel",
- "comment": "comment"
}
{- "result": "success",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "template name"
}
Обновление шаблона.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
id required | string ID шаблона |
required | Array of objects (Template options data) Поля для обновления |
Array of objects (Template fields data) Типы переменных |
{- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "options": {
- "text": "template {{name}} created {{date}}",
- "name": "template name",
- "comment": "comment"
}, - "fields": [
- {
- "name": "name",
- "type": "%w+"
}, - {
- "name": "date",
- "type": "%w+"
}
]
}
{- "result": "success",
- "change": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "template name",
- "text": "template text",
- "channel": "sms",
- "group_url": null,
- "status": "approved",
- "comment": "",
- "notify_service": null,
- "active": true,
- "created": 1638306000,
- "updated": 1638306000
}
}
Удаление шаблона.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
id required | string |
{- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "result": "success"
}
Возвращает текущий баланс клиента в системе Imobis.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
{- "result": "success",
- "balance": "500.25"
}
Возвращает список Имен отправителей, активных в профиле. Если в параметре channel указано значение all, то вернет все имена для всех активных каналов. Если указано значение sms, то вернет только те имена, которые подключены для канала SMS.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
channel required | string Enum: "sms" "all" Канал списка |
{- "channel": "all"
}
{- "result": "success",
- "senders": {
- "sms": [
- "imobis.ru"
], - "viber": [
- "Сервисные оповещения"
], - "vk": [
- "imobis_imobis"
]
}
}
Возвращает логин клиента в системе Imobis.
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
{- "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 | Номер валидный и существует |
Content-Type required | string Example: application/json |
Authorization required | string Example: Token xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
phone | string |
phones | Array of strings |
{- "phone": "79421547878",
- "phones": [
- "79421547878",
- "79421547878"
]
}
{- "result": "success",
- "data": [
- {
- "phone_source": "79421547878",
- "phone_number": "79421547878",
- "status": "invalid",
- "country": "RU",
- "operator": "не известен",
- "region_id": "",
- "region_name": "",
- "region_timezone": ""
}, - {
- "phone_source": "79421547878",
- "phone_number": "79421547878",
- "status": "ok",
- "country": "RU",
- "operator": "TELE2",
- "region_id": "78",
- "region_name": "Санкт-Петербург",
- "region_timezone": "0"
}
]
}