# Работа c сообщениями

# Отправка текстового сообщения в чат

Запрос:

{
  "type": 1,
  "id": 1,
  "method": "sendMessage",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "content": {
      "text": "Hello, world!",
      "parseMode": "text"
    }
  }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда sendMessage
chatId string Да Идентификатор чата
replyMessageId string Нет В случае если мы отвечаем на сообщение, поле должно содержать идентификатор этого сообщения (см. ниже пример)
text string Да Текст сообщения
parseMode string Да Режим форматирования (см. ниже)

Ответ:

{
  "type": 2,
  "id": 1,
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
    "timestamp": 1735314170572
  }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
chatId string Да Идентификатор чата, в который отправилось сообщение
messageId string Да Идентификатор сообщения. Можно использовать данный идентификатор в дальнейшем, для изменения, пересылки или удаления сообщения
timestamp uint64 Да Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

# Форматирование сообщений

API чат-ботов поддерживает три типа оформления сообщений:

  • text – текст без форматирования. Будут сохранены и отображены все символы;
  • markdown - поддерживается базовая разметка Markdown. Специальные символы преобразуются в форматированный текст (жирный, курсив, ссылки и т.д.);
  • html- HTML-теги будут интерпретированы и отобразятся как форматированный текст.

# Markdown

Поддерживаемый синтаксис языка разметки Markdown:

Стиль Синтаксис Пример Отображаемый текст
Жирный ** или __ **жирный текст** жирный текст
Курсив * или _ _курсивный текст_ курсивный текст
Зачеркнутый ~~ ~~зачеркнутый текст~~ зачеркнутый текст
Ссылка [Текст](https://url) [Сайт](https://example.com) Сайт

# HTML

Поддерживаемый синтаксис языка разметки HTML:

Тег Пример HTML Отображаемый текст
<b> <b>жирный текст</b> жирный текст
<i> <i>курсивный текст</i> курсивный текст
<s> <s>зачеркнутый текст</s> зачеркнутый текст
<u> <u>подчеркнутый текст</u> подчеркнутый текст
<a> <a href="https://example.com">Сайт</a> Сайт

Все дополнительные атрибуты тегов будут удалены. Например, HTML-код:

<i style="position: fixed; top:0">Hacked!</i>

будет преобразован к:

<i>Hacked!</i>

# Ответ на существующее сообщение

Для ответа на существующее сообщение необходимо заполнить поле replyMessageId идентификатором сообщения, на которое мы отвечаем:

{
  "type": 1,
  "id": 1,
  "method": "sendMessage",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "replyMessageId": "3d968a21-543c-4fb2-9d8e-e31e3fbb35eb",
    "content": {
      "text": "Hello, world!",
      "parseMode": "text"
    }
  }
}

# Изменение существующего сообщения

Запрос:

{
  "type": 1,
  "id": 1,
  "method": "editMessage",
  "payload": {
    "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
    "content": {
      "text": "Hello, world (edited)!",
      "parseMode": "text"
    }
  }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда editMessage
messageId string Да Идентификатор текстового сообщения
text string Да Текст сообщения
parseMode string Да Режим форматирования (см. выше)

Ответ:

{
    "type": 2,
    "id": 1,
    "payload": {
        "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
        "timestamp": 1735314170572
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
timestamp uint64 Да Временная метка редактирования сообщения в формате UNIX timestamp с точностью до миллисекунд
messageId string Да Идентификатор отредактированного сообщения

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

# Пересылка сообщения в другой чат

Запрос:

{
    "type": 1,
    "id": 1,
    "method": "forwardMessage",
    "payload": {
        "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477",
        "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06"
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда forwardMessage
chatId string Да Идентификатор чата, в который вы будете пересылать сообщение
messageId string Да Идентификатор пересылаемого сообщения

Ответ:

{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477",
        "messageId": "3e168850-d9ea-45ec-a0f7-21c43e8ba2a8",
        "timestamp": 1735314170572
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
chatId string Да Уникальный идентификатор чата, в который мы переслали сообщение
messageId string Да Уникальный идентификатор нового сообщения, содержащего ваше пересланное сообщение
timestamp uint64 Да Временная метка пересылки сообщения в формате UNIX timestamp с точностью до миллисекунд

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

# Получение сообщения по его идентификатору

Запрос:

{
    "type": 1,
    "id": 1,
    "method": "getMessageById",
    "payload": {
        "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06"
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда getMessageById
messageId string Да Идентификатор запрашиваемого сообщения

Ответ:

{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054",
        "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
        "timestamp": 1234567890,
        "author": {
            "id": "user@video.example.com",
            "type": 1
        },
        "replyMessageId": null,
        "isEdited": true,
        "box": {
            "id": 123456,
            "position": "0"
        },
        "type": 0,
        "content": {
            "text": "Hello, chat bot!",
            "parseMode": "html"
        }
    }
}

Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
chatId string Да Уникальный идентификатор чата, в котором находится сообщение
messageId string Да Уникальный идентификатор сообщения
timestamp uint64 Да Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд
replyMessageId string Нет Если это ответ на сообщение — содержит идентификатор этого сообщения
isEdited boolean Да Было ли сообщение когда-либо отредактировано
payload.type uint32 Да Тип вложенного сообщения. Подробнее см. EnvelopeTypeEnum
author.id string Да Уникальный идентификатор автора сообщения. Это либо TrueConf ID пользователя, либо имя сервера, с которого пришло сообщение. Тип идентификатора зависит от поля type
author.type uint32 Да Тип автора сообщения. Подробнее см. EnvelopeAuthorTypeEnum
box.id number Да Порядковый номер "коробки", в которой находится сообщение. Подробнее — в соответствующем разделе
box.position string Да Порядковый номер сообщения в "коробке". Подробнее — в соответствующем разделе

В зависимости от значения payload.type, объект payload.content может содержать данные одного из следующих форматов:

# Текстовое сообщение

Используется, если сообщение содержит только текстовую информацию.

Параметр Тип Обяз. Описание
text string Да Текст сообщения
parseMode string Да Режим форматирования (см. выше)

# Вложение (файл)

Используется, если сообщение содержит файл (документ, изображение и т.д.).

Параметр Тип Обяз. Описание
name string Да Имя файла
size number Да Размер файла
mimeType string Да MIME-тип файла
fileId string Да Идентификатор файла на сервере

# Пересланное сообщение

Представляет собой вложенное сообщение, содержащее одну из описанных выше структур (text, attachment и т.д.) и дополнительные поля с метаинформацией. По структуре аналогично обычному сообщению: включает author, timestamp, content и другие поля.

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

# Получение истории чата

Запрос:

{
    "type": 1,
    "id": 1,
    "method": "getChatHistory",
    "payload": {
        "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477",
        "count": 9999,
        "fromMessageId": "e37cfc52-592f-453f-a3dd-275170b2018d"
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда getChatHistory
chatId string Да Идентификатор чата, для которого запрашивается история сообщений
count uint32 Да Количество возвращаемых в ответе сообщений
fromMessageId string Нет Идентификатор сообщения чата, с которого будет возвращена история

Ответ:

{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477",
        "count": 1,
        "messages": [
            {
                "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
                "timestamp": 1234567890,
                "author": {
                    "id": "user@video.example.com",
                    "type": 1
                },
                "replyMessageId": null,
                "isEdited": true,
                "box": {
                    "id": 123456,
                    "position": ""
                },
                "type": 0,
                "content": {
                    "text": "Hello, chat bot!",
                    "parseMode": "html"
                }
            }
        ]
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
chatId string Да Идентификатор чата, для которого запрашивалась история сообщений
count uint32 Да Количество полученных сообщений
messages Array<Envelope> Нет Массив объектов Envelope, каждый из которых представляет одно сообщение. Описание параметров смотрите выше

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

# Удаление сообщения

Запрос:

{
    "type": 1,
    "id": 1,
    "method": "removeMessage",
    "payload": {
        "messageId": "8fe61d87-6db0-4792-8f5e-e5960c7d5a06",
        "forAll": true
    }
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
id uint32 Да Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
method string Да Команда removeMessage
messageId string Да Идентификатор удаляемого сообщения
forAll boolean Да Если true — то сообщение будет удалено у всех

Ответ:

{
  "type": 2,
  "id": 1,
  "payload": {}
}
Параметр Тип Обяз. Описание
type uint32 Да Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
id uint32 Да Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа
payload object Да В случае успеха вы получите пустой объект

В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.

Обновлено: 19.07.2025