Быстрый старт

Полный минимальный путь

От создания бота до первого интерактивного ответа потребуется восемь шагов.

  1. Создать бота.
  2. Получить токен.
  3. Настроить webhook.
  4. Проверить подпись.
  5. Получить /start.
  6. Отправить ответ.
  7. Добавить кнопку.
  8. Протестировать в Key Chat.

Создать бота

Откройте раздел «Боты» в Key Chat, нажмите «Добавить бота» и задайте имя, username и описание. Username должен заканчиваться на _bot.

Получить токен

После создания выпустите токен. Он показывается только один раз — храните его как секрет и никогда не передавайте клиентскому приложению.

Настроить webhook

В редакторе созданного бота укажите публичный HTTPS URL и сохраните настройки. Key Chat покажет signing secret вида kcwhsec_… только один раз — скопируйте его на сервер в KEYCHAT_WEBHOOK_SECRET.

Key Chat отправляет события минимум один раз, поэтому обработчик должен дедуплицировать их по id. Кнопка «Сменить секрет» немедленно отзывает старый секрет; обычное включение или выключение webhook его не меняет.

Проверить подпись

Проверяйте X-KeyChat-Timestamp и HMAC SHA-256 из X-KeyChat-Signature до разбора и обработки события.

Получить /start

После добавления бота приходит событие message.created с командой /start и новым session_id.

Отправить ответ

Отправьте сообщение через Runtime API, используя chat_id из события и токен бота.

curl -X POST https://chat.wokey.pro/_keychat/v1/bot/messages \
  -H "Authorization: Bearer $KEYCHAT_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"chat_id":"<chat_id>","content":{"text":"Привет!"},"idempotency_key":"hello-001"}'

Добавить кнопку

Передайте keyboard или menu как двумерный массив строк. В строке может быть до десяти кнопок.

Протестировать в Key Chat

Добавьте бота в свой список чатов. Для проверки платформы также доступен @echo_bot — он возвращает каждое полученное сообщение.

Практика с SDK

Начинайте с минимального обработчика message.created и добавляйте остальные события постепенно. Храните bot token и webhook secret в переменных окружения, а публичный webhook проверяйте тестовым событием из редактора бота.

Первый успешный ответ должен использовать chat_id из входящего события. Не сохраняйте display_name или username как ключи: для связей используйте UUID и session_id.

Примеры использования

await bot.sendMessage({
  chat_id: chatId,
  content: { text: '**Ready**', format: 'markdown' },
  idempotency_key: crypto.randomUUID()
});
© 2026. Key Chat.