umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
65 lines (64 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buttonProcessing = buttonProcessing;
const index_1 = require("../../../index");
const utils_1 = require("../Base/utils");
/**
* Создание кнопки в формате Алисы
*/
function _getButton(button, isCard, appContext) {
const title = index_1.Text.resize(button.title || '', 64);
if (title) {
let object;
if (isCard) {
object = {
text: title,
};
}
else {
object = {
title,
hide: button.hide,
};
}
if (button.payload) {
const payloadStr = typeof button.payload === 'string'
? button.payload
: JSON.stringify(button.payload);
if (Buffer.byteLength(payloadStr, 'utf8') < 4096) {
object.payload = button.payload;
}
else {
appContext?.logWarn(`[Alisa] Payload кнопки превышает 4096 байт (${Buffer.byteLength(payloadStr, 'utf8')} байт). Он будет проигнорирован.`);
}
}
if (button.url) {
object.url = index_1.Text.resize(button.url, 1024);
}
return object;
}
return null;
}
/**
* Получение кнопок в формате Алисы
* @param buttons Кнопки, которые необходимо отобразить
* @param isCard флаг принадлежности кнопок к карточке
* @param appContext Контекст приложения, нужен для логирования ошибки
*/
function buttonProcessing(buttons, isCard = false, appContext) {
const objects = [];
if (isCard) {
if (buttons.length) {
return _getButton(buttons[0], isCard, appContext);
}
}
else {
(0, utils_1.getCorrectButtons)(buttons).forEach((button) => {
const object = _getButton(button, isCard, appContext);
if (object) {
objects.push(object);
}
});
}
return objects;
}