# Работа с чатами
# Запросы клиента
# Создать личный чат
Создание личного чата (peer-to-peer) с пользователем сервера. Если бот никогда не писал данному пользователю - будет создан новый чат. Если бот отправлял данному пользователю сообщения - будет возвращен уже существующий чат.
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "createP2PChat",
    "payload": {
        "userId": "user@video.example.com"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда createP2PChat | 
| userId | string | Да | TrueConf ID пользователя, с которым мы хотим создать чат | 
Ответ:
{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| chatId | string | Да | Идентификатор созданного чата | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Создать групповой чат
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "createGroupChat",
    "payload": {
        "title": "TrueConf Server Administrators’ Chat",
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда createGroupChat | 
| title | string | Да | Название группового чата | 
Ответ:
{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| chatId | string | Да | Идентификатор созданного группового чата | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Создать канал
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "createChannel",
    "payload": {
        "title": "Company news"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда createChannel | 
| title | string | Да | Название канала | 
Ответ:
{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| chatId | string | Да | Идентификатор созданного канала | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Удалить чат
Удаляет указанный чат (личный, групповой или канал). После удаления чат будет недоступен для всех участников.
Запрос:
{
  "type": 1,
  "id": 1,
  "method": "removeChat",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256"
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда removeChat | 
| chatId | string | Да | Идентификатор удаляемого чата | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256"
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| chatId | string | Да | Идентификатор удалённого чата | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Добавить участника в чат
Добавляет пользователя в групповой чат или канал. Для выполнения операции требуются соответствующие права.
Запрос:
{
  "type": 1,
  "id": 1,
  "method": "addChatParticipant",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "userId": "user@video.example.com",
    "displayHistory": false
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда addChatParticipant | 
| chatId | string | Да | Идентификатор чата, в который добавляется пользователь | 
| userId | string | Да | TrueConf ID пользователя, добавляемого в чат | 
| displayHistory | bool | Нет | Версия: 5.5.2+ Флаг отображения истории чата. Если true, то пользователь увидит старые сообщения | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {}
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| payload | object | Да | В случае успеха вы получите пустой объект | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Удалить участника чата
Удаляет указанного участника из чата. Может использоваться только в групповых чатах и каналах. Для выполнения операции требуются соответствующие права.
Запрос:
{
  "type": 1,
  "id": 1,
  "method": "removeChatParticipant",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "userId": "user@video.example.com"
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда removeChatParticipant | 
| chatId | string | Да | Идентификатор чата, из которого удаляют пользователя | 
| userId | string | Да | TrueConf ID удаляемого пользователя | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {}
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| payload | object | Да | В случае успеха вы получите пустой объект | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Изменить роль участника
Версия: 5.5.2+
Позволяет изменить роль участника чата. Для изменения роли у вас должно быть соответствующее право. Также вы получите нотификацию при изменении роли любого участника чата.
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "changeParticipantRole",
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054",
        "userId": "user@video.example.com",
        "role": "admin"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда changeParticipantRole | 
| chatId | string | Да | Идентификатор чата | 
| userId | string | Да | TrueConf ID пользователя, для которого меняется роль | 
| role | string | Да | Новая роль пользователя | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {}
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| payload | object | Да | В случае успеха вы получите пустой объект | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Получить список чатов
Возвращает список всех чатов, в которых состоит текущий пользователь.
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "getChats",
    "payload": {
        "count": 10,
        "page": 1
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда getChats | 
| count | uint32 | Да | Максимальное количество объектов чатов в ответе | 
| page | uint32 | Да | Номер страницы запроса (пейджинг). Начинается с 1 | 
Ответ:
{
    "type": 2,
    "id": 1,
    "payload": [
        {
            "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054",
            "title": "TrueConf Server Administrators’ Chat",
            "chatType": 2,
            "unreadMessages": 0,
            "lastMessage": {
                "messageId": "267d61f2-2ba1-4e88-83ab-bb84415f31b6",
                "timestamp": 1746028006345,
                "author": {
                    "id": "brown@video.example.com",
                    "type": 1
                },
                "type": 200,
                "content": {
                    "text": "What's up?",
                    "parseMode": "html"
                }
            }
        },
        {
            "chatId": "4a1f88f1070d2f43d385cde9ff61964bc6b74477",
            "title": "chester@video.example.com",
            "chatType": 1,
            "unreadMessages": 1,
            "lastMessage": {
                "messageId": "d4f756a2-8dd1-4cce-af7c-5a4311af0c79",
                "timestamp": 1746028006690,
                "author": {
                    "id": "chester@video.example.com",
                    "type": 1
                },
                "type": 200,
                "content": {
                    "text": "Hello!",
                    "parseMode": "html"
                }
            }
        },
        {
            "chatId": "5abba630dd1089090ba41c69c7aa34e4ba277a43",
            "title": "Project Announcements",
            "chatType": 6,
            "unreadMessages": 1,
            "lastMessage": {
                "messageId": "267d61f2-2ba1-4e88-83ab-bb84415f31b6",
                "timestamp": 1746028006345,
                "author": {
                    "id": "brown@video.example.com",
                    "type": 1
                },
                "type": 200,
                "content": {
                    "text": "Hello everyone!",
                    "parseMode": "html"
                }
            }
        }
    ]
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| payload | Array<Chat> | Да | Массив чатов пользователя | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Получить информацию о чате
Возвращает подробные данные о чате по его идентификатору.
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "getChatByID",
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда getChatByID | 
| chatId | string | Да | Идентификатор чата | 
Ответ:
{
    "type": 2,
    "id": 1,
    "payload": {
        "chatId": "2b896a6ef210d6b2dcaebc2186c9a7974d616054",
        "title": "TrueConf Server Administrators’ Chat",
        "chatType": 2,
        "unreadMessages": 0,
        "lastMessage": {
            "messageId": "267d61f2-2ba1-4e88-83ab-bb84415f31b6",
            "timestamp": 1746028006345,
            "author": {
                "id": "brown@video.example.com",
                "type": 1
            },
            "type": 200,
            "content": {
                "text": "What's up?",
                "parseMode": "html"
            }
        }
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| chatId | string | Да | Идентификатор чата | 
| title | string | Да | Название чата | 
| chatType | ChatTypeEnum | Да | Тип чата | 
| unreadMessages | uint32 | Да | Кол-во непрочитанных сообщений в чате | 
| lastMessage | Envelope | Да | Последнее сообщение в чате | 
Поле lastMessage соответствует формату Envelope, за исключением того, что в нём отсутствуют поля chatId, isEdited и box.
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Получить участников чата
Возвращает список всех участников указанного чата, включая их роли.
Запрос:
{
  "type": 1,
  "id": 1,
  "method": "getChatParticipants",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "pageSize": 100,
    "pageNumber": 1
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда getChatParticipants | 
| chatId | string | Да | Идентификатор чата | 
| pageSize | uint32 | Да | Количество записей с информацией об участниках чата в ответе на запрос | 
| pageNumber | uint32 | Да | Смещение, с которым будет возвращён список участников. Расчитывается по формуле startOffset = pageSize * pageNumber | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {
    "participants": [
      {
        "userId": "user@video.example.com",
        "role": "user"
      },
      {
        "userId": "admin@video.example.com",
        "role": "admin"
      }
    ]
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| participants | Array<ChatParticipant> | Да | Список участников чата, представленный в виде объектов ChatParticipant | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Проверить участника в чате
Позволяет определить, состоит ли указанный пользователь в выбранном чате.
Запрос:
{
  "type": 1,
  "id": 1,
  "method": "hasChatParticipant",
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "userId": "user@video.example.com"
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда hasChatParticipant | 
| chatId | string | Да | Идентификатор чата, в котором проверяется наличие пользователя | 
| userId | string | Да | TrueConf ID проверяемого пользователя | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {
    "result": true
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| result | boolean | Да | Флаг наличия участника в чате. Если true — участник присутствует в чате | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.
# Уведомления сервера
На каждый уведомление (запрос) сервера клиент должен ответить так:
{
    "type": 2,
    "id": 123456
}
После отправки ответа сообщение от пользователя будет считаться прочитанным ботом и будет отмечено соответствующей галочкой в клиентском приложении TrueConf.
# Создан личный чат
Сервер уведомляет о создании личного (peer-to-peer) чата, в котором участвуют только два пользователя. Уведомление отправляется, когда другой пользователь инициирует создание такого чата с текущим.
Уведомление от сервера:
{
    "method": "createP2PChat",
    "type": 1,
    "id": 2,
    "payload": {
        "chatId": "bd05af54347e04a1c44e70033d35834d4428bb5d",
        "title": "brown@video.example.com",
        "chatType": 1,
        "lastMessage": {
            "chatId": "bd05af54347e04a1c44e70033d35834d4428bb5d",
            "messageId": "d8bdd362-2656-46ff-a1db-8dadd2b76250",
            "timestamp": 1746028006345,
            "author": {
                "id": "brown@video.example.com",
                "type": 1
            },
            "type": 200,
            "content": {
                "text": "What's up?",
                "parseMode": "text"
            }
        },
        "unreadMessages": 1
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда createP2PChat | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной. Подробнее читайте тут. | 
| chatId | string | Да | Идентификатор созданного чата | 
| title | string | Да | TrueConf ID пользователя, который создал чат | 
| chatType | uint32 | Да | Тип созданного чата. Соответствует ChatTypeEnum | 
| lastMessage.chatId | string | Да | Идентификатор чата, где находится сообщение | 
| messageId | string | Да | Идентификатор сообщения. Можно использовать в дальнейшем для изменения, пересылки или удаления сообщения | 
| timestamp | uint64 | Да | Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд | 
| author.id | string | Да | Уникальный идентификатор автора сообщения (TrueConf ID или имя сервера) | 
| author.type | uint32 | Да | Тип автора сообщения. См. EnvelopeAuthorTypeEnum | 
| lastMessage.type | uint32 | Да | Тип сообщения, соответствует EnvelopeTypeEnum | 
| text | string | Нет | Текст сообщения | 
| parseMode | string | Нет | Режим форматирования (подробнее) | 
| unreadMessages | uint32 | Да | Количество непрочитанных сообщений в личном чате | 
Поле payload.lastMessage.content имеет разное содержание в зависимости от типа сообщения payload.lastMessage.type.
Ответ для сервера:
{
    "type": 2,
    "id": 123456
}
| Поле | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор сообщения, на которое дается ответ (см. подробнее) | 
# Создан групповой чат
Сервер уведомляет о создании группового чата, в который был добавлен текущий пользователь. Описание прав участников группового чата вы можете найти здесь.
Сообщение от сервера:
{
    "method": "createGroupChat",
    "type": 1,
    "id": 14,
    "payload": {
        "chatId": "08d5dbda94a9de4b7554e3b4355307f9e97ffdb7",
        "title": "Marketing",
        "chatType": 2,
        "lastMessage": {
            "chatId": "08d5dbda94a9de4b7554e3b4355307f9e97ffdb7",
            "messageId": "cccea4a7-24b4-4b2c-8c50-67d01bce17bf",
            "timestamp": 1746029638147,
            "author": {
                "id": "user@video.example.com",
                "type": 0
            },
            "type": 110,
            "content": {
                "userId": "bot@video.example.com",
                "role": "user"
            }
        },
        "unreadMessages": 2
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда createGroupChat | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| chatId | string | Да | Идентификатор созданного чата | 
| title | string | Да | Название созданного чата | 
| chatType | uint32 | Да | Тип созданного чата. Соответствует ChatTypeEnum | 
| lastMessage.chatId | string | Да | Идентификатор чата, где находится сообщение | 
| messageId | string | Да | Идентификатор сообщения. Можно использовать для изменения, пересылки или удаления | 
| timestamp | uint64 | Да | Временная метка в формате UNIX timestamp с точностью до миллисекунд | 
| author.id | string | Да | TrueConf ID автора сообщения или имя сервера | 
| author.type | uint32 | Да | Тип автора. См. EnvelopeAuthorTypeEnum | 
| lastMessage.type | uint32 | Да | Тип сообщения. См. EnvelopeTypeEnum | 
| userId | string | Нет | TrueConf ID пользователя, отправившего сообщение | 
| role | string | Нет | Роль пользователя в чате (см. подробнее) | 
| unreadMessages | uint32 | Да | Количество непрочитанных сообщений в групповом чате | 
Поле payload.lastMessage.content имеет разное содержание в зависимости от типа сообщения payload.lastMessage.type.
Ответ от клиента:
{
    "type": 2,
    "id": 123456
}
| Поле | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор сообщения, на которое дается ответ (см. подробнее) | 
# Создан канал
Сервер уведомляет о создании канала, в который был добавлен текущий пользователь. Описание прав участников канала вы можете найти здесь.
Сообщение от сервера:
{
    "method": "createChannel",
    "type": 1,
    "id": 14,
    "payload": {
        "chatId": "08d5dbda94a9de4b7554e3b4355307f9e97ffdb7",
        "title": "Important Announcements",
        "chatType": 6,
        "lastMessage": {
            "chatId": "08d5dbda94a9de4b7554e3b4355307f9e97ffdb7",
            "messageId": "cccea4a7-24b4-4b2c-8c50-67d01bce17bf",
            "timestamp": 1746029638147,
            "author": {
                "id": "user@video.example.com",
                "type": 0
            },
            "type": 110,
            "content": {
                "userId": "bot@video.example.com",
                "role": "user"
            }
        },
        "unreadMessages": 2
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда createChannel | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| chatId | string | Да | Идентификатор созданного канала | 
| title | string | Да | Название созданного канала | 
| chatType | uint32 | Да | Тип созданного канала. Соответствует ChatTypeEnum = 6 | 
| lastMessage.chatId | string | Да | Идентификатор канала, где находится сообщение | 
| messageId | string | Да | Идентификатор сообщения. Можно использовать данный идентификатор в дальнейшем, для изменения, пересылки или удаления сообщения | 
| timestamp | uint64 | Да | Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд | 
| author.id | string | Да | Уникальный идентификатор автора сообщения. Это либо TrueConf ID пользователя, либо имя сервера, с которого пришло сообщение. Тип идентификатора зависит от поля type | 
| author.type | uint32 | Да | Тип автора сообщения. Подробнее см. EnvelopeAuthorTypeEnum | 
| lastMessage.type | uint32 | Да | Тип сообщения. Позволяет определить тип контента в сообщении. Соответствует EnvelopeTypeEnum | 
| userId | string | Нет | TrueConf ID пользователя, отправившего сообщение | 
| role | string | Нет | Роль пользователя в групповом чате (см. подробнее) | 
| unreadMessages | uint32 | Да | Количество непрочитанных сообщений в канале | 
Поле payload.lastMessage.content имеет разное содержание в зависимости от типа сообщения payload.lastMessage.type.
Ответ от клиента:
{
    "type": 2,
    "id": 123456
}
| Поле | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор сообщения, на которое дается ответ (см. подробнее) | 
# Удален чат
Сервер уведомляет об удалении чата, в котором ранее состоял текущий пользователь. Это может быть: личный (peer-to-peer) чат, групповой чат,канал.
Сообщение от сервера:
{
    "method": "removeChat",
    "type": 1,
    "id": 1,
    "payload": {
        "chatId": "84960c6d80afa729b0fd42d35331de5814cc3e9a"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда removeChat | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной. Подробнее читайте тут | 
| chatId | string | Да | Идентификатор удалённого чата | 
# Добавлен участник в чат
Сервер отправляет уведомление, когда новый участник был добавлен в групповой чат или канал.
Сообщение от сервера:
{   
    "method": "addChatParticipant",
    "type": 1,
    "id": 1,
    "payload": {
        "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
        "userId": "user@video.example.com",
        "addedBy": {
            "id": "admin@video.example.com",
            "type": 1
        },
        "timestamp": "1735370776"
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда addChatParticipant | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной. Подробнее читайте тут | 
| chatId | string | Да | Идентификатор чата, куда был добавлен пользователь | 
| userId | string | Да | TrueConf ID пользователя, которого добавили в чат | 
| addedBy.id | string | Да | Уникальный идентификатор пользователя, добавившего нового участника. Это TrueConf ID или имя сервера, в зависимости от addedBy.type | 
| addedBy.type | uint32 | Да | Тип пользователя, который добавил нового участника. См. EnvelopeAuthorTypeEnum | 
| timestamp | uint64 | Да | Временная метка добавления участника в чат в формате UNIX timestamp (в миллисекундах) | 
Ответ от клиента:
{
    "type": 2,
    "id": 123456
}
| Поле | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор сообщения, на которое дается ответ (см. подробнее) | 
# Удален участник чата
Сервер отправляет уведомление, когда участник был исключён из группового чата или канала.
Сообщение от сервера:
{
  "method": "removedChatParticipant",
  "type": 1,
  "id": 1,
  "payload": {
    "chatId": "c8c3eee8-9ad0-4638-9692-ad16391a4256",
    "userId": "user@video.example.com",
    "removedBy": {
      "id": "admin@video.example.com",
      "type": 1
    },
    "timestamp": "1735370778"
  }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| method | string | Да | Команда removeChatParticipant | 
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| chatId | string | Да | Идентификатор чата, где был удален пользователь | 
| userId | string | Да | TrueConf ID пользователя, которого удалили из чата | 
| removedBy.id | string | Да | Уникальный идентификатор пользователя, удалившего участника из чата. Это либо TrueConf ID, либо имя сервера, с которого пришло сообщение. Тип идентификатора зависит от поля removedBy.type | 
| removedBy.type | uint32 | Да | Тип пользователя, который удалил участника из чата. Подробнее см. EnvelopeAuthorTypeEnum | 
| timestamp | uint64 | Да | Временная метка удаления участника из чата в формате UNIX timestamp с точностью до миллисекунд | 
Ответ от клиента:
{
    "type": 2,
    "id": 123456
}
| Поле | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор сообщения, на которое дается ответ (см. подробнее) | 
# Изменена роль участника
Версия: 5.5.2+
Сервер отправляет уведомление, когда роль участника чата была изменена.
Запрос:
{
    "type": 1,
    "id": 1,
    "method": "changeParticipantRole",
    "payload": {
        "chatId": "7e5ea3e8b5ed63e1443b2e4dcdd68b9f196abae1",
        "userId": "user@video.example.com",
        "role": "admin",
        "timestamp": 1760594447544
    }
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 1). Соответствует MESSAGE_TYPE.REQUEST | 
| id | uint32 | Да | Уникальный идентификатор запроса. Инкрементируемое значение, назначаемое отправляющей стороной, обязательное в каждом запросе для последующего связывания с ответом. Подробнее читайте тут | 
| method | string | Да | Команда changeParticipantRole | 
| chatId | string | Да | Идентификатор чата | 
| userId | string | Да | TrueConf ID пользователя, роль которого изменилась | 
| role | string | Да | Новая роль пользователя | 
| timestamp | uint64 | Да | Временная метка изменения роли участника чата в формате UNIX timestamp с точностью до миллисекунд | 
Ответ:
{
  "type": 2,
  "id": 1,
  "payload": {}
}
| Параметр | Тип | Обяз. | Описание | 
|---|---|---|---|
| type | uint32 | Да | Тип сообщения (по умолчанию 2). Соответствует MESSAGE_TYPE.RESPONSE | 
| id | uint32 | Да | Идентификатор, совпадающий с числом, отправленным в исходном запросе, используемый для связывания запроса и ответа | 
| payload | object | Да | В случае успеха вы получите пустой объект | 
В случае возникновения ошибки возвращается сообщение, содержащее параметр errorCode. Список возможных значений доступен в соответствующем разделе документации.