Перейти к содержимому
Calab

Боты

Бот — такой же участник, как все

Создайте бота в настройках пространства и выдайте ему роль — он работает через тот же API, что и приложение: чаты, задачи, календарь, участники и голос.

Права — через роли, как у людей: бот видит только те комнаты, куда его пустили.

Боты

  • Чат

    Читает и пишет сообщения во всех доступных комнатах и личных сообщениях, отвечает, ставит реакции, отправляет файлы и стикеры. События приходят в реальном времени по WebSocket.

  • Задачи

    Создаёт и меняет задачи на досках, назначает исполнителей, комментирует и ищет. Доска видна боту так же, как человеку с его ролью.

  • Голос

    Заходит в голосовую комнату через LiveKit: слышит участников и говорит сам — озвучка текста, эхо, музыка, запись. На Node, Python или Go.

  • Календарь

    Назначает и переносит встречи, смотрит «свободно/занято» и подбирает время для нескольких человек. Бот — организатор, письма уходят «от имени бота».

  • Участники

    Открывает профиль участника с его открытыми задачами, переименовывает, приглашает по ссылке и почте, выдаёт бейджи — в рамках прав роли.

  • Запись встреч

    Запускает и останавливает запись голосовой комнаты — транскрипт и саммари придут карточкой в чат. Нужно право «Записи».

  • Команды и кнопки

    Регистрирует /команды, которые композер подсказывает по «/», и прикрепляет кнопки под сообщениями — нажатие приходит боту событием.

  • Webhook

    Без постоянного соединения: события приходят POST-запросом с подписью HMAC и повторами при сбоях. Удобно для serverless.

@calaba/bot-sdk

Бот планёрки на TypeScript

import { Bot } from '@calaba/bot-sdk';const bot = new Bot(process.env.BOT_TOKEN, {  server: 'https://app.calab.io',});await bot.commands([{ name: 'standup', description: 'Start' }]);// "/standup" → a message with a buttonbot.on('command', (c) =>  bot.send(c.message.roomId, {    text: 'Stand-up time. Record it?',    inlineKeyboard: { rows: [{ buttons: [      { id: 'rec', label: 'Record', data: 'standup' },    ] }] },  }),);// pressed → start the meeting recordingbot.on('callback', (cb) => {  if (cb.buttonId === 'rec') bot.recording.start(cb.roomId);});await bot.start();
Эхо-бот, голосовые примеры и слушатель на Python — в examples/bots. Полный справочник эндпоинтов и событий — в документации.

Боты

Первый бот за 5 минут

Токен, REST, события, webhook, кнопки, голос, лимиты и коды ошибок — в документации.