umbot
    Preparing search index...

    Class BasePlatformAdapter<TQuery>Abstract

    Базовый класс для создания адаптера собственной платформы (Telegram, WhatsApp, Slack и др.).

    Чтобы подключить свою платформу, унаследуйтесь от этого класса и реализуйте все абстрактные методы. Адаптер автоматически зарегистрируется в системе при подключении через bot.use(new MyPlatformAdapter()).

    === Обязательные методы ===

    • isPlatformOnQuery — определяет, относится ли запрос к вашей платформе
    • setQueryData — парсит запрос и заполняет controller
    • getContent — формирует ответ в формате платформы

    === Опциональные ===

    • getQueryExample — генерирует пример запроса необходимого для тестов
    • isLocalStorage, getLocalStorage, setLocalStorage — если платформа поддерживает сохранение состояния
    • soundProcessing — кастомная обработка TTS/звуков (для голосовых платформ, или отправка аудиофайла в боте).

    Type Parameters

    • TQuery = unknown

    Hierarchy (View Summary)

    Implements

    Index

    Constructors

    Properties

    _platformOptions?: IAdapterOptions
    _token?: string
    appContext?: AppContext<unknown>

    Контекст приложения

    isVoice: boolean = true

    Определяет тип платформы(голосовая или чат-бот)

    limit: number | null = null

    Определят лимит платформы. В значение указывается количество запросов, которое можно отправить платформе за 1 секунду. В случае если у платформы нет ограничений, можно указать 0 или null. По умолчанию null

    MAX_TIME_REQUEST: number = 2900

    Максимальное время ответа навыка в миллисекундах при превышении этого времени, будет отправлена ошибка

    platformName: string = 'unknown'

    Имя платформы

    WARMING_TIME_REQUEST: number = 2000

    Время ответа навыка в миллисекундах при превышении этого времени, будет отправлено предупреждение

    Methods

    • Protected

      Инициализирует TTS (Text-to-Speech) в контроллере. Обрабатывает звуки и стандартные звуковые эффекты

      Parameters

      Returns Promise<void>

    • При превышении установленного времени исполнения, пишет информацию в лог После вызова getContent() автоматически проверяется время выполнения. Если оно превышает 2000 мс — пишется warning, если >2900 мс — ошибка.

      Parameters

      Returns void

    • Формирует тело ответа для отправки пользователю.

      Возвращает платформо-специфичный ответ (например, JSON для Алисы). Для платформ, которые отправляют ответ напрямую (например, Telegram через sendMessage), метод может возвращать { ok: true } или аналог.

      Parameters

      • controller: BotController

        контроллер с готовым ответом

      • OptionalstateData: Record<string, unknown> | null

        данные для локального хранилища

      Returns TContent

      ответ в формате, понятном платформе

    • Возвращает демо результат запроса, который будет приходить от платформы. Используется только при локальном тестировании. Необходимо указывать для того, чтобы можно было корректно проверить работоспособность приложения.

      Обязательно определите метод, ели планируется тестирования приложения через инструменты предоставляемые платформой. Это существенно упростит процесс разработки приложения.

      Parameters

      • query: string

        Запрос пользователя

      • userId: string

        Идентификатор пользователя

      • count: number

        Порядковый номер запроса

      • state: string | Record<string, unknown>

        Данные из локального хранилища

      Returns Record<string, unknown>

    • Инициализация адаптера. Определять не обязательно. Стоит указывать в случаях, когда нужно выполнить доп логику, например указать токены или писать какую-то статистику по использованию.

      Parameters

      Returns void

    • Возвращает признак того, соответствует ли запрос текущей платформе или нет

      Parameters

      • query: TQuery

        Запрос, который пришел в приложение

      • Optionalheaders: Record<string, unknown>

        Заголовок с которым был отправлен запрос

      Returns boolean

      true, если запрос относится к этой платформе, иначе false

      isPlatformOnQuery(query, headers) {
      return headers?.['x-telegram-bot-api-secret-token'] === this._token;
      }
      isPlatformOnQuery(query) {
      return typeof query === 'object' && query.meta?.session_id;
      }
    • Отправка текста пользователю Этот метод используется для активных рассылок — когда бот инициирует диалог первым (например, уведомление). В методе реализована механика преобразования текстового значения controllerOrText в контроллер, а также базовый механизм для отправки ответа.

      Переопределять данный метод не рекомендуется. Переопределить стоит только в том случае, если по каким-то технических условиям текущая реализация метода вам не подходит.

      Если платформа не поддерживает возможность начать диалог самостоятельно, то можно оставить метод пустым, либо вывести любую заглушку.

      Parameters

      • userId: string | number

        Ид пользователя, которому нужно отправить сообщение

      • controllerOrText: string | BotController<IUserData, IPlatformData>

        Контроллер приложения или текст. Если необходимо отправить просто текст, можно передать строку, в случае, если необходимо передать картинку звук и тд, то необходимо корректно заполнить контроллер.

      Returns boolean | TContent

    • Парсит входящий запрос и заполняет контроллер.

      Обязательно установите:

      • controller.text — текст сообщения пользователя
      • controller.userId — уникальный ID пользователя
      • controller.platform = this.platformName

      Опционально:

      • controller.intent — если платформа присылает интент
      • controller.entities — извлечённые сущности
      • controller.session — данные сессии

      Parameters

      • query: TQuery

        Запрос от платформы

      • controller: BotController

        Контроллер приложения

      Returns boolean | Promise<boolean>

      false, если запрос повреждён или не может быть обработан; иначе true

    • Дополнительная обработка для звуков. В данном методе стоит реализовать логику, с помощью которой будут наложены дополнительные эффекты для озвучивания текста пользователю

      Parameters

      Returns void

    • Флаг, указывающий, что платформа голосовая (например, Алиса, Маруся).

      Returns boolean