Объекты API
Объекты API
В данном разделе представлены основные структуры данных, используемые при обмене сообщениями по WebSocket-протоколу.
TrueConf Server API для чат-ботов построен на модели обмена сообщениями, где каждая сущность описывается на языке TypeScript через интерфейсы (interface) и перечисления (enum). Это позволяет задать строгую структуру как для клиентских запросов, так и для серверных ответов и событий.- Interfaces определяют формат сообщений и их полезной нагрузки (payload).
- Enums описывают допустимые значения для полей сообщений (например, типы сообщений, коды ошибок и т. д.).
Эти определения являются основой для сериализации и обработки сообщений на клиенте и сервере.
Перечисления (Enums)
ChatParticipantRoleEnum
Перечисление содержит список возможных ролей участника чата:
enum ChatParticipantRoleEnum {
OWNER = "owner",
ADMIN = "admin",
USER = "user",
CONF_OWNER = "conf_owner",
CONF_MODERATOR = "conf_moderator",
FAVORITES_OWNER = "favorites_owner",
WRITER = "writer"
}где:
OWNER- владелец чата;ADMIN- назначенный администратор чата;USER- обычный участник чата;CONF_OWNER- данная роль присутствует только в чатах конференциях, и означает что пользователь является владельцем конференции;CONF_MODERATOR- данная роль присутствует только в чатах конференциях, и означает что пользователь является модератором конференции;FAVORITES_OWNER- данная роль присутствует только в чате "Избранное" (Сохраненные сообщения).WRITER- данная роль присутствует только в канале и означает, что пользователь может писать сообщения в канал.
С описанием прав для каждой роли вы можете ознакомиться в отдельном разделе.
MESSAGE_TYPE
Есть три типа сообщений:
enum MESSAGE_TYPE {
RESERVED = 0,
REQUEST = 1,
RESPONSE = 2
}Применяются только REQUEST и RESPONSE.
OAUTH_ERROR
Коды ошибок, согласно спецификации OAuth 2.0, представлены в виде ASCII-строк из указанного в спецификации перечня. Поддерживаются следующие коды ошибок:
enum OAUTH_ERROR {
INVALID_REQUEST = "invalid_request",
INVALID_CLIENT = "invalid_client",
INVALID_GRANT = "invalid_grant",
UNSUPORTED_GRANT_TYPE = "unsupported_grant_type"
}| Код ошибки | Значение | Описание |
|---|---|---|
invalid_request | Неправильный запрос | Заголовки или тело запроса имеют неправильный формат. Например, отсутствуют обязательные поля или указан некорректный заголовок Content-Type. |
invalid_client | Неправильный клиент | Значение поля client_id отличается от допустимого (например, не равно chat_bot). |
invalid_grant | Неправильные авторизационные данные | Пользователь с указанным логином не найден, либо пароль неверен. |
unsupported_grant_type | Неправильный тип авторизации | Значение поля grant_type отличается от допустимого (например, не равно password). |
ChatTypeEnum
Перечисление содержит возможные типы чатов.
enum ChatTypeEnum {
UNDEF = 0,
P2P = 1,
GROUP = 2,
SYSTEM = 3,
FAVORITES = 5,
CHANNEL = 6
}где:
UNDEF- неизвестный тип чатаP2P- личные сообщения (чат с другим пользователем)GROUP- групповой чатSYSTEM- системный чатFAVORITES- чат "Избранное" (сохраненные сообщения)CHANNEL- канал
EnvelopeContentType
Используя данное перечисление, можно определить тип контента в сообщении.
enum EnvelopeContentType {
ADD_PARTICIPANT = 1,
REMOVE_PARTICIPANT = 2,
EDIT_CHAT_TITLE = 21,
EDIT_CHAT_AVATAR = 22,
CLEAR_CHAT_HISTORY = 23,
PARTICIPANT_ROLE = 110,
PLAIN_MESSAGE = 200,
FORWARDED_MESSAGE = 201,
ATTACHMENT = 202,
GEOLOCATION = 203,
SURVEY = 204,
}Системные сообщения (события)
Системные сообщения используются для логирования и визуального сопровождения событий в истории чата.
Определяются значением type < 200. Подробнее вы можете прочитать в соответствующем разделе документации.
| Тип сообщения | Значение | Описание |
|---|---|---|
| ADD_PARTICIPANT | 1 | Пользователь добавлен в чат |
| REMOVE_PARTICIPANT | 2 | Пользователь удалён из чата |
| EDIT_CHAT_TITLE | 21 | 5.5.3+ Изменено название чата |
| EDIT_CHAT_AVATAR | 22 | 5.5.3+ Изменено изображение чата |
| CLEAR_CHAT_HISTORY | 23 | 5.5.3+ Удалена история чата |
Пользовательские сообщения
Пользовательские сообщения формируются клиентами и передаются в общем потоке сообщений чата.
Определяются значением type ≥ 200.
| Тип сообщения | Значение | Описание |
|---|---|---|
| PLAIN_MESSAGE | 200 | Текстовое сообщение |
| FORWARDED_MESSAGE | 201 | Пересланное сообщение |
| ATTACHMENT | 202 | Сообщение с информацией о вложенном файле |
| GEOLOCATION | 203 | 5.5.3+ Сообщение, содержащее геолокацию пользователя (может быть отправлено с клиентского приложения для мобильных устройств) |
| SURVEY | 204 | Сообщение-опрос |
EnvelopeAuthorTypeEnum
enum EnvelopeAuthorTypeEnum {
SYSTEM,
USER,
}SYSTEM– автором сообщения является сервер. В большинстве случаев это будет обозначать то, что сообщение является системны сообщением. В качестве идентификатора автора будет использоваться идентификатор сервера (TrueConf Server Name).USER– автором сообщения является пользователь сервера. В качестве идентификатора автора будет использоваться TrueConf ID этого пользователя.
TextParseModeEnum
Данное перечисление используется для указания режима обработки текстового контента сообщений.
enum TextParseModeEnum {
TEXT = "text",
MARKDOWN = "markdown",
HTML = "html",
}где:
TEXT– контент сообщения будет обработан как текст. Все html-теги будут экранированы (преобразованы в HTML-сущности).MARKDOWN– контент будет обработан как markdown. Список поддерживаемых правил Markdown приведен ниже.HTML– контент будет обработан как HTML. Список поддерживаемых тегов HTML приведен ниже.
FileReadyStateEnum
Данное перечисление используется для указания состояния файла на сервере.
enum FileReadyStateEnum {
NOT_AVAILABLE = 0,
UPLOADING = 1,
READY = 2
}где:
NOT_AVAILABLE– файл удален из-за ограничений квоты, времени хранения, и т.д.;UPLOADING– файл в процессе загрузки;READY– файл загружен.
Структуры (Interfaces)
AbstractEnvelopeContent
Данный объект является базовым для хранения данных сообщения. На текущий момент объект не имеет никаких собственных полей, однако они могут появиться в будущем:
interface AbstractEnvelopeContent {}AddParticipantEnvelopeContent
Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.ADD_PARTICIPANT, отправляемым в случае добавления участника в чат, и имеет следующий интерфейс:
interface AddParticipantEnvelopeContent extends ChatParticipant, AbstractEnvelopeContent {}Объект не имеет собственных полей, и наследует поля из объекта ChatParticipant.
Пример:
{
"chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
"messageId": "2913538a-90e3-4323-9048-b599e4248796",
"timestamp": 1735330912,
"author": {
"id": "trueconf.server.name",
"type": 0 //0 - server, 1 - user
},
"replyMessageId": null, //string if this message is reply
"isEdited": false, //true if edited
"box": {
"id": 2,
"position": "" //for sorting undelivered messages
},
"type": 1, //1 - ADD_PARTICIPANT
"content": {
"userId": "user@video.example.com",
"role": "owner"
}
}AuthRequest
Сообщение запроса авторизации имеет следующий вид:
interface AuthRequest extends RequestMessage<"auth", AuthRequestPayload> {}Интерфейс AuthRequest наследует поля из объекта AuthRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
AuthRequestPayload
Тело сообщения (payload) для объекта запроса авторизации имеет следующий вид:
interface AuthRequestPayload {
token: string;
tokenType: "JWT";
receiveUnread?: boolean;
}| Параметр | Тип | Обяз. | Значение по умолчанию | Описание |
|---|---|---|---|---|
| token | string | Да | auth | Авторизационный токен, полученный посредством HTTP-запроса |
| tokenType | string | Да | JWT | Строка «JWT» |
| receiveUnread | boolean | Нет | false | Параметр, отвечающий за получение непрочитанных сообщений, когда бот находился в оффлайне. Сообщения возвращаются по одному — от старых к новым. Максимальное количество получаемых сообщений — 1000. |
SuccessAuthResponse
Ответ от сервера в случае успешной авторизации:
interface SuccessAuthResponse extends ResponseMessage<SuccessAuthResponsePayload> {}Интерфейс SuccessAuthResponse наследует поля из объекта SuccessAuthResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessAuthResponsePayload
Тело сообщения (payload) для объекта успешной авторизации имеет следующий вид:
interface SuccessAuthResponsePayload {
userId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| userId | string | Да | TrueConf ID авторизованного бота (пользователя сервера) |
ErrorAuthResponse
Ответ в случае ошибки авторизации:
interface ErrorAuthResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorAuthResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
UnathorizedErrorResponse
Ответ в случае, если начать отправлять сообщения без авторизации.
interface UnathorizedErrorResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс UnathorizedErrorResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
CreateGroupChatRequest
Интерфейс для создания группового чата:
interface CreateGroupChatRequest extends RequestMessage<"createGroupChat",CreateGroupChatRequestPayload> {}Интерфейс CreateGroupChatRequest наследует поля из CreateGroupChatRequestPayload, поэтому описание полей приводится там.
CreateGroupChatRequestPayload
interface CreateGroupChatRequestPayload {
title: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| title | string | Да | Название группового чата |
SuccessCreateGroupChatResponse
Ответ в случае успешного создания группового чата:
interface SuccessCreateGroupChatResponse
extends ResponseMessage<SuccessCreateGroupChatResponsePayload> {}Интерфейс SuccessCreateGroupChatResponse наследует поля из SuccessCreateGroupChatResponsePayload, поэтому описание полей приводится там.
SuccessCreateGroupChatResponsePayload
interface SuccessCreateGroupChatResponse
extends ResponseMessage<SuccessCreateGroupChatResponsePayload> {}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
ErrorCreateGroupChatResponse
Ответ в случае ошибки создания группового чата:
interface ErrorCreateGroupChatResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorCreateGroupChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
RemoveChatRequest
Исходящая команда удаления чата:
interface RemoveChatRequest extends RequestMessage<"removeChat",RemoveChatRequestPayload> {}Интерфейс RemoveChatRequest наследует поля из RemoveChatRequestPayload, поэтому описание полей приводится там.
RemoveChatRequestPayload
Тело сообщения (payload) для запроса удаления чата имеет следующий вид:
interface RemoveChatRequestPayload {
chatId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
SuccessRemoveChatResponse
Ответ в случае успешного удаления чата:
interface SuccessRemoveChatResponse
extends ResponseMessage<SuccessRemoveChatResponsePayload> {}Интерфейс SuccessRemoveChatResponse наследует поля из объекта SuccessRemoveChatResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessRemoveChatResponsePayload
interface SuccessRemoveChatResponsePayload {
chatId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
ErrorRemoveChatResponse
interface ErrorRemoveChatResponse extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorRemoveChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
AddChatParticipantRequest
Команда добавления участника в чат:
interface AddChatParticipantRequest extends RequestMessage<"addChatParticipant",AddChatParticipantRequestPayload> {}Интерфейс AddChatParticipantRequest наследует поля из объекта AddChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
AddChatParticipantRequestPayload
interface AddChatParticipantRequestPayload {
chatId: string;
userId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата в который добавляется пользователь |
| userId | string | Да | TrueConf ID пользователя добавляемого в чат |
SuccessAddChatParticipantResponse
Ответ в случае успешного добавления участника в чат:
interface SuccessAddChatParticipantResponse
extends ResponseMessage<SuccessAddChatParticipantResponsePayload> {}Интерфейс SuccessAddChatParticipantResponse наследует поля из SuccessAddChatParticipantResponsePayload, поэтому описание полей приводится там.
SuccessAddChatParticipantResponsePayload
Тело сообщения (payload) для объекта успешного добавления участника в чат имеет следующий вид:
interface SuccessAddChatParticipantResponsePayload {}ErrorAddChatParticipantResponse
Ответ в случае ошибки удаления участника из чата:
interface ErrorAddChatParticipantResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorAddChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
CreateP2PChatRequest
Команда для создания личного чата (peer-to-peer):
interface CreateP2PChatRequest extends RequestMessage<"createP2PChat",CreateP2PChatRequestPayload> {}Интерфейс CreateP2PChatRequest наследует поля из объекта CreateP2PChatRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
CreateP2PChatRequestPayload
interface CreateP2PChatRequestPayload {
userId : string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| userId | string | Да | TrueConf ID пользователя, с которым мы хотим создать чат |
Если бот никогда не писал данному пользователю - будет создан новый чат. Если бот отправлял данному пользователю сообщения - будет возвращен уже существующий чат.
SuccessCreateP2PChatResponse
Ответ в случае успешного создания личного (peer-to-peer) чата:
interface SuccessCreateP2PChatResponse
extends ResponseMessage<SuccessCreateP2PChatResponsePayload> {}Интерфейс SuccessCreateP2PChatResponse наследует поля из объекта CreateP2PChatRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessCreateP2PChatResponsePayload
interface SuccessCreateP2PChatResponsePayload {
chatId : string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор созданного чата |
ErrorCreateP2PChatResponse
interface ErrorCreateP2PChatResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorCreateP2PChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
RemoveChatParticipantRequest
Команда для удаления участника из чата:
interface RemoveChatParticipantRequest
extends RequestMessage<"removeChatParticipant",RemoveChatParticipantRequestPayload> {}Интерфейс RemoveChatParticipantRequest наследует поля из объекта RemoveChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
RemoveChatParticipantRequestPayload
interface RemoveChatParticipantRequestPayload {
chatId : string;
userId : string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата из которого удаляют пользователя |
| userId | string | Да | TrueConf ID удаляемого пользователя |
SuccessRemoveChatParticipantResponse
Ответ в случае успешного удаления участника из чата:
interface SuccessRemoveChatParticipantResponse
extends ResponseMessage<SuccessRemoveChatParticipantResponsePayload> {}Интерфейс SuccessRemoveChatParticipantResponse наследует поля из объекта SuccessRemoveChatParticipantResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessRemoveChatParticipantResponsePayload
interface SuccessRemoveChatParticipantResponsePayload {}ErrorRemoveChatParticipantResponse
interface ErrorRemoveChatParticipantResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorRemoveChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
HasChatParticipantRequest
Команда для проверки наличия участника в чате:
interface HasChatParticipantRequest extends RequestMessage<"hasChatParticipant",HasChatParticipantRequestPayload> {}Интерфейс HasChatParticipantRequest наследует поля из объекта HasChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
HasChatParticipantRequestPayload
interface HasChatParticipantRequestPayload {
chatId: string;
userId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата в котором проверяется наличие пользователя |
| userId | string | Да | TrueConf ID проверяемого пользователя |
SuccessHasChatParticipantResponse
Ответ в случае успешного получения информации о наличии участника в чате:
interface SuccessHasChatParticipantResponse
extends ResponseMessage<SuccessHasChatParticipantResponsePayload> {}Интерфейс SuccessHasChatParticipantResponse наследует поля из объекта SuccessHasChatParticipantResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessHasChatParticipantResponsePayload
interface SuccessHasChatParticipantResponsePayload {
result: boolean;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| result | boolean | Да | Флаг наличия участника в чате. Если true – участник присутствует в чате |
ErrorHasChatParticipantResponse
Ответ в случае ошибки удаления участника из чата:
interface ErrorHasChatParticipantResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorHasChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
GetChatParticipantListRequest
Команда для получения списка участников чата:
interface GetChatParticipantListRequest extends RequestMessage<"getChatParticipants",GetChatParticipantListRequestPayload> {}Интерфейс GetChatParticipantListRequest наследует поля из объекта GetChatParticipantListRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
GetChatParticipantListRequestPayload
interface GetChatParticipantListRequestPayload {
chatId: string;
pageSize: uint32;
pageNumber: uint32;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| pageSize | uint32 | Да | Количество записей с информацией об участниках чата в ответе на запрос |
| pageNumber | uint32 | Да | Смещение с которым будет возвращен список участников. Смещение рассчитывается по формуле startOffset = pageSize * pageNumber |
SuccessGetChatParticipantListResponse
Ответ в случае успешного получения списка участников в чата:
interface SuccessGetChatParticipantListResponse
extends ResponseMessage<SuccessGetChatParticipantListResponsePayload> {}Интерфейс SuccessGetChatParticipantListResponse наследует поля из объекта SuccessGetChatParticipantListResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessGetChatParticipantListResponsePayload
interface SuccessGetChatParticipantListResponsePayload {
participants: Array<ChatParticipant>;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| participants | Array | Да | Массив объектов, содержащий информацию обо всех участниках чата |
ErrorGetChatParticipantListResponse
Ответ в случае ошибки получения списка участников чата:
interface ErrorGetChatParticipantListResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorGetChatParticipantListResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
AddChatParticipantIncomingRequest
Входящее сообщение с информацией о появлении нового участников чата:
interface AddChatParticipantIncomingRequest extends RequestMessage<"addChatParticipant",AddChatParticipantIncomingRequestPayload> {}Интерфейс AddChatParticipantIncomingRequest наследует поля из объекта AddChatParticipantIncomingRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
AddChatParticipantIncomingRequestPayload
interface AddChatParticipantIncomingRequestPayload {
chatId: string;
userId: string;
addedBy: MessageAuthor;
timestamp: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| userId | string | Да | TrueConf ID добавленного в чат пользователя |
| addedBy | MessageAuthor | Да | Кто добавил участника. Подробнее смотрите объект MessageAuthor |
| timestamp | uint64 | Да | Временная метка добавления участника в чат в формате UNIX timestamp c точностью до миллисекунд |
SuccessProceedAddChatParticipantResponse
Ответ от клиента не содержит какой-либо полезной нагрузки.
interface SuccessProceedAddChatParticipantResponse
extends ResponseMessage<{}> {}RemoveChatParticipantIncomingRequest
Входящее сообщение с информацией об удалении участника из чата:
interface RemoveChatParticipantIncomingRequest
extends RequestMessage<"removeChatParticipant",RemoveChatParticipantIncomingRequestPayload> {}Интерфейс RemoveChatParticipantIncomingRequest наследует поля из объекта RemoveChatParticipantIncomingRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
RemoveChatParticipantIncomingRequestPayload
interface RemoveChatParticipantIncomingRequestPayload {
chatId: string;
userId: string;
removedBy: MessageAuthor;
timestamp: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| userId | string | Да | TrueConf ID удаленного из чата пользователя |
| addedBy | MessageAuthor | Да | Кто удалил участника. Подробнее смотрите объект MessageAuthor |
| timestamp | uint64 | Да | Временная метка удаления участника из чата в формате UNIX timestamp c точностью до миллисекунд |
SuccessProceedRemoveChatParticipantResponse
Ответ от клиента не содержит какой-либо полезной нагрузки.
interface SuccessProceedRemoveChatParticipantResponse
extends ResponseMessage<{}> {}SendChatMessageRequest
Команда для отправки сообщения:
interface SendChatMessageRequest extends RequestMessage<"sendMessage",SendChatMessageRequestPayload> {}Интерфейс SendChatMessageRequest наследует поля из объекта SendChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SendChatMessageRequestPayload
interface SendChatMessageRequestPayload {
chatId: string;
replyMessageId?: string;
content: TextMessageContent;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| replyMessageId | string | Нет | В случае если мы отвечаем на сообщение, поле должно содержать идентификатор этого сообщения. Необязательное поле |
| content | TextMessageContent | Да | Данные сообщения |
TextMessageContent
interface TextMessageContent {
text: string;
parseMode: TextParseModeEnum;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| text | string | Да | Текст сообщения |
| parseMode | TextParseModeEnum | Да | Режим обработки текста сообщения |
SuccessSendChatMessageResponse
Ответ в случае успешной отправки сообщения:
interface SuccessSendChatMessageResponse
extends ResponseMessage<SuccessSendChatMessageResponsePayload> {}Интерфейс SuccessSendChatMessageResponse наследует поля из объекта SuccessSendChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessSendChatMessageResponsePayload
interface SuccessSendChatMessageResponsePayload {
chatId: string;
messageId: string;
timestamp: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата в который отправлялось сообщение |
| messageId | string | Да | Идентификатор сообщения. Можно использовать данный идентификатор в дальнейшем, для изменения, пересылки или удаления сообщения |
| timestamp | uint64 | Да | Временная метка оправки сообщения в формате UNIX timestamp c точностью до миллисекунд |
ErrorSendChatMessageResponse
Ответ в случае ошибки отправки сообщения в чат:
interface ErrorSendChatMessageResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorSendChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
EditChatMessageRequest
Команда для изменения сообщения:
interface EditChatMessageRequest extends RequestMessage<"editMessage",EditChatMessageRequestPayload> {}Интерфейс EditChatMessageRequest наследует поля из объекта EditChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
EditChatMessageRequestPayload
interface EditChatMessageRequestPayload {
messageId: string;
content: TextMessageContent;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| content | TextMessageContent | Да | Данные сообщения |
SuccessEditChatMessageResponse
Ответ в случае успешного изменения сообщения:
interface SuccessEditChatMessageResponse
extends ResponseMessage<SuccessEditChatMessageResponsePayload> {}Интерфейс SuccessEditChatMessageResponse наследует поля из объекта SuccessSendChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessEditChatMessageResponsePayload
interface SuccessSendChatMessageResponsePayload {
timestamp: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| timestamp | uint64 | Да | Временная метка редактирования сообщения в формате UNIX timestamp c точностью до миллисекунд |
ErrorEditChatMessageResponse
Ответ в случае ошибки изменения сообщения:
interface ErrorEditChatMessageResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorEditChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
ForwardChatMessageRequest
Команда для пересылки сообщения:
interface ForwardChatMessageRequest
extends RequestMessage<"forwardMessage", ForwardChatMessageRequestPayload> {}Интерфейс ForwardChatMessageRequest наследует поля из объекта ForwardChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
ForwardChatMessageRequestPayload
interface ForwardChatMessageRequestPayload {
chatId: string;
messageId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата, в который вы будете пересылать сообщение |
| messageId | string | Да | Идентификатор пересылаемого сообщения |
SuccessForwardChatMessageResponse
Ответ в случае успешной пересылки сообщения:
interface SuccessForwardChatMessageResponse
extends ResponseMessage<SuccessForwardChatMessageResponsePayload> {}Интерфейс SuccessForwardChatMessageResponse наследует поля из объекта SuccessForwardChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessForwardChatMessageResponsePayload
interface SuccessForwardChatMessageResponsePayload {
chatId: string;
messageId: string;
timestamp: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Уникальный идентификатор чата, в который мы переслали сообщение |
| messageId | string | Да | Уникальный идентификатор нового сообщения, содержащего ваше пересланное сообщение |
| timestamp | uint64 | Да | Временная метка пересылки сообщения в формате UNIX timestamp c точностью до миллисекунд |
ErrorForwardChatMessageResponse
Ответ в случае ошибки пересылки сообщения:
interface ErrorForwardChatMessageResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorForwardChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
GetChatMessageRequest
Команда для получения сообщения:
interface GetChatMessageRequest
extends RequestMessage<"getMessageById", GetChatMessageRequestPayload> {}Интерфейс GetChatMessageRequest наследует поля из объекта GetChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
GetChatMessageRequestPayload
interface GetChatMessageRequestPayload {
messageId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| messageId | string | Да | Идентификатор запрашиваемого сообщения |
SuccessGetChatMessageResponse
Ответ в случае успешного получения сообщения:
interface SuccessGetChatMessageResponse
extends ResponseMessage<SuccessGetChatMessageResponsePayload> {}Интерфейс SuccessGetChatMessageResponse наследует поля из объекта SuccessGetChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessGetChatMessageResponsePayload
interface SuccessGetChatMessageResponsePayload extends Envelope {}Объект SuccessGetChatMessageResponsePayload не содержит собственных полей, и наследуется от объекта Envelope.
ErrorGetChatMessageResponse
Ответ в случае ошибки получения сообщения:
interface ErrorGetChatMessageResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorGetChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
GetChatHistoryRequest
Команда для получения истории чата:
interface GetChatHistoryRequest
extends RequestMessage<"getChatHistory", GetChatHistoryRequestPayload> {}Интерфейс GetChatHistoryRequest наследует поля из объекта GetChatHistoryRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
GetChatHistoryRequestPayload
interface GetChatHistoryRequestPayload {
chatId: string;
count: uint32;
fromMessageId?: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата для которого запрашивается история сообщений |
| count | uint32 | Да | Количество возвращаемых в ответе сообщений |
| fromMessageId | string | Нет | Идентификатор сообщения чата, с которого будут возвращена история чата |
Сообщения возвращаются в порядке от самого нового сообщения (или от fromMessageId) и до самого старого по дате добавления сообщения в чат.
SuccessGetChatHistoryResponse
interface SuccessGetChatHistoryResponse
extends ResponseMessage<SuccessGetChatHistoryResponsePayload> {}Интерфейс SuccessGetChatHistoryResponse наследует поля из объекта SuccessGetChatHistoryResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessGetChatHistoryResponsePayload
Ответ в случае успешного получения истории чата:
interface SuccessGetChatMessageResponsePayload {
chatId: string;
count: uint32;
messages: Array<Envelope>;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата для которого запрашивалась история сообщений |
| count | uint32 | Да | Количество полученных сообщений |
| messages | Array | Нет | Массив с объектами Envelope |
ErrorGetChatHistoryResponse
Ответ в случае ошибки получения истории чата:
interface ErrorGetChatHistoryResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorGetChatHistoryResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
RemoveChatMessageRequest
Команда для удаления сообщения:
interface RemoveChatMessageRequest
extends RequestMessage<"removeMessage", RemoveChatMessageRequestPayload> {}Интерфейс RemoveChatMessageRequest наследует поля из объекта RemoveChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
RemoveChatMessageRequestPayload
interface RemoveChatMessageRequestPayload {
messageId: string;
forAll: boolean;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| messageId | string | Да | Идентификатор удаляемого сообщения |
| forAll | boolean | Да | Флаг удаления сообщения. Если установлено в true, сообщение будет удалено у всех пользователей |
SuccessRemoveChatMessageResponse
Ответ в случае успешного удаления сообщения:
interface SuccessRemoveChatMessageResponse
extends ResponseMessage<SuccessRemoveChatMessageResponsePayload> {}Интерфейс SuccessRemoveChatMessageResponse наследует поля из объекта SuccessRemoveChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessRemoveChatMessageResponsePayload
interface SuccessRemoveChatMessageResponsePayload {}ErrorRemoveChatMessageResponse
Ответ в случае ошибки удаления сообщения:
interface ErrorRemoveChatMessageResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorRemoveChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
UploadFileRequest
Команда для создания задачи на загрузку файла:
interface UploadFileRequest
extends RequestMessage<"uploadFile", UploadFileRequestPayload> {}Интерфейс UploadFileRequest наследует поля из объекта UploadFileRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
UploadFileRequestPayload
interface UploadFileRequestPayload {
fileName: string;
fileSize: number;
mimeType: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| fileName | string | Да | Имя файла |
| fileSize | number | Да | Размер файла |
| mimeType | string | Да | MIME-тип файла |
SuccessUploadFileResponse
Ответ в случае успешного создания задачи на загрузку файла:
interface SuccessUploadFileResponse
extends ResponseMessage<SuccessUploadFileResponsePayload> {}Интерфейс SuccessUploadFileResponse наследует поля из объекта SuccessUploadFileResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessUploadFileResponsePayload
interface SuccessUploadFileResponsePayload {
uploadTaskId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| uploadTaskId | string | Да | Идентификатор задачи на загрузку файла |
ErrorUploadFileResponse
Ответ в случае ошибки создания задачи на загрузку файла:
interface ErrorUploadFileResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorUploadFileResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
SendFileRequest
команда для отправки файла в сообщении:
interface SendFileRequest
extends RequestMessage<"sendFile", SendFileRequestPayload> {}Интерфейс SendFileRequest наследует поля из объекта SendFileRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SendFileRequestPayload
interface SendFileRequestPayload {
chatId: string;
content: {
fileId: string,
};
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата для отправки сообщения |
| fileId | string | Да | Идентификатор файла полученный в ответе на HTTP-запрос |
SuccessSendFileResponse
Ответ в случае успешной отправки файла:
interface SuccessSendFileResponse
extends ResponseMessage<SuccessSendFileResponsePayload> {}Интерфейс SuccessSendFileResponse наследует поля из объекта SuccessSendFileResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessSendFileResponsePayload
interface SuccessSendFileResponsePayload {
chatId: string;
timestamp: number;
messageId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Идентификатор чата |
| timestamp | number | Да | Время отправки сообщения |
| messageId | string | Да | Идентификатор сообщения |
ErrorSendFileResponse
interface ErrorSendFileResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorSendFileResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
FileMessageContent
Получение нотификации об отправке файла:
interface FileMessageContent {
name: string;
mimeType: string;
size: number;
fileId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| name | string | Да | Имя файла |
| size | number | Да | Размер файла |
| mimeType | string | Да | MIME-тип файла |
| fileId | string | Да | Идентификатор файла на сервере |
GetFileInfoRequest
Команда для получения информации о файле и скачивание:
interface GetFileInfoRequest
extends RequestMessage<"getFileInfo", GetFileInfoRequestPayload> {}Интерфейс GetFileInfoRequest наследует поля из объекта GetFileInfoRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
GetFileInfoRequestPayload
interface GetFileInfoRequestPayload {
fileId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| fileId | string | Да | Идентификатор файла, полученный из события об отправке сообщения |
SuccessGetFileInfoResponse
Ответ в случае нахождения файла:
interface SuccessGetFileInfoResponse
extends ResponseMessage<SuccessGetFileInfoResponsePayload> {}Интерфейс SuccessGetFileInfoResponse наследует поля из объекта SuccessGetFileInfoResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessGetFileInfoResponsePayload
interface SuccessGetFileInfoResponsePayload {
name: string,
size: number,
mimeType: string,
downloadUrl: string | null,
readyState: FileReadyStateEnum,
infoHash: string,
previews: null | Array<{
name: string,
mimeType: string,
size: number,
downloadUrl: string,
}>,
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| name | string | Да | Имя файла |
| size | number | Да | Размер файла в байтах |
| mimeType | string | Да | MIME-тип файла |
| downloadUrl | string | Да | URL для скачивания файла |
| readyState | FileReadyStateEnum | Да | Состояние файла на сервере |
| infoHash | string | Да | Идентификатор файла на сервере |
| previews | Array | Да | Массив превью файла |
Для скачивания файла необходимо отправить GET-запрос на адрес, указанный в downloadUrl.
ErrorGetFileInfoResponse
Ответ, если файл на сервере не найден:
interface ErrorGetFileInfoResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorGetFileInfoResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
SubscribeFileProgressRequest
Команда для подписки на прогресс загрузки файла на сервер:
interface SubscribeFileProgressRequest extends RequestMessage<"subscribeFileProgress", SubscribeFileProgressRequestPayload> {}Интерфейс SubscribeFileProgressRequest наследует поля из объекта SubscribeFileProgressRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SubscribeFileProgressRequestPayload
interface SubscribeFileProgressRequestPayload {
fileId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| fileId | string | Да | Идентификатор файла на сервере |
SuccessSubscribeFileProgressResponse
Ответ в случае успешной подписки:
interface SuccessSubscribeFileProgressResponse
extends ResponseMessage<SuccessSubscribeFileProgressResponsePayload> {}Интерфейс SuccessSubscribeFileProgressResponse наследует поля из объекта SuccessSubscribeFileProgressResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessSubscribeFileProgressResponsePayload
interface SuccessSubscribeFileProgressResponsePayload {
result: boolean;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| result | boolean | Да | Получилось ли подписаться на загрузку |
ErrorSubscribeFileProgressResponse
Ответ, в случае неудачной подписки на загрузку файла:
interface ErrorSubscribeFileProgressResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorSubscribeFileProgressResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
UploadProgressContent
Интерфейс сообщения события о загрузке файла:
interface UploadProgressContent {
fileId: string;
progress: number;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| fileId | string | Да | Идентификатор файла на сервере |
| progress | number | Да | Количество байт загруженных на сервер |
UnsubscribeFileProgressRequest
Команда для отписки от получения событий загрузки файла на сервер.
interface UnsubscribeFileProgressRequest extends RequestMessage< "unsubscribeFileProgress", UnsubscribeFileProgressRequestPayload> {}Интерфейс UnsubscribeFileProgressRequest наследует поля из объекта UnsubscribeFileProgressRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
UnsubscribeFileProgressRequestPayload
interface UnsubscribeFileProgressRequestPayload {
fileId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | string | Да | Идентификатор файла на сервере |
SuccessUnsubscribeFileProgressResponse
Ответ в случае успешной отписки от получения событий загрузки файла на сервер:
interface SuccessUnsubscribeFileProgressResponse extends ResponseMessage<SuccessUnsubscribeFileProgressResponsePayload> {}Интерфейс SuccessUnsubscribeFileProgressResponse наследует поля из объекта SuccessUnsubscribeFileProgressResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.
SuccessUnsubscribeFileProgressResponsePayload
interface SuccessUnsubscribeFileProgressResponsePayload {
result: boolean;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| result | boolean | Да | Получилось ли отписаться от получения событий |
ErrorUnubscribeFileProgressResponse
Ответ в случае ошибки отписки от получения событий загрузки файла на сервер:
interface ErrorUnubscribeFileProgressResponse
extends GenericErrorResponse<GenericErrorPayload<uint32>> {}Интерфейс ErrorUnubscribeFileProgressResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.
Envelope
Каждое сообщение, полученное в виде события, загруженное по идентификатору сообщения или полученное в истории сообщений чата соответствует интерфейсу Envelope:
interface Envelope {
messageId: string;
chatId: string;
timestamp: number;
replyMessageId?: string;
isEdited: boolean;
type: EnvelopeContentType;
author: EnvelopeAuthor;
box: EnvelopeBox;
content: AbstractEnvelopeContent;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| messageId | string | Да | Уникальный идентификатор сообщения |
| chatId | string | Да | Уникальный идентификатор чата, в котором находится сообщение |
| timestamp | uint64 | Да | Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд |
| replyMessageId | string | Нет | Если это ответ на сообщение — содержит идентификатор этого сообщения |
| isEdited | boolean | Да | Было ли сообщение когда-либо отредактировано |
| type | EnvelopeContentType | Да | Тип сообщения |
| author | EnvelopeAuthor | Да | Автор сообщения |
| box | EnvelopeBox | Да | Порядковые номера сообщения |
| content | AbstractEnvelopeContent | Да | Контент сообщения. Может быть текстом, файлом или другим типом данных — в зависимости от поля type. |
EnvelopeAuthor
Объект содержит информацию об авторе сообщения.
interface EnvelopeAuthor {
id: string;
type: EnvelopeAuthorTypeEnum;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | string | Да | Уникальный идентификатор автора сообщения. Это может быть либо TrueConf ID пользователя, отправившего сообщение, либо имя сервера, с которого оно пришло. Тип идентификатора зависит от значения поля type |
| type | EnvelopeAuthorTypeEnum | Да | Тип автора сообщения |
EnvelopeBox
Данный объект применяется для сортировки сообщений и имеет следующий интерфейс:
interface EnvelopeBox {
id: number;
position: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | number | Да | Порядковый номер "коробки" в которой находится сообщение |
| position | string | Да | Порядковый номер сообщения в "коробке" |
О том, как работать с данным объектом вы можете ознакомиться в соответствующем разделе.
GenericErrorResponse
На большинство запросов в случае какой-либо ошибки будет отправляться ответ следующего вида:
interface GenericErrorResponse<T extends GenericErrorPayload> extends ResponseMessage<T> { }Интерфейс GenericErrorResponse наследует поля из GenericErrorPayload и ResponseMessage поэтому описание полей смотрите там.
GenericErrorPayload
interface GenericErrorPayload<ErrorCodeEnum extends uint32> {
errorCode: ErrorCodeEnum ;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| errorCode | uint32 | Да | Код ошибки |
Message
Базовый формат сообщения. Любое сообщение (как входящее, так и исходящее) будет иметь следующие поля:
interface Message {
type: MESSAGE_TYPE;
id: uint64;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| type | enum MESSAGE_TYPE | Да | Тип сообщения из перечисления MESSAGE_TYPE |
| id | uint32 | Да | Уникальный идентификатор сообщения, представляющий собой инкрементируемое число (в некоторых протоколах, например TCP, такое число называется sequence id).****Идентификатор может быть идентичным для исходящих и входящих сообщений.****Значение идентификатора может инкрементироваться более чем на одну единицу за раз. Подробнее см. ниже. |
RequestMessage
Cообщение с типом Request.
interface RequestMessage<Method extends string, Payload extends JSONObject> extends Message {
type: MESSAGE_TYPE.REQUEST;
method: Method;
payload: Payload;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| type | MESSAGE_TYPE.REQUEST | Да | Тип сообщения (по умолчанию 1). |
| method | string | Да | Тип отправляемой команды |
| payload | JSONObject | Нет | Любой объект в формате JSON, который применим для данного method. Поле может отсутствовать если для данного method не предусмотрено никаких дополнительных параметров |
Пример:
{
"type": 1,
"id": 1,
"method": "ping",
"payload": {
"data": "Hello, World!",
"some_additional_data": {
"internal_additional_field_124": [true, false, 1234]
}
}
}ResponseMessage
Сообщение с типом Response.
interface ResponseMessage<Payload extends JSONObject> extends Message {
type: MESSAGE_TYPE.RESPONSE;
payload: Payload;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| type | MESSAGE_TYPE.RESPONSE | Да | Тип сообщения (по умолчанию 2). |
| payload | JSONObject | Нет | Любой объект в формате JSON, который применим в качестве полезных данных для ответа на запрос. Поле может отсутствовать если ответ на запрос не содержит полезных данных |
Пример:
{
"type": 2,
"id": 123456,
"payload": {
"data": "Hello, World!"
}
}JSONObject
Объект JSONObject, передаваемый в payload, должен соответствовать следующему типу:
type JSONValue = null | string | number | boolean | JSONArray | JSONObject;
interface JSONArray extends Array<JSONValue> {}
type JSONObject = {
[key: string] ?: JSONValue;
[key: number] ?: JSONValue;
}OAuthTokenRequest
Структура запроса для получения идентификационного токена.
interface OAuthTokenRequest {
client_id: string;
grant_type: string;
username: string;
password: string;
}| Параметр | Тип | Обяз. | По умолчанию | Описание |
|---|---|---|---|---|
| client_id | string | Да | "chat_bot" | Константная строка "chat_bot" |
| grant_type | string | Да | "password" | Константная строка "password" |
| username | string | Да | Логин пользователя (см. ниже) | |
| password | string | Да | Пароль пользователя |
Логин пользователя сервера TrueConf. Поддерживаются следующие форматы:
Простой логин — логин пользователя текущего сервера, например:
vasyaилиalex_smithС указанием сервера TrueConf — например:
vasya@server1.localС указанием LDAP-домена — например:
web-department.mycompany\\alex_smithС указанием сервера и LDAP-домена — например:
web-department.mycompany\\alex_smith@server1.local
OAuthTokenSuccessResponse
Структура ответа в случае успешной авторизации при получении идентификационного токена.
interface OAuthTokenSuccessResponse {
access_token: string;
token_type: string;
expires_at: uint32;
}| Параметр | Тип | Обяз. | По умолчанию | Описание |
|---|---|---|---|---|
| access_token | string | Да | Идентификационный токен, используемый для авторизации WebSocket-соединения. | |
| token_type | string | Да | "JWT" | Константная строка "JWT" |
| expires_at | uint32 | Да | Время жизни токена составляет один месяц c момента формирования. По истечении этого времени потребуется повторная авторизация. |
OAuthTokenErrorResponse
Структура ответа в случае ошибки авторизации при получении идентификационного токена.
interface OAuthTokenErrorResponse {
error: "OAUTH_ERROR";
error_description: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| error | enum OAUTH_ERROR | Да | Значение из перечисления OAUTH_ERROR |
| error_description | string | Да | Человекочитаемый текст ошибки авторизации |
RemoveParticipantEnvelopeContent
Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.REMOVE_PARTICIPANT, отправляемым в случае удаления участника из чата, и имеет следующий интерфейс:
interface RemoveParticipantEnvelopeContent extends AbstractEnvelopeContent {
userId: string;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| userId | string | Да | TrueConf ID пользователя удаленного из чата. |
PlainMessageEnvelopeContent
Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.PLAIN_MESSAGE и имеет следующий интерфейс:
interface RemoveParticipantEnvelopeContent extends AbstractEnvelopeContent {
text: string;
parseMode: TextParseModeEnum;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| text | string | Да | Текст сообщения |
| parseMode | TextParseModeEnum | Да | Режим обработки текста сообщения. Подробнее в описании перечисления |
Пример:
{
"chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
"messageId": "fdfa8fd6-b4f5-4ecc-8c7e-11e420105056",
"timestamp": 1735330910,
"author": {
"id": "user@video.example.com",
"type": 1 //0 - server, 1 - user
},
"replyMessageId": null, //string if this message is reply
"isEdited": false, //true if edited
"box": {
"id": 1,
"position": "" //for sorting undelivered messages
},
"type": 200, //200 - PLAIN_MESSAGE
"content": {
"text": "Hello, chat bot!",
"parseMode": "text"
}
}ForwardMessageEnvelopeContent
Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.FORWARD_MESSAGE и имеет следующий интерфейс:
interface ForwardMessageEnvelopeContent extends Omit<Envelope, "box">, AbstractEnvelopeContent {}Особенностью интерфейса объекта с контентом пересылаемого сообщения является то, что он в качестве контента содержит объект пересылаемого сообщения (Envelope), за исключением данных в поле "box".
Теоретически, цепочка вложенности пересылаемых сообщений может быть бесконечной, но на текущий момент вложенность составляет одно сообщение (Envelope).
Пример:
{
"chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
"messageId": "552a5a7c-02fd-4c30-a4f1-60c9cfff649c",
"timestamp": 1735330914,
"author": {
"id": "user@video.example.com",
"type": 1 //0 - server, 1 - user
},
"replyMessageId": null, //string if this message is reply
"isEdited": false, //true if edited
"box": {
"id": 5677289,
"position": "COFFEE" //for sorting undelivered messages
},
"type": 201, //201 - FORWARD_MESSAGE
"content": {
"chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
"messageId": "fdfa8fd6-b4f5-4ecc-8c7e-11e420105056",
"timestamp": 1735330910,
"author": {
"id": "user@video.example.com",
"type": 1 //0 - server, 1 - user
},
"replyMessageId": null, //string if this message is reply
"isEdited": false, //true if edited
"type": 200, //200 - PLAIN_MESSAGE
"content": {
"text": "Hello, chat bot!",
"parseMode": "text"
}
}
}AttachmentMessageEnvelopeContent
Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.ATTACHMENT и имеет следующий интерфейс:
interface AttachmentMessageEnvelopeContent extends AbstractEnvelopeContent {
name: string;
mimeType: string;
size: number;
id: string;
}| Параметр | Тип | Обяз. | По умолчанию | Описание |
|---|---|---|---|---|
| name | string | Да | Название файла у отправляющей стороны. Например, "фото.jpg" | |
| mimeType | string | Да | "" | MIME-тип отправляемого файла. Может быть, например, строкой "image/jpeg" или пустой строкой, если не удалось определить тип вложения |
| size | uint64 | Да | Размер файла в байтах | |
| id | string | Да | "" | Уникальный идентификатор файла для возможности его скачивания. Подробнее см. раздел по работе с вложениями |
ChatParticipant
Данный объект используется для хранения информации об участнике чата.
interface ChatParticipant {
userId: string;
role: ChatParticipantRoleEnum;
type: EnvelopeAuthorTypeEnum;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| userId | string | Да | TrueConf ID пользователя добавленного в чат |
| role | ChatParticipantRoleEnum | Да | Роль пользователя в чате (см. перечисление ChatParticipantRoleEnum) |
| role | EnvelopeAuthorTypeEnum | Да | Тип пользователя (см. перечисление EnvelopeAuthorTypeEnum) |