Перейти к содержимому
CalabДокументация

События gateway

Все opcodes, коды закрытия и события DispatchEvent протокола gateway с пометкой, какие из них получают боты.

Справочник протокола gateway версии v=1. Как подключаться и обрабатывать события — в главе Gateway.

Opcodes

Поле op кадра GatewayFrame. В JSON — полное имя, например "GATEWAY_OPCODE_DISPATCH".

OpcodeНомерНаправлениеПоле кадра
GATEWAY_OPCODE_HEARTBEAT1бот → серверheartbeat { lastSeq }
GATEWAY_OPCODE_IDENTIFY2бот → серверidentify { token, device, capabilities }
GATEWAY_OPCODE_RESUME3бот → серверresume { token, sessionId, seq }
GATEWAY_OPCODE_PRESENCE_UPDATE4бот → серверsetPresence { status, until }
GATEWAY_OPCODE_TYPING5бот → серверtyping { roomId }
GATEWAY_OPCODE_SUBSCRIBE6бот → серверsubscribe { roomIds }
GATEWAY_OPCODE_RECONNECT7сервер → ботreconnect {}
GATEWAY_OPCODE_DISPATCH8сервер → ботdispatch { <событие> }
GATEWAY_OPCODE_INVALID_SESSION9сервер → ботinvalidSession { resumable }
GATEWAY_OPCODE_HELLO10сервер → ботhello { heartbeatIntervalMs }
GATEWAY_OPCODE_HEARTBEAT_ACK11сервер → ботheartbeatAck {}

Коды закрытия

КодИмяЧто делать боту
4000UNKNOWN_ERRORпереподключиться, RESUME; с причиной replaced by a new session — не переподключаться
4001UNKNOWN_OPCODEпереподключиться, RESUME
4002DECODE_ERRORпереподключиться, RESUME
4003NOT_AUTHENTICATEDпереподключиться, новый IDENTIFY
4004AUTHENTICATION_FAILEDне переподключаться: токен неверный
4007INVALID_SEQпереподключиться, новый IDENTIFY
4008RATE_LIMITEDподождать, RESUME
4009SESSION_TIMED_OUTпереподключиться, новый IDENTIFY
4010SESSION_REVOKEDне переподключаться: токен отозван или бот удалён
4011SESSION_EVICTEDкасается вкладок браузера; боту не встречается

События

Событие — одно из полей DispatchEvent, в JSON — в lowerCamelCase. Колонка «Боту»: да — приходит боту по его правам; по условию — только при условии в описании; нет — боту не отправляется.

Сессия

СобытиеБотуОписание
readyдаответ на IDENTIFY: sessionId, me, workspaces[], dms[], readStates
resumedдаответ на успешный RESUME: replayed — сколько событий переслано
readStateUpdateдасобственная отметка прочтения изменилась (с другого устройства или по PUT /api/rooms/{id}/read)

Пространства, участники, роли

СобытиеБотуОписание
workspaceCreate · workspaceUpdate · workspaceDeleteдабот вошёл в пространство · настройки изменились · пространство удалено или бот убран
workspaceMemberAdd · workspaceMemberUpdate · workspaceMemberRemoveдаучастники: вступил, изменились роли или никнейм, ушёл
workspaceBanAdd · workspaceBanRemoveпо условиюбаны — только с MANAGE_MEMBERS
roleCreate · roleUpdate · roleDeleteдароли пространства
badgeCreate · badgeUpdate · badgeDeleteдабиблиотека бейджей
workspaceAchievementsUpdateдакаталог ачивок пространства изменился
userUpdate · presenceUpdateдапрофиль и присутствие участника
botCreate · botUpdate · botDeleteпо условиюботы пространства — только с MANAGE_BOTS (или владельцу бота)
workspaceAppUpsert · workspaceAppDeleteнетвеб-приложения пространства — только людям
workspaceIdentityAccessUpdate—служебное событие SSO для сессий людей; если придёт — игнорируйте
billingUpdateнетоплата — только владельцу пространства

Комнаты и сообщения

СобытиеБотуОписание
roomCreate · roomUpdate · roomDelete · roomPermissionsUpdateдакомнаты, которые бот видит (или перестал видеть)
categoryCreate · categoryUpdate · categoryDeleteдакатегории комнат
messageCreate · messageUpdate · messageDeleteдасообщения видимых комнат и DM бота; у команды бота — message.command
messageReactionAdd · messageReactionRemoveдареакции
typingStartпо условию«печатает» — только в комнатах из SUBSCRIBE
botCallbackпо условиюнажатие кнопки — только боту-автору сообщения
dmCreateдановый DM с ботом
stickerPackCreate · stickerPackUpdate · stickerPackDeleteдастикерпаки пространства
readReceiptнетотметки «прочитано» людей — ботам не отправляются
roomNotificationUpdate · workspaceNotificationUpdate · dmStateUpdateнетнастройки уведомлений и архив DM — у ботов их нет

Голос и звонки

СобытиеБотуОписание
voiceStateUpdateдакто в какой голосовой комнате; пустой roomId — вышел
voiceStreamStart · voiceStreamStop · voiceCameraStop · voiceMovedдастримы, камера, перенос участника
voiceDisconnectedдабота отключили от голоса
roomRecordingдазапись встречи в комнате началась или закончилась
soundCreate · soundUpdate · soundDeleteдазвуки пространства
soundPlayпо условиютолько пока бот в звонке комнаты
sipCallUpdateдателефонный звонок из комнаты набран или сменил статус
roomAdmissionRequest · roomAdmissionDecidedпо условиюгость ждёт впуска · решение принято — тем, кто решает (INVITE_GUESTS в комнате)
callRing · callStateнетзвонки один на один — не для ботов
backgroundCreate · backgroundUpdate · backgroundDeleteнет*фоны камеры; у ботов нет камеры — игнорируйте

* Событие рассылается всему пространству и может прийти, но боту оно ни к чему.

Календарь

СобытиеБотуОписание
eventCreate · eventUpdate · eventDelete · eventRsvpдавстречи, где бот организатор, и встречи видимых комнат; внешние адреса — только если бот может менять встречу
roomEventActive · roomEventEndedдавстреча в комнате началась · закончилась
eventReminderнетнапоминание участнику — бот участником встреч не бывает

Доски и задачи

СобытиеБотуОписание
boardCreate · boardUpdate · boardDeleteдадоски — по VIEW_BOARD
boardCategoryCreate · boardCategoryUpdate · boardCategoryDeleteдакатегории досок
taskCreate · taskUpdate · taskDelete · taskActivityдазадачи и записи их журнала
taskChecklistUpdate · taskChecklistDeleteдачек-листы задач
boardRuleUpdate · boardRuleDeleteдаправила автоматизации доски
taskGitLinksUpdateдаGit-связи задачи
taskNoticeпо условиюуведомление человека о задаче — только боту, которого он выбрал

Прочее

СобытиеБотуОписание
notesCreate · notesUpdate · notesDeleteнетполки заметок — только людям
diskItemUpsert · diskItemRemoveнетДиск — у ботов пока нет доступа