Оглавление:
1. Описание
LiveTex Web API позволяет запросить данные вашего аккаунта LiveTex, например, для самостоятельной передачи их во внешние системы. В текущей версии доступна история обращений, а также списки точек контакта, групп операторов и самих операторов.
В этой документации описан принцип работы и составления запросов к серверу Web API, а также приведен список доступных сущностей и методов.
2. Общие принципы
2.1. Аутентификация
Все запросы к LiveTex Web API требуют передачи ключа доступа, который можно получить в процессе аутентификации.
В качестве параметров аутентификации при запросах к LiveTex Web API используются те же логин и пароль, что указываются при входе в Личный кабинет.
LiveTex Web API поддерживает только один тип аутентификации OAuth 2.0 по сценарию «Resource Owner Password Credentials Grant»: http://tools.ietf.org/html/rfc6749#section-4.3
Все сценарии аутентификации/авторизации OAuth 2.0 предполагают получение ключа доступа – access_token, который в дальнейшем передается при вызове методов API. Для получения access_token необходимо отправить HTTP-запрос методом POST по адресу https://web-api.livetex.ru/oauth2/token
Параметры
Название |
Тип |
Обязательный параметр |
Описание |
grant_type |
string |
Да |
Тип OAuth-аутентификации. В данном случае – строка «password». |
username |
string |
Да |
Email пользователя, зарегистрированного в Личном кабинете. |
password |
string |
Да |
Пароль пользователя. |
Возвращаемые данные
Название |
Тип |
Описание |
access_token |
string |
Ключ доступа. |
token_type |
string |
Тип ключа доступа. В настоящее время всегда – "bearer". |
expires_in |
numeric |
Время истечения срока жизни ключа (timestamp). По достижению этого времени следует повторить запрос ключа доступа. |
Пример oAuth 2.0 аутентификации с использованием утилиты cURL
curl https://web-api.livetex.ru/oauth2/token \
-d "grant_type=password" \
-d "username=USERNAME" \
-d "password=PASSWORD"
Пример ответа при успешной аутентификации
{
"results":{
"access_token":"dd9194521c86e7e5f77bdcb1a5c0c5d0",
"token_type":"bearer",
"expires_in":1585294037
}
}
В случае неуспеха сервер вернет ответ "Wrong user credentials" с кодом ошибки 400 Bad Request.
2.2. Вызов методов
Методы Web API вызываются путем посылки HTTP-запросов разных типов на адрес https://web-api.livetex.ru .
При авторизации в режиме OAuth 2.0 access_token может быть передан в заголовке «Authorization», например: «Authorization: Bearer ACCESS_TOKEN».
Параметры запроса необходимо указывать в URL.
LiveTex Web API существует в виде набора ресурсов, соответствующих основным сущностям системы:
- /chats
- /leads
- /sites
- /departments
- /employees и др.
Доступ к методам в стиле RESTful предоставляется по следующей схеме:
https://web-api.livetex.ru/{СУЩНОСТЬ}/{МЕТОД}
Например:
https://web-api.livetex.ru/chats/list
При этом параметры должны передаваться в строке адреса в следующем рекомендуемом порядке: offset, limit, q, fields. Например:
offset=0&limit=10&q=created_at=2020-01-01&fields=id,first_message(text)
Методы получения данных (list, show) допускается вызвать HTTP-запросами типа GET и POST.
2.3. Структура и формат результатов
Ответ сервера с результатами выполнения запроса содержит следующие ключи:
- total - количество результатов выполнения метода;
- result - результаты выполнения метода.
LiveTex Web API поддерживает один формат результатов JSON.
2.4. Выборка данных
У большинства методов, возвращающих списки (массивы) записей есть параметры, позволяющие настроить выборку:
- q - критерий выборки;
- fields - определяет возвращаемые поля;
- offset и limit - позволяют организовать постраничную выборку данных.
Обратите внимание, что данные загружаются без учёта часового пояса по UTC+0. То есть если в фильтре вы указали, что необходимо получить данные за 2020-01-01, то выгрузятся данные, за указанную дату но в UTC+0. При сравнении данных с личным кабинетом результаты могут отличаться по этой причине, т.к. личный кабинет запрашивает данные с учётом часового пояса пользователя, который зашёл в кабинет.
2.4.1. Поиск. Параметр «q».
Большинство методов list оснащены параметром q, который определяет критерий выборки данных.
Значение q - это строка, в которой можно использовать поисковые выражения, например:
q=first_name="Олег",is_blocked=true
Каждый метод list поддерживает свой собственный набор полей, которые можно использовать в таких выражениях (см. спецификацию конкретного метода «list»).
Критерий поиска в общем случае строится по маске:
{field_name}{comparison_operator}{value}
где
- {field_name} - имя поля;
- {comparison_operator} - оператор сравнения, например: =, <, > и т.д.;
- {value} - значение критерия поиска.
Если значение критерия выборки содержит пробелы, то его надо заключить в двойные кавычки.
Разделителем условий является энкод символа пробела (%20). В рамках одного условия пробелы игнорируются.
Все компоненты критерия (field_name, comparison_operator, value) обязательны. Если какого-то компонента в одном из критериев не будет, то все условие выборки будет сочтено некорректным и метод вернет сообщение об ошибке.
Все критерии поиска связаны между собой оператором "И".
Количество условий и возможные значения оператора сравнения зависят от типа поля и конкретного метода. Соответствующий перечень приведен в описании каждого метода.
2.4.2. Фильтрация. Параметр «fields».
Параметр fields присутствует во всех методах типа list и show и предоставляет возможность указать поля сущностей, которые требуется вернуть в результатах. Поля связанных сущностей перечисляются в круглых скобках после названия сущности, например:
fields=id,title,created_at,employee(id,first_name,last_name)
2.4.3. Ограничение. Параметры «limit» и «offset».
В LiveTex Web API существует ограничение на количество возвращаемых данных в одном запросе в методах list. Оно определяется значением параметра limit. Значение по умолчанию – 50. Максимальное значение – 100. Этот максимум соблюдается даже если параметр limit не указан в запросе.
Чтобы получить остальные записи, можно использовать параметр offset – количество записей, которое необходимо пропустить. Значение по умолчанию – 0. Максимальное значение не ограничивается.
В результатах вызова метода list всегда присутствует поле total - общее количество записей, удовлетворяющих критерию поиска. Если значение этого поля больше limit, то это означает, что для получения остальных записей необходимо воспользоваться параметром offset.
3. Сущности и методы
3.1. Сущности
В данном разделе описаны сущности системы LiveTex, данные о которых можно получить с помощью API.
Выделенные синим цветом поля по умолчанию не возвращаются в ответе. Чтобы получить эти данные, укажите их в параметре fields.
3.1.1. Chat
Диалог из канала мгновенной коммуникации: чат на сайте, в мобильном приложении и Messaging API, а также в социальных сетях и мессенджерах.
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор диалога. Состоит из идентификатора обращения и порядкового номера диалога в обращении. Нумерация диалогов начинается с ноля. |
created_at |
string ($date-time) |
Дата и время создания диалога |
is_closed |
boolean |
Признак закрытия всего обращения |
closed_at |
string |
Дата и время закрытия диалога |
result |
string |
Статус диалога. Возможные значения:
|
visitor |
[Visitor{...}] |
Информация о посетителе. Подробнее в описании сущности [Visitor{...}]. |
employee |
[Employee{...}] |
Информация об операторе, который обработал диалог. Подробнее в описании сущности [Employee{...}]. |
first_message |
[Message{...}] |
Первое сообщение в диалоге. Подробнее в описании сущности [Message{...}]. |
messages |
[Message{...}] |
Список сообщений в диалоге. Подробнее в описании сущности [Message{...}]. |
site |
[Site{...}] |
Информация о точке контакта, для которой было создано обращение. Подробнее в описании сущности [Site{...}]. |
employee_remark |
[EmployeeRemark{...}] |
Последняя категория закрытия обращения. Подробнее в описании сущности [EmployeeRemark{...}]. |
message_count |
integer ($int32) |
Количество сообщений в диалоге. |
duration |
integer ($int32) |
Длительность диалога в секундах. Если метрика не посчитана, то приходит null |
answer_time_avg |
integer ($int32) |
Среднее время ответа оператора на вопросы посетителя (в секундах). Если метрика не посчитана, то приходит null |
first_answer_time |
integer ($int32) |
Время ответа оператора на первое сообщение посетителя (в секундах). Если метрика не посчитана, то приходит null |
prechats_chat |
[Prechat{...}] |
Список пречат полей обращения. Подробнее в описании сущности [Prechat{...}]. |
prechats_hidden |
[Prechat{...}] |
Список скрытых пречат полей обращения. Подробнее в описании сущности [Prechat{...}]. |
conversation |
[Conversation{...}] |
Информация об обращении. Подробнее в описании сущности [Conversation{...}]. |
rating_type |
string |
Тип оценки, оставленной посетителем в обращении. |
rating_value |
string |
Значение оценки. Если тип оценки "DoublePoint", то значение может быть: "1" - положительная |
communication_type |
string |
Канал общения. Возможные значения:
|
3.1.2. Conversation
Обращение – сессия общения с посетителем, включающая диалоги chats. Например, если оператор передал обращение коллеге, в обращении будет два диалога, с первым и вторым оператором. Каждый диалог в обращении имеет порядковый номер, начиная с 0.
Пример идентификатора обращения conversation:
3a7b9d22-ab58-4fa3-832e-8e944107dce4
Идентификатор диалога chat отличается добавлением порядкового номера:
3a7b9d22-ab58-4fa3-832e-8e944107dce4:0
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор обращения. |
visitor_id |
string |
Идентификатор посетителя. |
result |
string |
Результат обращения. Возможные значения:
|
created_at |
string |
Дата создания. |
int_referer |
string |
Адрес страницы, на которой начался первый диалог обращения. |
3.1.3. Prechat
Пречат-поля с дополнительной информацией о посетителе, которые передаются различными способами в каналах «чат на сайте», «чат в мобильном приложении» (Mobile SDK) и «Messaging API».
В канале «чат на сайте» такие поля можно добавить в виджет чата, чтобы посетитель заполнил их самостоятельно. Также имеется возможность передать эти поля незаметно для посетителя с помощью API виджета.
В каналах «чат в мобильном приложении» и «Messaging API» такие поля можно передать при начале обращения.
Оба API и SDK передают два типа полей – обычные и скрытые. Обычные пречат-поля отображаются и оператору в приложении LiveTex, и в истории обращений в личном кабинете. Скрытые пречат-поля отображаются только в личном кабинете.
Название поля |
Тип поля |
Описание |
name |
string |
Название поля. |
value |
string |
Значение поля. |
3.1.4. EmployeeRemark
Категория обращения, которую оператор указывает при завершении обращения. Список доступных категорий настраивается в личном кабинете в разделе Настройки.
Название поля |
Тип поля |
Описание |
id |
integer ($int32) |
Идентификатор категории. |
text |
string |
Название категории. |
3.1.5. Site
Точка контакта с посетителем. В текущей версии список точек контакта расширен: это не только сайты, но и мобильные приложения, чат-боты, социальные сети, мессенджеры, email.
Название поля |
Тип поля |
Описание |
id |
integer ($int32) |
Идентификатор точки контакта. |
url |
string |
Название точки контакта, |
3.1.6. Department
Группа операторов, которая добавляется к точкам контакта Site. Одну и ту же группу можно добавлять к разным точкам контакта.
Название поля |
Тип поля |
Описание |
id |
integer ($int32) |
Идентификатор группы. |
title |
string |
Название группы. |
employees |
[Employee{...}] |
Список операторов, добавленных в группу. Подробнее в описании сущности [Employee{...}]. |
site |
[Site{...}] |
Список точек контакта, к которым добавлена группа. Подробнее в описании сущности [Site{...}]. |
created_at |
string |
Дата создания группы |
updated_at |
string |
Дата последнего обновления группы |
3.1.7. Employee
Операторы – сотрудники компании, которые добавляются к группам department. Одного и того же оператора можно добавлять к разным группам.
Название поля |
Тип поля |
Описание |
id |
integer ($int32) |
Идентификатор оператора. |
first_name |
string |
Имя. |
last_name |
string |
Фамилия. |
|
string |
Email оператора, который также используется как логин учетной записи. |
phone |
string |
Телефон. |
is_blocked |
boolean |
Признак заблокированного аккаунта. |
departments |
[Department{...}] |
Список групп, к которым добавлен оператор. Подробнее в описании сущности [Department{...}]. |
role |
[Role{...}] |
Роль оператора в системе. Подробнее в описании сущности [Role{...}]. |
created_at |
string |
Дата создания учетной записи. |
updated_at |
string |
Дата последнего обновления учетной записи. |
is_deleted |
boolean |
Признак удаленного аккаунта. |
chat_limit |
integer ($int32) |
Максимальное число активных чатов на сайте, которое может быть назначено на оператора. Если значение не задано, то устанавливается максимальное значение 99 обращений. |
other_channel_limit |
integer ($int32) |
Максимальное число активных обращений в других каналах (не чат на сайте), которое может быть назначено на оператора. Если значение не задано, то устанавливается максимальное значение 99 обращений. |
3.1.8. Role
Роль сотрудника employee, определяющая права доступа к функциям личного кабинета.
В системе предусмотрен следующий набор ролей:
- Администратор — роль с максимальным набором прав доступа. Администратор может быть только один, его учетная запись не может быть заблокирована или удалена.
- Управляющий — роль с ограниченными правами, которая дублирует роль Администратора. В отличие от роли Администратор, сотрудников с ролью Управляющий может быть несколько, их учетные записи можно блокировать или удалять. Управляющий может выполнять любые операции с учетными записями пользователей ниже ролью.
- Руководитель операторов — роль с ограниченными правами по управлению, без доступа к управлению финансами, но с доступом к настройкам системы и статистике. Руководитель операторов может выполнять любые операции с учетными записями пользователей ниже ролью, кроме удаления.
- Старший оператор — роль с ограниченными правами по управлению системы, без доступа к управлению финансами и настройкам системы, но с доступом к статистике.
- Оператор — роль с минимально возможными правами доступа к системе. Оператор может редактировать свою учетную запись, писать обращения в техническую поддержку и имеют доступ только к личной статистике.
Название поля |
Тип поля |
Описание |
code |
integer ($int32) |
Код роли. Возможные значения:
|
title |
string |
Название роли. |
3.1.9. Visitor
Посетитель, который начал диалог chat.
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор посетителя. |
name |
string |
Имя посетителя. |
last_ip |
string |
IP-адрес постетителя при последнем обращении. Определяется только для чата на сайте. |
last_country |
string |
Страна, из которой посетитель последний раз посещал сайт. Определяется только для чата на сайте. |
last_city |
string |
Город, из которого посетитель последний раз посещал сайт. Определяется только для чата на сайте. |
3.1.10. Message
Сообщение, отправленное в рамках диалога chat.
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор сообщения. |
text |
string |
Текст сообщения. |
created_at |
string |
Дата и время создания обращения. |
creator |
[Creator{...}] |
Создатель сообщения. Подробнее в описании сущности [Creator{...}]. |
3.1.11. Creator
Создатель сообщения, отправленного в рамках диалога chat.
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор создателя сообщения. Для системных сообщений задается значение 0. |
type |
string |
Тип создателя. Возможные значения:
|
3.1.12. Lead
Обращение из каналов отложенной коммуникации: офлайн-обращение или заказ звонка на сайте, а также email.
Название поля |
Тип поля |
Описание |
id |
string |
Идентификатор обращения. |
name |
string |
Имя посетителя. |
|
string |
Адрес электронной почты. |
phone |
string |
Номер телефона. |
type |
string |
Тип лида. Возможные значения:
X-widget. |
text |
string |
Текст сообщения. Максимум - 2000 символов. |
result |
string |
Время, прошедшее с момента отправки сообщения посетителем и пометкой обработано (result = completed). |
created_at |
string |
Дата создания. |
closed_at |
string |
Дата и время закрытия диалога (если есть) |
employee_remark |
[EmployeeRemark{...}] |
Последняя категория закрытия обращения. Подробнее в описании сущности [EmployeeRemark{...}]. |
is_managed |
boolean |
Признак вхождения обращения в число своих для оператора, вызывающего метод. |
site |
[Site{...}] |
Информация о точке контакта, для которой было создано обращение. Подробнее в описании сущности [Site{...}]. |
assigned_to |
string |
Идентификатор оператора, на которого назначено обращение. |
completed_by |
string |
Идентификатор оператора, который обработал обращение. |
3.2. Методы
В данном разделе будут описаны методы системы LiveTex, с помощью которых можно получить данные о сущностях, описанных выше. К каждому методу прилагается таблица со списком допустимых критериев поиска q, а также пример запроса и ответа.
3.2.1. /chats/list
Возвращает список обращений сhat.
Для вложенной структуры employee отдаются только поля id, first_name, last_name, email.
Критерии поиска q.
Название поля |
Описание |
created_at |
Дата в формате YYYY-MM-DD. Допустимые операторы: =, <, >, <=, >= Допускается дважды указывать критерий для указания диапазона. |
site_ids |
Идентификаторы точек контакта. Допустимый оператор: = Значения перечисляются через запятую. |
communication_types |
Канал, в котором велось общение. Допустимый оператор: = Значения перечисляются через запятую. Допустимые значения:
|
Пример запроса.
curl
curl -X GET "https://web-api.livetex.ru/chats/list?offset=200&limit=100&q=created_at=2020-03-05%20site_ids=139347&fields=created_at,id,visitor(name),employee(email),result,site(url),first_answer_time,duration,employee_remark(text)" -H "Authorization: Bearer TOKEN"
В данном запросе мы запрашиваем диалоги, начатые 5 марта 2020 года, в рамках точки контакта 139347.
Необходимо выгрузить только поля created_at, id, visitor(name), employee(email), result, site(url), first_answer_time, duration, employee_remark(text).
Максимальный число диалогов в ответе (limit) – 100.
Запрашиваем диалоги со смещением (offset) 200, то есть в ответе будут только диалоги с 201-го по 300-й, в порядке времени их создания.
Пример ответа.
{
"total": 201,
"results": [
{
"duration": 88,
"rating_value":"5",
"rating_type":"FivePoint",
"employee": [
{
"email": "test@company.ru"
}
],
"result": "completed",
"site": [
{
"url": "Мобильное приложение."
}
],
"visitor": [
{
"name": "Гость"
}
],
"id": "5818161f-3e11-4c11-af32-014696ed70ac:0",
"employee_remark": [
{
"text": "Общая консультация"
}
],
"created_at": "2020-03-01 10:39:26.801 +0000",
"first_answer_time": 6
}
]
}
3.2.2. /chats/show
Возвращает конкретный диалог сhat.
Структура employee в результате этого метода не содержит поля departments и role.
В методе отсутствую критерии поиска q. Вместо них при выполнении запроса указывается единственный параметр id – идентификатор диалога сhat вида:
3a7b9d22-ab58-4fa3-832e-8e944107dce4:0
Так как мы можем задать только один идентификатор диалога, значения limit и offset не задаются.
Пример запроса.
curl
curl -X GET "https://web-api.livetex.ru/chats/show?id=3a7b9d22-ab58-4fa3-832e-8e944107dce4:0&fields=id,conversation(id,int_referer),created_at,duration" -H "Authorization: Bearer TOKEN"
В данном запросе мы запрашиваем данные по конкретному диалогу сhat с идентификатором 3a7b9d22-ab58-4fa3-832e-8e944107dce4:0. Идентификатор диалога сhat отличается от идентификатора обращения сonversation наличием индекса :0.
Необходимо выгрузить только поля id, conversation(id,int_referer), created_at, duration.
Пример ответа.
{
"id": "3a7b9d22-ab58-4fa3-832e-8e944107dce4:0",
"conversation": [
{
"id":"3a7b9d22-ab58-4fa3-832e-8e944107dce4",
"int_referer": "https://company.ru/feedback"
}
],
"created_at": "2020-03-01 15:47:08.920 +0000",
"duration": 88
}
3.2.3. /leads/list
Возвращает список обращений из каналов отложенной коммуникации lead. Список отсортирован по убыванию даты создания (сначала идут последние поступившие обращения).
Критерии поиска q.
Название поля |
Описание |
created_at |
Дата в формате YYYY-MM-DD. Допустимые операторы: =, <, >, <=, >= Допускается дважды указывать критерий для указания диапазона. |
site_ids |
Идентификаторы точек контакта. Допустимый оператор: = Значения перечисляются через запятую. |
Пример запроса.
https://web-api.livetex.ru/leads/list?offset=0&limit=100&q=created_at=2020-03-25%20site_ids=139347
curl
curl -X GET "https://web-api.livetex.ru/leads/list?offset=0&limit=100&q=created_at=2020-03-25%20site_ids=139347" -H "Authorization: Bearer TOKEN"
Пример ответа.
{
"total": 1,
"results": [
{
"name": "Гость",
"email": "visitor_n@gmail.com",
"result": "completed",
"is_managed": true,
"text": "Здравствуйте!",
"id": "0b52d175-8f7f-4a3e-89ab-ee269e1a168f",
"created_at": "2020-03-25 14:10:46.263 +0300",
"type": "form",
"phone": ""
}
]
}
3.2.4. /sites/list
Возвращает список точек контакта sites.
Критерии поиска q.
Название поля |
Описание |
created_at |
Дата в формате YYYY-MM-DD. Допустимые операторы: =, <, >, <=, >= Допускается дважды указывать критерий для указания диапазона. |
site_ids |
Идентификаторы точек контакта. Допустимый оператор: = Значения перечисляются через запятую. |
Пример запроса.
https://web-api.livetex.ru/sites/list
curl
curl -X GET "https://web-api.livetex.ru/sites/list" -H "Authorization: Bearer TOKEN"
Пример ответа.
{
"total": 1,
"results": [
{
"id": 123456,
"url": "site.com"
}
]
}
3.2.5. /departments/list
Возвращает список групп операторов department.
Для вложенной структуры employees отдаются только поля id, first_name, last_name, email.
Критерии поиска q.
Название поля |
Описание |
ids |
Идентификаторы групп операторов. Допустимый оператор: = Значения перечисляются через запятую. |
employee_ids |
Идентификаторы операторов. Допустимый оператор: = Значения перечисляются через запятую. |
site_ids |
Идентификаторы точек контакта. Допустимый оператор: = Значения перечисляются через запятую. |
title |
Название группы операторов. Допустимый оператор: = |
Пример запроса.
https://web-api.livetex.ru/departments/list?q=site_ids=139347
curl
curl -X GET "https://web-api.livetex.ru/departments/list?q=site_ids=139347" -H "Authorization: Bearer TOKEN"
Пример ответа.
{
"total": 1,
"results": [
{
"employees": [
{
"id": 234561,
"first_name": "Иван",
"last_name": "Петров",
"email": "i.petrov@@site.com"
},
{
"id": 234562,
"first_name": "Александра",
"last_name": "Гладкова",
"email": "a.gladkova@site.com"
}
],
"id": 154321,
"created_at": "2020-02-20T19:00:13",
"sites": [
{
"id": 123456,
"url": "site.com"
}
],
"title": "Отдел продаж",
"updated_at": "2020-03-13T11:32:43"
}
]
}
3.2.6. /employees/list
Возвращает список сотрудников аккаунта employee.
Критерии поиска q.
Название поля |
Описание |
ids |
Идентификаторы операторов. Допустимый оператор: = Значения перечисляются через запятую. |
department_ids |
Идентификаторы групп операторов. Допустимый оператор: = Значения перечисляются через запятую. |
first_name |
Имя оператора. Допустимый оператор: = |
last_name |
Фамилия оператора. Допустимый оператор: = |
|
Email оператора, также используется как логин учетной записи. Допустимый оператор: = |
is_blocked |
Признак заблокированного оператора. Допустимый оператор: = Допустимые значения: true, false. |
role |
Код роли. Допустимый оператор: = Допустимые значения:
|
Пример запроса.
https://web-api.livetex.ru/employees/list
curl
curl -X GET "https://web-api.livetex.ru/employees/list" -H "Authorization: Bearer TOKEN"
Пример ответа.
{
"total": 2,
"results": [
{
"id": 23928,
"first_name": "Иван",
"last_name": "Петров"
},
{
"id": 19218,
"first_name": "Александра",
"last_name": "Гладкова"
}
]
}
Комментарии