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

Труконф02.10.2026Около 14 мин

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

На каждый уведомление (запрос) сервера клиент должен ответить так:

{
    "type": 2,
    "id": 123456
}

После отправки ответа сообщение от пользователя будет считаться прочитанным ботом и будет отмечено соответствующей галочкой в клиентском приложении TrueConf.

Запросы клиента

Отправить сообщение

Запрос:

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

Ответ:

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

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

Ответить на сообщение

Для ответа на существующее сообщение необходимо заполнить поле 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"
    }
  }
}
ПараметрТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
iduint32ДаУникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
methodstringДаКоманда editMessage
messageIdstringДаИдентификатор текстового сообщения
textstringДаТекст сообщения
parseModestringДаРежим форматирования (подробнее)

Ответ:

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

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

Переслать сообщение

Запрос:

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

Ответ:

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

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

Удалить сообщение

Запрос:

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

Ответ:

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

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

Получить сообщение по ID

Запрос:

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

Ответ:

Ответ содержит объект Envelope в поле payload. Описание полей и примеры для различных типов сообщений вы найдёте в разделе «Справочник API».

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

Уведомления сервера

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

Сообщение с типом 200 является текстовым. Поле content содержит текст сообщения, а параметр parseMode определяет способ его интерпретации – HTML.

Сообщение от сервера:

Уведомление о новом сообщении содержит поля объекта Envelope. Описание полей и примеры для различных типов сообщений вы найдёте в разделе «Справочник API».

Ответ от клиента:

{
    "type": 2,
    "id": 123456
}
ПолеТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
iduint32ДаИдентификатор сообщения, на которое дается ответ (см. подробнее)

Ответ на сообщение

При ответе (reply) на сообщение вы получите payload c объектом replyMessage (начиная с 5.5.6+) и параметром replyMessageId.

Сообщение от сервера:

Уведомление о новом сообщении содержит поля объекта Envelope. Описание полей и примеры для различных типов сообщений вы найдёте в разделе «Справочник API».

Ответ от клиента:

{
    "type": 2,
    "id": 123456
}
ПолеТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
iduint32ДаИдентификатор сообщения, на которое дается ответ (см. подробнее)

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

Сообщение c типом 201 идентифицируется как пересланное. Особенностью контента пересылаемого сообщения является то, что он в качестве контента содержит объект пересылаемого сообщения (Envelope), за исключением данных в поле "box".

Теоретически, цепочка вложенности пересылаемых сообщений может быть бесконечной, но на текущий момент вложенность составляет одно сообщение (Envelope).

В поле content передается объект исходного сообщения.

Сообщение от сервера:

Уведомление о новом сообщении содержит поля объекта Envelope. Описание полей и примеры для различных типов сообщений вы найдёте в разделе «Справочник API».

Ответ от клиента:

{
    "type": 2,
    "id": 123456
}
ПолеТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
iduint32ДаИдентификатор сообщения, на которое дается ответ (см. подробнее)

Сообщение было изменено

Сообщение от сервера:

{
    "method": "editMessage",
    "type": 1,
    "id": 12,
    "payload": {
        "chatId": "d0b99ed24d6fb440a99fb12c4face5e5b28c3863",
        "messageId": "d4d20b4f-e4a4-4abc-8e66-ff2e17f483b7",
        "timestamp": 1746029430000,
        "content": {
            "text": "🤝",
            "parseMode": "html"
        }
    }
}
ПараметрТипОбяз.Описание
methodstringДаКоманда editMessage
typeuint32ДаТип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
iduint32ДаУникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
chatIdstringДаУникальный идентификатор чата, в котором находится сообщение
messageIdstringДаИдентификатор измененного сообщения. Можно использовать данный идентификатор в дальнейшем для копирования, пересылки или удаления сообщения
timestampuint64ДаВременная метка изменения сообщения в формате UNIX timestamp с точностью до миллисекунд
textstringДаТекст измененного сообщения
parseModestringДаРежим форматирования (подробнее)

Ответ от клиента:

{
    "type": 2,
    "id": 123456
}
ПолеТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
iduint32ДаИдентификатор сообщения, на которое дается ответ (см. подробнее)

Сообщение было удалено

Сообщение от сервера:

{
    "method": "removeMessage",
    "type": 1,
    "id": 12,
    "payload": {
        "chatId": "bd05af54347e04a1c44e70033d35834d4428bb5d",
        "messageId": "d4d20b4f-e4a4-4abc-8e66-ff2e17f483b7",
        "removedBy": {
            "id": "brown@video.example.com",
            "type": 1
        }
    }
}
ПараметрТипОбяз.Описание
methodstringДаКоманда removeMessage
typeuint32ДаТип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST
iduint32ДаУникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут
chatIdstringДаИдентификатор чата, где было удалено сообщение
messageIdstringДаИдентификатор удаленного сообщения. Можно использовать данный идентификатор в дальнейшем для копирования, пересылки или удаления сообщения
removedBy.idstringДаУникальный идентификатор пользователя, удалившего сообщение. Это либо TrueConf ID, либо имя сервера, с которого пришло сообщение. Тип идентификатора зависит от поля removedBy.type
removedBy.typeuint32ДаТип пользователя, который удалил сообщение. Подробнее см. EnvelopeAuthorTypeEnum

Ответ от клиента:

{
    "type": 2,
    "id": 123456
}
ПолеТипОбяз.Описание
typeuint32ДаТип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE
iduint32ДаИдентификатор сообщения, на которое дается ответ (см. подробнее)
Последнее обновление: