Руководство по плагинам каналов
Создайте собственный канал для Велеса за три шага: создание подкласса, упаковка, установка.Как это работает
Велес обнаруживает плагины каналов через точки входа Python. При запускеveles gateway сканируются:
- Встроенные каналы в
veles/channels/ - Внешние пакеты, зарегистрированные в группе entry point
veles.channels
"enabled": true, канал инициализируется и запускается.
Быстрый старт
Мы создадим минимальный канал веб-хука, который получает сообщения через HTTP POST и отправляет ответы обратно.Структура проекта
1. Создание канала
2. Регистрация Entry Point
webhook) становится именем раздела конфигурации. Значение указывает на ваш подкласс BaseChannel.
3. Установка и настройка
~/.veles/config.json:
4. Запуск и тестирование
send().
API BaseChannel
Обязательные методы (абстрактные)
| Метод | Описание |
|---|---|
async start() | Должен блокировать выполнение. Подключение к платформе, прослушивание сообщений, вызов _handle_message(). |
async stop() | Установка self._running = False и очистка ресурсов. Вызывается при остановке gateway. |
async send(msg: OutboundMessage) | Доставка сообщения на платформу. |
Базовые возможности
| Метод / Свойство | Описание |
|---|---|
_handle_message(sender_id, chat_id, content, media?, metadata?, session_key?) | Вызывайте при получении сообщения. Проверяет доступ и публикует в шину. |
is_allowed(sender_id) | Проверка по списку config["allowFrom"]. |
default_config() (classmethod) | Возвращает дефолтный конфиг для Veles onboard. |
transcribe_audio(file_path) | Транскрибация аудио через Groq Whisper (если настроено). |
is_running | Возвращает состояние self._running. |
Типы сообщений
Конфигурация
Ваш канал получает конфиг как обычныйdict. Доступ к полям через .get():
allowFrom обрабатывается автоматически в _handle_message().
Переопределите default_config(), чтобы Veles onboard автоматически заполнил config.json:
Соглашение об именовании
| Объект | Формат | Пример |
|---|---|---|
| Пакет PyPI | veles-channel-{name} | veles-channel-webhook |
| Ключ Entry point | {name} | webhook |
| Раздел конфига | channels.{name} | channels.webhook |
| Пакет Python | veles_channel_{name} | veles_channel_webhook |
