umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
67 lines (66 loc) • 3.93 kB
TypeScript
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>;
}