Запросы
2. Запросы
2.1. Отправить сообщения
URL: http://stream.ibatelecom.ru:8083/broker-api/send
Запрос используется для отправки сообщений по различным каналам.
2.1.1 Тело запроса
Приведенный JSON демонстрирует все доступные в запросе параметры. Примеры запросов для разных задач доступны в разделе 3.
{
   	 "template-id": "",
   	 "priority": "",
   	 "blacklist-id": "",
 "external-id1": "",
 "external-id2": "",
 "external-id3": "",
   	 "timing": {
"localtime": "",
   	 	"start-datetime": "",
   	 	"end-datetime": "",
   		"allowed-starttime": "",
   		"allowed-endtime": "",
   		"send-evenly": "",
		"allowed-days": ""
},
"viber": {
"originator": "viberSender",
"ttl": "300",
   		"content": {
   			 "text" : "Test text",
   			 "image-url": "test.domain/picture.jpg",
   			 "button-name": "button",
   			 "button-url": "test.domain"
   			 }
   		 },
   	 "sms": {
   		"originator": "smsSender",
   		"ttl": "300",
   		"content": {
   			"text": "Test text"
   			}
   		},
   	"push": {
   		 "application": "pushApp",
   		 "ttl": "300",
   		 "content": {
   			"title": "",
   			"text": "Test text",
   			"extra-content": "",
			"additional-data" : {}
   			}
   		},
   	 "call": {
   		"originator": "79009009090",
   		"ttl": "300",
   		"content": {
   			"text": "Test text",
"menu": "Test",
"file": ""
   			},
   		"retry-attempts": "",
   		"retry-timeout": ""
   		},
"ussd": {
   		"originator": "150",
"ttl": "300",
   		"content": {
"text": "Test text",
   			 "menu": "Test"
   			}
   		},
   	"email": {
   		"originator": "emailSender@example.com",
   		"ttl": "300",
   		"content": {
   			"subject": "",
   			"text": "Test text",
   			"attached-files": [{"name.txt": "iwuanaUajwm"}, {"name.pdf": "iwuanaUajwm"}]
   			}
   		},
   	 "messages":
   		 [
   		 {
   		 "recipient": "79990009900",
   		 "email-address": "test@example.com",
   		 "message-id": "2017-11-07-18-29-30",
   		 "template-id": "",
   		 "priority": "",
 "variables": [],
   		 "timing": {		
"localtime": "",
   		 	"start-datetime": "",
   		 	"end-datetime": "",
   		 	"allowed-starttime": "",
   		 	"allowed-endtime": "",
"allowed-days": ""
},
   		 "viber": {
"originator": "viberSender",
"ttl": "300",
   			"content": {
   				 "text": "Test text",
   				 "image-url": "test.domain/picture.jpg",
   				 "button-name": "button",
   				 "button-url": "test.domain"
   				 }
   			 },
   		 "sms": {
   			"originator": "smsSender",
   			"ttl": "300",
   			 "content": {
   				"text": "Test text"
   				}
   			},
   		"push": {
   			 "application": "pushApp",
   			 "ttl": "300",
   			 "content": {
   				"title": "",
   				"text": "Test text",
   				"extra-content": "",
				"additional-data" : {}
   				}
   			},
   		 "call": {
   			"originator": "79009009090",
   			"ttl": "300",
   			"content": {
   				"text": "Test text",
"menu": "Test",
				"file": ""
   				},
   			"retry-attempts": "",
   			"retry-timeout": ""
   			},
   		 "ussd": {
   			"originator": "150",
"ttl": "300",
   			"content": {
 "text": "Test text",
   				 "menu": "Test"
   				}
   			}
   			},
   		 "email": {
   			"originator": "emailSender@example.com",
   			"ttl": "300",
   			"content": {
   				"subject": "",
   				"text": "Test text",
   				"attached-files": [],
   				}
   			}
   		]
}
    2.1.2 Параметры запроса
2.1.2.1 Общие параметры
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | template-id  | string  | Нет  | Идентификатор шаблона для отправки сообщения  | 
| 2 | priority  | string  | Нет  | Приоритет (указывается в цифровой форме):  | 
| 3 | blacklist-id  | string  | Нет  | Идентификатор черного списка  | 
| 4 | external-id1  | string  | Нет  | Дополнительный параметр, как правило не учитывается  | 
| 5 | external-id2  | string  | Нет  | Дополнительный параметр, как правило не учитывается  | 
| 6 | external-id3  | string  | Нет  | Дополнительный параметр, как правило не учитывается  | 
| 7 | timing  | object  | Нет  | Временные настройки  | 
| 8 | viber  | object  | Нет  | Параметры для отправки по каналу viber  | 
| 9 | sms  | object  | Нет  | Параметры для отправки по каналу sms  | 
| 10 | push  | object  | Нет  | Параметры для отправки по каналу push  | 
| 11 | call  | object  | Нет  | Параметры для отправки по каналу call  | 
| 12 | object  | Нет  | Параметры для отправки по каналу email  | |
| 13 | ussd  | object  | Нет  | Параметры для отправки по каналу ussd  | 
| 14 | messages  | array  | Да  | Параметры получателей  | 
2.1.2.2 Параметры объекта timing
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | localtime  | number  | Нет  | Отправлять по местному времени  | 
| 2 | start-datetime  | datetime  | Нет  | Дата начала отправки. Формат YYYY-MM-DD hh:mm. Если не указана, то сообщения отправляются сразу же.  | 
| 3 | end-datetime  | datetime  | Нет  | Дата завершения отправки. Формат YYYY-MM-DD hh:mm. Если не указана, то система не стремится отправиться все сообщения до определенного времени.  | 
| 4 | allowed-starttime  | datetime  | Нет  | Время, с которого разрешена отправка. Формат hh:mm  | 
| 5 | allowed-endtime  | datetime  | Нет  | Время, до которого разрешена отправка. Формат hh:mm  | 
| 6 | send-evenly  | number  | Нет  | Равномерно распределять отправку  | 
| 7 | allowed-days  | string  | Нет  | Разрешенные для отправки дни недели. Передаются как строка MON, TUE, WED, THU, FRI, SAT, SUN. Если не переданы, то отправка разрешена во все дни.  | 
2.1.2.3 Параметры объектов каналов (viber, sms, push, call, email, ussd)
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | originator  | string  | Нет  | Адрес отправителя  | 
| 2 | application  | string  | Нет  | Название приложения, куда будет отправлено уведомление Используется только для канала Push  | 
| 3 | ttl  | Number  | Нет  | Время жизни сообщения в секундах. По истечении данного времени сообщению присваивается статус expired и производится отправка сообщения по альтернативному каналу, если он задан  | 
| 4 | content  | object  | Нет  | Параметры для отправки контента  | 
2.1.2.4 Параметры объекта content для viber
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | text  | string  | Нет  | Текст сообщения, максимальная длина 1000 символов.  | 
| 2 | image-url  | string  | Нет  | Ссылка на картинку  | 
| 3 | button-name  | string  | Нет  | Название кнопки  | 
| 4 | button-url  | string  | Нет  | Ссылка для перехода по кнопке  | 
2.1.2.5 Параметры объекта content для sms
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | text  | string  | Нет  | Текст сообщения, максимальная длина 70 символов кириллицей, 160 символов латиницей. Если длина сообщения больше указанных, то сообщение разбивается (при формировании user-сообщения) на несколько частей, каждая часть тарифицируется отдельно.  | 
2.1.2.6 Параметры объекта content для push
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | title  | string  | Нет  | Заголовок сообщения.  | 
| 2 | text  | string  | Нет  | Текст сообщения, максимальная длина 1000 символов.  | 
| 3 | extra-content  | string  | Нет  | Дополнительный контент (строковый).  | 
| 4 | additional-data  | object  | Нет  | Объект для передачи пользовательских параметров в виде пар ключ:значение, разделенных запятой. Значение должно иметь строковый тип.  | 
2.1.2.7 Параметры объекта content для call
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | text  | string  | Нет  | Текст сообщения для синтеза TTS, до 2000 байт (1000 символов). Используется один из трех параметров: text, file, ivrmenu. Запрос с с более чем одним параметром считается некорректным.  | 
| 2 | file  | string  | Нет  | Название аудиофайла. Используется один из трех параметров: text, file, ivrmenu. Запрос с с более чем одним параметром считается некорректным.  | 
| 3 | menu  | string  | Нет  | Название IVR-меню. Используется один из трех параметров: text, file, ivrmenu. Запрос с с более чем одним параметром считается некорректным.  | 
| 4 | retry-attempts  | Number  | Нет  | Количество попыток повторного звонка. Допустимы только неотрицательные числа.  | 
| 5 | retry-timeout  | Number  | Нет  | Интервал, через который будет произведен повторный звонок, в миллисекундах  | 
2.1.2.8 Параметры объекта content для email
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | subject  | string  | Нет  | Тема письма.  | 
| 2 | text  | string  | Нет  | Текст письма.  | 
| 3 | attached-files  | array  | Нет  | Ассоциативный массив ссылок на прикрепленные файлы. Формат: Имя файла: файл. Файл может быть передан следующими способами:  | 
2.1.2.9 Параметры объекта content для ussd
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | text  | string  | Нет  | Текст сообщения.  | 
| 2 | menu  | string  | Нет  | Название USSD-меню  | 
2.1.2.10 Параметры элемента массива messages
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | recipient  | string  | Нет  | Адрес получателя (как правило MSISDN). Обязателен, если отправка идет по транспорту отличному Email, или по шаблону отличному от Email.  | 
| 2 | email-address  | string  | Нет  | Email-адрес получателя. Обязателен, если отправка идет по транспорту Email, или по шаблону Email.  | 
| 3 | message-id  | string  | Да  | Уникальный идентификатор сообщения для отправителя сообщения. Максимальная длина 30 символов.  | 
| 4 | template-id  | string  | Нет  | Идентификатор шаблона для отправки сообщения  | 
| 5 | priority  | string  | Нет  | Приоритет: Если не указан, то используется normal  | 
| 6 | timing  | object  | Нет  | Временные настройки  | 
| 7 | variables  | array  | Нет  | Объект параметров и их значений для подстановки в сообщение (каждый элемент представлен как запись ПАРАМЕТР:ЗНАЧЕНИЕ, например, {"PARAM1":"VALUE1","PARAM2":"VALUE2"}).  | 
| 8 | viber  | object  | Нет  | Параметры для отправки по каналу viber  | 
| 9 | sms  | object  | Нет  | Параметры для отправки по каналу sms  | 
| 10 | push  | object  | Нет  | Параметры для отправки по каналу push  | 
| 11 | call  | object  | Нет  | Параметры для отправки по каналу call  | 
| 12 | object  | Нет  | Параметры для отправки по каналу email  | |
| 13 | ussd  | object  | Нет  | Параметры для отправки по каналу ussd  | 
Параметры объектов timing и объектов каналов аналогичны параметрам для общей части запроса.
2.1.3 Параметры ответа
При успешном запросе возвращается строка "OK".
2.2 Получить статусы сообщений
URL: http://stream.ibatelecom.ru:8083/broker-api/getStatus
Запрос используется для запроса статусов отправленных сообщений. Статус сообщения доступен не сразу, а только спустя несколько минут после отправки.
На запрос возвращаются только финальные статусы (с учетом возможности переотправки сообщения по другому каналу) или все статусы в зависимости от настроек аккаунта.
2.2.1 Тело запроса
{
	"message-id": []
}
    2.2.2 Параметры запроса
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | message-id  | Array  | Да  | Массив идентификаторов сообщений  | 
2.2.3 Тело ответа
{
"messages":
[
{
	"message-id": "",
"channel": "",
	"status": "",
"status-date": "",
	"description": ""
	}
]
}
    2.2.4 Параметры ответа
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | message-id  | string  | Да  | Идентификатор сообщения  | 
| 2 | channel  | string  | Нет  | Канал, по-которому было доставлено сообщение  | 
| 3 | status  | string  | Нет  | Статус сообщения:  | 
| 4 | status-date  | datetime  | Нет  | Дата и время получения статуса  | 
| 5 | description  | string  | Нет  | Описание причины недоставки сообщения, ошибки, либо "Message not found"  | 
2.3 Автоматическое получение статусов сообщений
На указанный в настройках Системы URL автоматически отправляются статусы отправленных сообщений. Запрос выполняется Системой в сторону системы-отправителя. Выполняется буферизация статусов в 1 секунду.
Системе-отправителю передаются только финальные статусы (с учетом возможности переотправки сообщения по другому каналу) или все статусы в зависимости от настроек аккаунта.
2.3.1 Тело запроса
{
"messages":
[
{
	"message-id": "",
"channel": "",
	"status": "",
"status-date": "",
	"description": ""
	}
]
}
    2.3.2 Параметры запроса
Название  | Тип  | Обязательность  | Описание  | |
|---|---|---|---|---|
| 1 | message-id  | string  | Да  | Идентификатор сообщения  | 
| 2 | channel  | string  | Нет  | Канал, по-которому было доставлено сообщение  | 
| 3 | status  | string  | Нет  | Статус сообщения:  | 
| 4 | status-date  | datetime  | Нет  | Дата и время получения статуса  | 
| 5 | description  | string  | Нет  | Описание причины недоставки сообщения, ошибки, либо "Информация отсутствует"  |