Перейти к основному содержимому

Коммуникации с кандидатом

Получение отклика кандидата с чатами коммуникаций​

Чтобы получить отклик кандидата на вакансию с чатами коммуникаций, выполните запрос:

query ResponseWithCommunications {
response(personId: 1, vacancyId: 1) {
... on ResponseItem {
updatedAt
workflowStatus {
... on WorkflowStatusItem {
id
name
}
}
person {
id
firstName
lastName
communications {
item(type: AVITO_CHAT) {
... on AvitoChat {
count
hasUnread
pageInfo {
hasNextPage
endCursor
}
items {
__typename
id
createdAt
text
... on ThirdPartyChatMessageItem {
authorType
authorName
}
... on ManagerChatMessageItem {
manager {
id
firstName
lastName
}
}
}
}
... on PersonCommunicationError {
errorType
message
}
}
}
}
}
... on ResponseError {
errorType
message
}
}
}

Посмотреть в playground

примечание

В примере запроса получение чата осуществляется через person.communications.item(type: AVITO_CHAT), где AVITO_CHAT — канал коммуникаций. Доступные каналы перечислены в списке каналов коммуникаций.

подсказка

В запросе необходимо указать personId и vacancyId:

подсказка

Сообщения в чате возвращаются постранично. Для навигации по страницам используются параметры after и first у поля item, а в ответе — объект pageInfo с полями hasNextPage и endCursor.

Пагинация — подробное описание работы пагинации.

Результат запроса​

{
"data": {
"response": {
"updatedAt": "2026-04-18T10:12:08.000Z",
"workflowStatus": {
"id": 123,
"name": "Разбор откликов"
},
"person": {
"id": 8057081,
"firstName": "Иван",
"lastName": "Иванов",
"communications": {
"item": {
"count": 2,
"hasUnread": true,
"pageInfo": {
"hasNextPage": false,
"endCursor": "2"
},
"items": [
{
"__typename": "ThirdPartyChatMessageItem",
"id": 2,
"createdAt": "2026-04-18T10:10:00.000Z",
"text": "Здравствуйте, подскажите формат работы",
"authorType": "PERSON",
"authorName": "Иван Иванов"
},
{
"__typename": "ManagerChatMessageItem",
"id": 3,
"createdAt": "2026-04-18T10:11:05.000Z",
"text": "Добрый день! Работаем в гибридном формате",
"manager": {
"id": 42,
"firstName": "Мария",
"lastName": "Петрова"
}
}
]
}
}
}
}
}
}

Отправка сообщения кандидату в чат коммуникаций​

Отправить сообщение кандидату можно с помощью мутации sendMessageToPerson.

mutation SendMessageToPerson {
sendMessageToPerson(
personId: 8057081
channel: AVITO_CHAT
vacancyId: 12345
message: {text: "Добрый день! Уточним детали по вакансии"}
) {
__typename
... on PersonCommunicationSentSuccess {
messageId
}
... on PersonCommunicationSendError {
errorType
message
}
}
}

Посмотреть в playground

подсказка

Значения personId и vacancyId можно получить в списке кандидатов и списке вакансий. Доступные каналы перечислены в списке каналов коммуникаций.

Успешная отправка​

В случае успешной отправки сообщения запрос вернет ответ с идентификатором сообщения.

{
"data": {
"sendMessageToPerson": {
"__typename": "PersonCommunicationSentSuccess",
"messageId": 9876543210
}
}
}

Ошибка отправки​

В случае ошибки в ответе запроса вернется ответ c типом ошибки.

{
"data": {
"sendMessageToPerson": {
"__typename": "PersonCommunicationSendError",
"errorType": "VACANCY_ID_REQUIRED",
"message": null
}
}
}
примечание

Типы ошибок перечислены в PersonCommunicationSendErrorType.

Отправка письма кандидату​

Тот же метод sendMessageToPerson отправляет письмо, если в channel передать EMAIL. В message можно указать тему (subject).

mutation SendMessageToPersonEmail {
sendMessageToPerson(
personId: 8057081
channel: EMAIL
vacancyId: 12345
message: {subject: "Вакансия разработчика", text: "Добрый день! Приглашаем вас на собеседование."}
) {
__typename
... on PersonCommunicationSentSuccess {
messageId
}
... on PersonCommunicationSendError {
errorType
message
}
}
}

Посмотреть в playground

примечание

Для канала EMAIL поле vacancyId необязательно. Тема письма (subject) рекомендуется, если письмо уходит не из шаблона.

Успешная отправка письма​

{
"data": {
"sendMessageToPerson": {
"__typename": "PersonCommunicationSentSuccess",
"messageId": 18452
}
}
}

Удаление сообщения кандидата​

Удалить сообщение кандидата (архивация переписки) можно с помощью следующего запроса.

mutation DeletePersonMessage {
deletePersonMessage(personId: 2937738, messageId: "outbox_18452") {
__typename
... on PersonMessageDeletedSuccess {
message
}
... on PersonMessageDeleteError {
errorType
message
}
}
}

Посмотреть в playground

примечание

messageId — строка вида inbox_<id> или outbox_<id>. Её возвращает поле id в переписке кандидата.

При успешном выполнении запрос вернёт

{
"data": {
"deletePersonMessage": {
"__typename": "PersonMessageDeletedSuccess",
"message": null
}
}
}

В случае ошибки вернётся json с типом ошибки

{
"data": {
"deletePersonMessage": {
"__typename": "PersonMessageDeleteError",
"errorType": "MESSAGE_NOT_FOUND",
"message": null
}
}
}

Возможные типы ошибок:

  • ACCESS_DENIED — нет доступа к кандидату или к его сообщению
  • MESSAGE_NOT_FOUND — сообщение не найдено