UNPKG

umbot

Version:

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

65 lines (64 loc) 2.19 kB
"use strict"; 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; }