umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
128 lines (127 loc) • 3.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.T_NONE = exports.T_SHARE_PHONE = exports.T_LOCATION_PICKER = exports.T_OPEN_URL = exports.T_REPLY = void 0;
exports.buttonProcessing = buttonProcessing;
const utils_1 = require("../Base/utils");
/**
* Тип кнопки для отправки ответа
*
* @readonly
*
* @example
* ```ts
* const viberButton = new ViberButton();
*
* // Создание кнопки-ответа
* const replyButton = getButton('Ответить', '', null, {
* ActionType: ViberButton.T_REPLY,
* ActionBody: 'custom_payload'
* });
* viberButton.buttons = [replyButton];
* ```
*/
exports.T_REPLY = 'reply';
/**
* Тип кнопки для открытия URL
*
* @readonly
*
* @example
* ```ts
* const viberButton = new ViberButton();
*
* // Создание кнопки-ссылки
* const linkButton = getButton('Открыть сайт', 'http://localhost', null, {
* ActionType: ViberButton.T_OPEN_URL,
* ActionBody: 'http://localhost'
* });
* viberButton.buttons = [linkButton];
* ```
*/
exports.T_OPEN_URL = 'open-url';
/**
* Тип кнопки для выбора локации
*
* @readonly
*
* @example
* ```ts
* const viberButton = new ViberButton();
*
* // Создание кнопки выбора локации
* const locationButton = getButton('Выбрать адрес', '', null, {
* ActionType: ViberButton.T_LOCATION_PICKER,
* ActionBody: 'location_payload'
* });
* viberButton.buttons = [locationButton];
* ```
*/
exports.T_LOCATION_PICKER = 'location-picker';
/**
* Тип кнопки для шаринга телефона
*
* @readonly
*
* @example
* ```ts
* const viberButton = new ViberButton();
*
* // Создание кнопки шаринга телефона
* const phoneButton = getButton('Поделиться телефоном', '', null, {
* ActionType: ViberButton.T_SHARE_PHONE,
* ActionBody: 'phone_payload'
* });
* viberButton.buttons = [phoneButton];
* ```
*/
exports.T_SHARE_PHONE = 'share-phone';
/**
* Тип кнопки без действия
*
* @readonly
*
* @example
* ```ts
* const viberButton = new ViberButton();
*
* // Создание информационной кнопки
* const infoButton = getButton('Информация', '', null, {
* ActionType: ViberButton.T_NONE,
* TextSize: 'small',
* TextColor: '#cccccc'
* });
* viberButton.buttons = [infoButton];
* ```
*/
exports.T_NONE = 'none';
/**
* Получение кнопок в формате Viber
* @param buttons Кнопки, которые необходимо отобразить
*/
function buttonProcessing(buttons) {
let object = null;
const buttonsResult = [];
(0, utils_1.getCorrectButtons)(buttons, 6).forEach((button) => {
let btn = {
Text: button.title,
};
if (button.url) {
btn.ActionType = exports.T_OPEN_URL;
btn.ActionBody = button.url;
}
else {
btn.ActionType = exports.T_REPLY;
btn.ActionBody = button.title;
}
btn = { ...btn, ...button.options };
buttonsResult.push(btn);
});
if (buttonsResult.length) {
object = {
DefaultHeight: true,
BgColor: '#FFFFFF',
Buttons: buttonsResult,
};
}
return object;
}