# Работа 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
. Список возможных значений доступен в соответствующем разделе документации.