import { Bot, T_ALISA } from 'umbot';
const bot = new Bot(T_ALISA);
bot.initPlatformParams({
// Параметры платформы
welcome_text: 'Привет!', // Текст приветствия
help_text: 'Я умею...', // Текст помощи
});
bot.initAppConfig({
// Общие параметры
json: './data', // Директория для JSON данных
error_log: './logs', // Директория для логов
isLocalStorage: true, // Использование локального хранилища
});
bot.initTypeInGet(); // Установка типа платформы из get параметра запроса
bot.setPlatformParams({
yandex_token: 'YOUR_OAUTH_TOKEN',
y_isAuthUser: true, // Для работы с авторизацией
});
class AlisaController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
// Проверка авторизации
if (!this.userToken) {
this.isAuth = true;
this.text = 'Для продолжения необходима авторизация';
return;
}
// Работа с авторизованным пользователем
this.text = `Привет, ${this.userMeta?.first_name || 'пользователь'}!`;
this.tts = 'Привет! Рад вас видеть снова!';
// Добавление карточки
this.card.add('image_token', 'Добро пожаловать', 'Описание', 'Кнопка');
// Добавление кнопок
this.buttons.addBtn('Помощь').addBtn('Начать игру');
}
}
}
bot.setPlatformParams({
telegram_token: 'YOUR_BOT_TOKEN',
});
class TelegramController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я Telegram бот на umbot';
// Добавление inline кнопок
this.buttons
.addBtn('Веб-сайт', 'https://example.com')
.addBtn('Помощь', { command: 'help' });
// Отправка изображения
this.card.addImage('image_url', 'Описание изображения');
}
}
}
bot.setPlatformParams({
vk_token: 'YOUR_GROUP_TOKEN',
vk_confirmation_token: 'YOUR_CONFIRMATION_TOKEN',
vk_api_version: 'v5.131',
});
class VKController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я бот ВКонтакте';
// Добавление клавиатуры
this.buttons.addBtn('Меню').addBtn('Помощь').addBtn('О нас', 'https://vk.ru/group');
// Отправка карусели
this.card
.addImage('photo_token_1', 'Товар 1', '100 руб.')
.addImage('photo_token_2', 'Товар 2', '200 руб.');
}
}
}
bot.setPlatformParams({
marusia_token: 'YOUR_TOKEN',
isLocalStorage: true,
});
class MarusiaController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я навык для Маруси';
this.tts = 'Привет! Я готова помочь вам';
// Добавление карточки
this.card.addImage('image_token', 'Добро пожаловать', 'Выберите действие');
// Добавление кнопок
this.buttons.addBtn('Начать').addBtn('Помощь');
}
}
}
bot.setPlatformParams({
isLocalStorage: true,
});
class SmartAppController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я SmartApp на umbot';
// Добавление карточки
this.card.addImage('image_token', 'Добро пожаловать', 'Выберите действие');
// Добавление кнопок
this.buttons.addBtn('Начать').addBtn('Помощь');
}
}
}
bot.setPlatformParams({
viber_token: 'YOUR_TOKEN',
viber_sender: 'Bot Name',
viber_api_version: 1,
});
class ViberController extends BotController {
public action(intentName: string | null): void {
if (intentName === WELCOME_INTENT_NAME) {
this.text = 'Привет! Я Viber бот';
// Добавление клавиатуры
this.buttons
.addBtn('Меню')
.addBtn('Сайт', 'https://example.com')
.addBtn('Связаться с нами');
// Отправка Rich Media
this.card.addImage('image_token', 'Добро пожаловать', 'Выберите действие');
}
}
}
const bot = new Bot('user_application');
bot.run(CustomPlatformAdapter); // Задаем кастомный адаптен
import { TemplateTypeModel, Buttons } from 'umbot';
class CustomPlatformAdapter extends TemplateTypeModel {
/**
* Получение ответа, который отправится пользователю. В случае с Алисой, Марусей и Сбер, возвращается json. С остальными типами, ответ отправляется непосредственно на сервер.
*
* @return {Promise<Object|string>}
*/
public async getContext(): Promise<Object | string> {
return {
text: this.controller.text,
tts: this.controller.tts,
buttons: this.controller.buttons.getButtons(Buttons.T_ALISA_BUTTONS), // ипользуем формат для кнопок алисы
};
}
/**
* Инициализация основных параметров. В случае успешной инициализации, вернет true, иначе false.
*
* @param {IVkRequestContent|string} query Запрос пользователя.
* @param {BotController} controller Ссылка на класс с логикой навык/бота.
* @return Promise<boolean>
* @see TemplateTypeModel.init() Смотри тут
*/
public async init(
query: string | IVkRequestContent,
controller: BotController,
): Promise<boolean> {
let content;
if (typeof query === 'string') {
content = JSON.parse(query);
} else {
content = { ...query };
}
if (!this.controller) {
this.controller = controller;
}
this.controller.requestObject = content;
// Заполняем контроллер пришедшими данными
const object = content.object;
this.controller.userId = object.userIf;
this._appConfig.platformParams.user_id = this.controller.userId;
this.controller.userCommand = object.text.toLowerCase().trim();
this.controller.originalUserCommand = object.text.trim();
this.controller.messageId = object.message.id;
this.controller.payload = object.message.payload || null;
return true;
}
}