Links

Вебхуки

Вебхуки срабатывают при изменениях в диалогах и новых сообщениях — это позволит запустить процессы вне Еадеска, например, создать задачу в таск-менеджере при новом диалоге.
Для работы с вебхуками требуются навыки программирования.
Вебхуки — инструмент для оповещения об изменениях в системе, работают по протоколу HTTP. В Еадеске поддерживаются следующие события:
  • Новый диалог — срабатывает, когда в Еадеске создаётся новый входящий или исходящий диалог.
  • Обновление диалога — срабатывает при любом изменении ответственного или статуса.
  • Новое сообщение — срабатывает, когда в существующем диалоге создаётся новое входящее или исходящее сообщение клиента или пользователя.
Вебхуки POST-запросом передают данные на указанный вами сервер. В ответ необходимо ответить кодом 200, иначе хук считается не успешно отправленным и наш сервер отправляет запрос повторно. После пяти неудачных попыток, сервер перестаёт отправлять запросы.
Вебхуки отправляются в формате JSON, объекты body (тело запроса) из POST-запроса по каждому типу описаны ниже.

Управление вебхуками

Вебхуки доступны только на старших тарифах и во время тестового периода. Смените тариф перед использованием.
Чтобы получать вебхуки, необходимо из интерфейса Еадеска задать серверы, на которые будут отправляться запросы. Для этого перейдите в Настройка API и вебхуки и нажмите на «плюсик».
Заполните название, описание и выберите события, которые хотите отслеживать
Для добавления вебхука заполните поля:
  • Название — поможет быстро различать добавленные сервера.
  • URL — адрес вашего сервера, на который будут отправляться POST-запросы.
  • События — отметьте галочками события, на которые будут отправляться вебхуки.
Когда все поля будут заполнены — нажмите «Сохранить», чтобы добавить новый сервер.
Все добавленные серверы будут отображаться списком в этом же окне

1. Новый диалог

Событие «Новый диалог» срабатывает, когда в Еадеске создаётся новый входящий или исходящий диалог. Пример данных из вебхука при создании:
{
id: '5fbfa99474a5f6001dfd288f',
timestamp: 1606396308700,
type: 'dialog creation',
dialogId: '5fbfa994013de80128fcb985',
url: 'https://app.yeahdesk.ru/conversations/5fbfa994013de80128fcb985',
title: 'New dialog from mail',
contactsId: '7e7d8003c7ab78001d6c895d',
origin: 'mail',
channelId: '6ebd003bda988200311229c8',
channelName: '[email protected]',
contact: {
_id: '5e7d8902d7ab78001d6c895c',
name: 'V5',
description: 'Nothing special.',
contacts: [{
id: "7e7d8003c7ab78001d6c895d"
origin: "mail",
service: "mail",
type: "mail",
}]
}
Тело запроса содержит следующие параметры.
Параметр
Тип
Описание
id
строка
уникальный идентификатор вебхука
timestamp
число
количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Создается в момент конструирования данных перед их отправкой в очередь.
type
строка
для идентификации типа хука, в данном случае - 'dialog creation'.
dialogId
строка
идентификатор диалога в Еадеске.
url
строка
ссылка на диалог в Еадеске.
title
строка
тема диалога
contactsId
строка
id контактных данных, связанных с диалогом (автор)
origin
строка
источник диалога, типы:
  • mail для диалога из электронной очты,
  • chatra — Чатра,
  • pbx — телефония,
  • skype — Скайп,
  • fb — Фейсбук,
  • ig — Инстаграм,
  • telegram — Телеграм,
  • whatsapp — Вотсап,
  • vk — ВКонтакте,
  • custom — кастомный канал,
  • demo — служебный канал Еадеска.
channelId
строка
id канала из Еадеска, помогает определить через какой-канал был создан диалог и ведётся переписка.
channelName
строка
не уникальное название канала, помогает быстро ориентироваться между всеми каналами Еадеска.
contact
объект
объект контактных данных, состоит из _id (строка), name (строка), description (строка, необязательное поле), contacts (массив контактных данных)
contact.contacts
массив
состоит из объектов, каждый из которых содержит:
  • id — уникальный идентификатор элемента контактных данных.
  • value — например, "[email protected]".
  • type — например "mail", необходимый для интерпретации value.
  • service — например "mail", сервис для которого используется данное value.
  • origin — например "chatra", сервис, который создал данный элемент контактных данных

2. Обновление диалога

Это событие срабатывает при любом изменении статуса диалога, тегов или ответственного.

2.1 Пример вебхука при закрытии диалога — смена статуса на «Закрыто»:

{
id: '5fbfa8ed74a5f6001dfd288d',
timestamp: 1606396141142,
type: 'status closed',
responsibleId: '5e44f63b39cfc7002029e40c',
dialogId: '5efafe33b3e6f32f31e109ae',
url: 'https://app.yeahdesk.ru/conversations/5efafe33b3e6f32f31e109ae',
title: 'Important client',
contactsId: '5efafe444df0b602071f7111',
origin: 'telegram',
status: 'closed',
channelId: '5qe900fbac7e4005dfd8d655',
channelName: 'Personal Telegram Channel',
closedBy: '5e44f63b39cfc7002029e40c',
userId: '5e44f63b39cfc7002029e40c',
labels: [ '2', '3' ],
contact: {
_id: '6dfafe333de1c602071f7110',
name: 'John Smith',
description: 'My old friend.',
contacts: [{
chat_id: "000000007",
id: "5efafe444df0b602071f7111",
origin: "telegram",
service: "telegram",
telegramId: 000000700,
type: "id",
value: "JohnSmith007"
}]
}
}

2.2 При изменении статуса на «Отложено» придёт такой вебхук:

{
id: '5fbfa92974a5f6001dfd288e',
timestamp: 1606396201652,
type: 'status waiting',
responsibleId: '5e44f63b39cfc7002029e40c',
dialogId: '5efafe33b3e6f32f31e109ae',
url: 'https://app.yeahdesk.ru/conversations/5efafe33b3e6f32f31e109ae',
title: 'Important client',
contactsId: '5efafe444df0b602071f7111',
origin: 'telegram',
status: 'waiting',
channelId: '5qe900fbac7e4005dfd8d655',
channelName: 'Personal Telegram Channel',
waitingTill: '2020-11-28T13:10:00.000Z',
userId: '5e44f63b39cfc7002029e40c',
labels: [ '2', '3' ],
contact: {
_id: '6dfafe333de1c602071f7110',
name: 'John Smith',
description: 'My old friend.',
contacts: [{
chat_id: "000000007",
id: "5efafe444df0b602071f7111",
origin: "telegram",
service: "telegram",
telegramId: 000000700,
type: "id",
value: "JohnSmith007"
}]
}
}

2.3 При изменении ответственного пользователя внутри диалога:

{
id: '5fbfa9cb74a5f6001dfd2892',
timestamp: 1606396363030,
type: 'responsible assignment',
responsibleId: '5e44f63b39cfc7002029e40c',
responsibleUserName: 'Super-user',
dialogId: '5fbfa994013de80128fcb985',
url: 'https://app.yeahdesk.ru/conversations/5fbfa994013de80128fcb985',
title: 'New dialog from mail',
contactsId: '7e7d8003c7ab78001d6c895d',
origin: 'mail',
status: 'opened',
channelId: '6ebd003bda988200311229c8',
channelName: '[email protected]',
userId: '5e44f63b39cfc7002029e40c',
labels: [],
contact: {
_id: '5e7d8902d7ab78001d6c895c',
name: 'V5',
description: 'Nothing special.',
contacts: [{
id: "7e7d8003c7ab78001d6c895d"
origin: "mail",
service: "mail",
type: "mail",
}]
}
}

2.4 Добавление тега:

{
id: '5fbfa88f74a5f6001dfd288c',
timestamp: 1606396047533,
type: 'label added',
responsibleId: '5e44f63b39cfc7002029e40c',
dialogId: '5efafe33b3e6f32f31e109ae',
url: 'https://app.yeahdesk.ru/conversations/5efafe33b3e6f32f31e109ae',
title: 'Important client',
contactsId: '5efafe444df0b602071f7111',
origin: 'telegram',
status: 'opened',
channelId: '5qe900fbac7e4005dfd8d655',
channelName: 'Personal Telegram Channel',
userId: '5e44f63b39cfc7002029e40c',
labels: [ '2', '3' ],
addedLabel: '3',
contact: {
_id: '6dfafe333de1c602071f7110',
name: 'John Smith',
description: 'My old friend.',
contacts: [{
chat_id: "000000007",
id: "5efafe444df0b602071f7111",
origin: "telegram",
service: "telegram",
telegramId: 000000700,
type: "id",
value: "JohnSmith007"
}]
}
}

2.5 Удаление тега:

{
id: '5fbfa82b74a5f6001dfd288b',
timestamp: 1606395947160,
type: 'label removed',
responsibleId: '5e44f63b39cfc7002029e40c',
dialogId: '5efafe33b3e6f32f31e109ae',
url: 'https://app.yeahdesk.ru/conversations/5efafe33b3e6f32f31e109ae',
title: 'Important client',
contactsId: '5efafe444df0b602071f7111',
origin: 'telegram',
status: 'opened',
channelId: '5qe900fbac7e4005dfd8d655',
channelName: 'Personal Telegram Channel',
userId: '5e44f63b39cfc7002029e40c',
labels: [ '2' ],
removedLabel: '3',
contact: {
_id: '6dfafe333de1c602071f7110',
name: 'John Smith',
description: 'My old friend.',
contacts: [{
chat_id: "000000007",
id: "5efafe444df0b602071f7111",
origin: "telegram",
service: "telegram",
telegramId: 000000700,
type: "id",
value: "JohnSmith007"
}]
}
}
Тело запроса содержит следующие параметры.
Параметр
Тип
Описание
id
строка
уникальный идентификатор вебхука.
timestamp
число
количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Создается в момент конструирования данных перед их отправкой в очередь.
type
строка
для идентификации типа хука, в данном случае может принимать значения:
  • 'status opened': true.
  • 'status closed': true.
  • 'status waiting': true.
  • 'dialog reopening': true.
  • 'responsible assignment': 'Установлен ответственный'.
  • 'responsible reset': 'Сброшен ответственный'.
  • 'responsible change': 'Сменен ответственный'.
responsibleId
строка
id ответственного. Необязательное поле, присутствует в хуках, связанных с назначением/сменой ответственного.
responsibleUserName
строка
имя ответственного. Необязательное поле, присутствует в хуках, связанных с назначением/сменой ответственного.
dialogId
строка
идентификатор диалога в Еадеске.
url
строка
ссылка на диалог в Еадеске.
title
строка
тема диалога.
contactsId
строка
id контактных данных, связанных с диалогом (автор).
origin
строка
источник диалога, типы:
  • mail для диалога из электронной очты,
  • chatra — Чатра,
  • pbx — телефония,
  • skype — Скайп,
  • fb — Фейсбук,
  • ig — Инстаграм,
  • telegram — Телеграм,
  • whatsapp — Вотсап,
  • vk — ВКонтакте,
  • custom — кастомный канал,
  • demo — служебный канал Еадеска.
status
строка
статус диалога. Необязательное поле, присутствует в хуках, связанных со сменой статуса.
channelId
строка
id канала из Еадеска, помогает определить через какой-канал был создан диалог и ведётся переписка.
channelName
строка
не уникальное название канала, помогает быстро ориентироваться между всеми каналами Еадеска.
labels
массив
перечень всех актуальных тегов в этом диалоге.
addedLabel
строка
один добавленный тег.
removedLabel
строка
один удалённый тег.
waitingTill
строка
дата в формате ISO, при достижении которой статус диалога будет сменен на 'opened'. Необязательное поле, присутствует в хуках, связанных с переводом диалога в ожидание.
closedBy
строка
id пользователя, закрывшего диалог, в Еадеске. Необязательное поле, присутствует в хуках, связанных с закрытием диалога.
contact
объект
объект контактных данных, состоит из _id (строка), name (строка), description (строка, необязательное поле), contacts (массив контактных данных).
contact.contacts
массив
состоит из объектов, каждый из которых содержит:
  • id — уникальный идентификатор элемента контактных данных.
  • value — например, "[email protected]".
  • type — например "mail", необходимый для интерпретации value.
  • service — например "mail", сервис для которого используется данное value.
  • origin — например "chatra", сервис, который создал данный элемент контактных данных.

3. Новое сообщение

Событие «Новое сообщение» срабатывает, когда в существующем диалоге создаётся новое входящее или исходящее сообщение клиента или пользователя. Пример данных из вебхука при создании нового входящего сообщения:
{
id: '5fbfa99474a5f6001dfd2890',
timestamp: 1606396308704,
type: 'message creation',
dialogId: '5fbfa994013de80128fcb985',
url: 'https://app.yeahdesk.ru/conversations/5fbfa994013de80128fcb985',
title: 'New dialog from mail',
contactsId: '7e7d8003c7ab78001d6c895d',
origin: 'mail',
channelId: '6ebd003bda988200311229c8',
channelName: '[email protected]',
message: {
_id: '5fbfa994013de80128fcb986',
type: 'message',
text: 'Hello!\n\n',
html: '',
direction: 'in'
},
contact: {
_id: '5e7d8902d7ab78001d6c895c',
name: 'V5',
description: 'Nothing special.',
contacts: [{
id: "7e7d8003c7ab78001d6c895d"
origin: "mail",
service: "mail",
type: "mail",
}]
}
}
Пример для исходящего сообщения:
{
id: '5fbfa9ca74a5f6001dfd2891',
timestamp: 1606396362475,
type: 'message creation',
dialogId: '5fbfa994013de80128fcb985',
url: 'https://app.yeahdesk.ru/conversations/5fbfa994013de80128fcb985',
title: '',
contactsId: '7e7d8003c7ab78001d6c895d',
origin: 'mail',
channelId: '6ebd003bda988200311229c8',
channelName: '[email protected]',
message: {
_id: '5fbfa9ca013de80128fcb988',
type: 'message',
text: 'Answer \n',
html: '<p class="md-block-unstyled" style="margin: 0px !important;">Answer</p><br>'
},
messageAuthor: { id: '5e44f63b39cfc7002029e40c', type: 'user', name: 'Super-user' },
contact: {
_id: '5e7d8902d7ab78001d6c895c',
name: 'V5',
description: 'Nothing special.',
contacts: [{
id: "7e7d8003c7ab78001d6c895d"
origin: "mail",
service: "mail",
type: "mail",
}]
}
}
Тело запроса содержит следующие параметры.
Параметр
Тип
Описание
id
строка
уникальный идентификатор вебхука.
timestamp
число
количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Создается в момент конструирования данных перед их отправкой в очередь.
type
строка
для идентификации типа хука, в данном случае message creation.
dialogId
строка
идентификатор диалога в Еадеске.
url
строка
ссылка на диалог в Еадеске.
title
строка
тема диалога.
contactsId
строка
id контактных данных, связанных с диалогом (автор).
origin
строка
источник диалога, типы:
  • mail для диалога из электронной очты,
  • chatra — Чатра,
  • pbx — телефония,
  • skype — Скайп,
  • fb — Фейсбук,
  • ig — Инстаграм,
  • telegram — Телеграм,
  • whatsapp — Вотсап,
  • vk — ВКонтакте,
  • custom — кастомный канал,
  • demo — служебный канал Еадеска.
channelId
строка
id канала из Еадеска, помогает определить через какой-канал был создан диалог и ведётся переписка.
channelName
строка
не уникальное название канала, помогает быстро ориентироваться между всеми каналами Еадеска.
message
объект
объект сообщения, содержит в себе поля:
  • _id (строка) — id сообщения в Еадеске,
  • text (строка) — сообщение в текстовой форме. Необязательное поле (пример - в некоторых мессенджерах вложение передается как отдельное сообщение).
  • html (строка) — сообщение с форматированием. Необязательное поле (практически все мессенджеры не позволяют применять форматирование).
  • direction (строка) — направление сообщения (in/out). Необязательное поле, его отсутствие означает direction: 'out'.
  • attachments (число) — количество приложенных файлов.
messageAuthor
объект
объект пользователя, который инициировал создание сообщения. Состоит из:
  • id (строка) — id пользователя в системе,
    type (строка) — пока передаёт единственное значение 'user', пользователь системы. Будет расширяться по мере обновления,
    name (строка) — имя этого пользователя в Еадеске.
contact
объект
объект контактных данных, состоит из:
  • _id (строка)
  • name (строка)
  • description (строка, необязательное поле)
  • contacts (массив контактных данных)
contact.contacts
массив
состоит из объектов, каждый из которых содержит:
  • id — уникальный идентификатор элемента контактных данных.
  • value — например, "[email protected]".
  • type — например "mail", необходимый для интерпретации value.
  • service — например "mail", сервис для которого используется данное value.
  • origin — например "chatra", сервис, который создал данный элемент контактных данных.