umbot
    Preparing search index...

    Interface IPlatformAdapter<TQuery>

    Адаптер платформы (Telegram, Алиса, VK и др.).

    Обеспечивает унификацию обработки запросов от разных платформ. Реализуется как плагин (IPlugin) и регистрируется в боте.

    interface IPlatformAdapter<TQuery = any> {
        getContent: (
            controller: BotController,
            stateData?: Record<string, unknown> | null,
        ) => string | object | Promise<string | object>;
        getLocalStorage: <TStorageResult = unknown>(
            controller: BotController,
        ) => TStorageResult | Promise<TStorageResult>;
        getProcessingTime: (controller: BotController) => number;
        getQueryExample: (
            query: string,
            userId: string,
            count: number,
            state: string | Record<string, unknown>,
        ) => Record<string, unknown>;
        getRatingContext: (
            controller: BotController,
        ) => string | object | Promise<string | object>;
        init: (appContext: AppContext<IDatabaseInfo>) => void;
        isLocalStorage: (controller: BotController) => boolean;
        isPlatformOnQuery: (
            query: TQuery,
            headers?: Record<string, unknown>,
        ) => boolean;
        isVoice: boolean;
        limit: number | null;
        platformName: string;
        setLocalStorage: <TStorageData>(
            data: TStorageData,
            controller: BotController,
        ) => void | Promise<void>;
        setQueryData: (
            query: TQuery,
            controller: BotController,
        ) => boolean | Promise<boolean>;
        updateTimeStart: (controller: BotController) => void;
        send(
            userId: string | number,
            controllerOrText: string | BotController<IUserData, IPlatformData>,
        ): unknown;
    }

    Type Parameters

    • TQuery = any

    Hierarchy (View Summary)

    Implemented by

    Index

    Properties

    getContent: (
        controller: BotController,
        stateData?: Record<string, unknown> | null,
    ) => string | object | Promise<string | object>

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

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

    Type Declaration

      • (
            controller: BotController,
            stateData?: Record<string, unknown> | null,
        ): string | object | Promise<string | object>
      • Parameters

        • controller: BotController

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

        • OptionalstateData: Record<string, unknown> | null

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

        Returns string | object | Promise<string | object>

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

    getLocalStorage: <TStorageResult = unknown>(
        controller: BotController,
    ) => TStorageResult | Promise<TStorageResult>

    Получает данные из локального хранилища платформы.

    Type Declaration

      • <TStorageResult = unknown>(
            controller: BotController,
        ): TStorageResult | Promise<TStorageResult>
      • Type Parameters

        • TStorageResult = unknown

        Parameters

        • controller: BotController

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

        Returns TStorageResult | Promise<TStorageResult>

        данные, сохранённые ранее

    getProcessingTime: (controller: BotController) => number

    Возвращает время обработки запроса в миллисекундах.

    Основано на разнице между updateTimeStart и текущим временем.

    Type Declaration

      • (controller: BotController): number
      • Parameters

        • controller: BotController

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

        Returns number

        время обработки в мс

    getQueryExample: (
        query: string,
        userId: string,
        count: number,
        state: string | Record<string, unknown>,
    ) => Record<string, unknown>

    Генерирует пример запроса для тестирования.

    Используется в инструментах отладки и авто-тестах.

    Type Declaration

      • (
            query: string,
            userId: string,
            count: number,
            state: string | Record<string, unknown>,
        ): Record<string, unknown>
      • Parameters

        • query: string

          текст запроса

        • userId: string

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

        • count: number

          счётчик для уникальности

        • state: string | Record<string, unknown>

          состояние сессии

        Returns Record<string, unknown>

        объект, имитирующий входящий запрос платформы

    getRatingContext: (
        controller: BotController,
    ) => string | object | Promise<string | object>

    Формирует контекст для отправки рейтинга (если поддерживается платформой).

    Используется только на платформах с поддержкой рейтинга (например, Сбер SmartApp). Если рейтинг не поддерживается — метод может не реализовываться или возвращать пустой объект.

    Type Declaration

      • (controller: BotController): string | object | Promise<string | object>
      • Parameters

        • controller: BotController

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

        Returns string | object | Promise<string | object>

        данные для отправки рейтинга

    init: (appContext: AppContext<IDatabaseInfo>) => void

    Метод инициализации плагина. Вызывается один раз при подключении через bot.use().

    Type Declaration

      • (appContext: AppContext<IDatabaseInfo>): void
      • Parameters

        • appContext: AppContext<IDatabaseInfo>

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

        Returns void

    isLocalStorage: (controller: BotController) => boolean

    Указывает, поддерживает ли платформа локальное хранилище.

    Type Declaration

      • (controller: BotController): boolean
      • Parameters

        • controller: BotController

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

        Returns boolean

        true, если локальное хранилище доступно

    isPlatformOnQuery: (query: TQuery, headers?: Record<string, unknown>) => boolean

    Определяет, принадлежит ли входящий запрос данной платформе.

    Метод проверяет заголовки или структуру тела запроса. Используется для маршрутизации входящих запросов между адаптерами.

    Type Declaration

      • (query: TQuery, headers?: Record<string, unknown>): boolean
      • Parameters

        • query: TQuery

          входящий запрос (тело или объект)

        • Optionalheaders: Record<string, unknown>

          HTTP-заголовки (если есть)

        Returns boolean

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

    // Telegram проверяет наличие заголовка 'X-Telegram-Bot-Api-Secret-Token'
    isPlatformOnQuery(query, headers) {
    return headers?.['x-telegram-bot-api-secret-token'] === this.secret;
    }
    isVoice: boolean

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

    limit: number | null

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

    platformName: string

    Уникальное имя платформы (например, 'telegram', 'alisa').

    setLocalStorage: <TStorageData>(
        data: TStorageData,
        controller: BotController,
    ) => void | Promise<void>

    Сохраняет данные в локальное хранилище платформы.

    Type Declaration

      • <TStorageData>(
            data: TStorageData,
            controller: BotController,
        ): void | Promise<void>
      • Type Parameters

        • TStorageData

        Parameters

        • data: TStorageData

          данные для сохранения

        • controller: BotController

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

        Returns void | Promise<void>

    setQueryData: (
        query: TQuery,
        controller: BotController,
    ) => boolean | Promise<boolean>

    Инициализирует данные запроса в контроллере приложения.

    Парсит входящий запрос и заполняет controller.queryData, controller.user и другие поля. Вызывается после подтверждения, что запрос принадлежит этой платформе.

    Type Declaration

      • (query: TQuery, controller: BotController): boolean | Promise<boolean>
      • Parameters

        • query: TQuery

          входящий запрос

        • controller: BotController

          контроллер приложения для текущего запроса

        Returns boolean | Promise<boolean>

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

    updateTimeStart: (controller: BotController) => void

    Устанавливает время начала обработки запроса.

    Используется для измерения времени отклика (processingTime).

    Type Declaration

    Methods

    • Отправка текста пользователю Этот метод используется для активных рассылок — когда бот инициирует диалог первым (например, уведомление). В данном методе необходимо поддержать отправку результата пользователю. Это необходимо для того, чтобы само приложение смогло продолжить диалог.

      Если ваша платформа не поддерживает отправку сообщений без входящего запроса (как Алиса), оставьте реализацию пустой или верните заглушку.

      Parameters

      • userId: string | number

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

      • controllerOrText: string | BotController<IUserData, IPlatformData>

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

      Returns unknown