UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

67 lines (66 loc) 3.93 kB
import { BotController, IRequestSend } from '../../../index'; import { BasePlatform } from '../Base/Base'; import { ISberSmartAppWebhookRequest, ISberSmartAppWebhookResponse } from './interfaces/ISmartAppPlatform'; /** * Адаптер, обеспечивающий полную поддержку платформы Салют от Сбер(SmartApp). Позволяет разрабатывать навыки для "Салют"(SmartApp) на TypeScript с использованием всего функционала платформы: от обработки голосовых запросов до работы с карточками и кнопками. * * Этот адаптер автоматически обрабатывает входящие webhook`и от SmartApp, * преобразует их в унифицированный формат фреймворка и формирует ответ, * совместимый с требованиями платформы. Подключается одной строкой и * не мешает работе других адаптеров (например, для Telegram или VK). * * Поддерживает: * - голосовые и текстовые запросы; * - карточки, кнопки, TTS-эффекты; * * Подключается как любой другой адаптер: `bot.use(new SmartAppAdapter(token))`. * Несколько адаптеров могут работать одновременно — система сама выберет подходящий * на основе заголовков и структуры входящего запроса. * @example * // Простейший навык, который отвечает на приветствие * import { Bot } from 'umbot'; * import { SmartAppAdapter } from 'umbot/plugins'; * * const bot = new Bot() * .use(new SmartAppAdapter('YOUR_SMARTAPP_TOKEN')) * .addCommand('start', ['привет'], (_text, ctx) => { * ctx.text = 'Привет! Я твой первый навык для SmartApp'; * }); * * bot.start('localhost', 3000); * * @see Bot * @see BotController * @see BasePlatform */ export declare class SmartAppAdapter extends BasePlatform<string | ISberSmartAppWebhookRequest> { #private; platformName: string; isPlatformOnQuery(query: ISberSmartAppWebhookRequest, headers?: Record<string, unknown>): boolean; setQueryData(query: ISberSmartAppWebhookRequest, controller: BotController): boolean; getContent(controller: BotController): ISberSmartAppWebhookResponse; /** * Формирует ответ с оценкой навыка * @returns {Promise<ISberSmartAppWebhookResponse>} Объект ответа для webhook`а */ getRatingContext(controller: BotController): ISberSmartAppWebhookResponse; /** * Получает данные пользователя из хранилища * @returns {Promise<unknown | string>} Данные пользователя или строка с ошибкой * @protected */ protected _getUserData(controller: BotController): Promise<unknown>; /** * Сохраняет данные пользователя в хранилище */ protected _setUserData(data: unknown, controller: BotController): Promise<IRequestSend<unknown>>; setLocalStorage(data: unknown, controller: BotController): Promise<void>; /** * Получает данные из локального хранилища * @returns Данные из хранилища или строка с ошибкой */ getLocalStorage<TStorageResult = unknown>(controller: BotController): Promise<TStorageResult>; isLocalStorage(): boolean; send(): boolean; getQueryExample(query: string, userId: string, count: number): Record<string, unknown>; }