UNPKG

umbot

Version:

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

92 lines (91 loc) 4.64 kB
import { IButtonOptions } from './interfaces/IButton'; import { AppContext } from '../../core'; /** * Базовый тип для задания placeholder для кнопок */ export type TBtnPayload = Record<string, unknown> | string | null; /** * Интерфейс для кнопок */ export interface IButtonType<TButtonPayload = TBtnPayload> { /** * Тип кнопки. * Определяет поведение и внешний вид кнопки на разных платформах. */ type: string | null; /** * Текст, отображаемый на кнопке. */ title: string | null; /** * URL для перехода при нажатии на кнопку. * Для кнопок-ссылок обязательный параметр. */ url?: string | null; /** * Произвольные данные, отправляемые при нажатии на кнопку. * Используются для передачи дополнительной информации в обработчике. */ payload: TButtonPayload | null; /** * Флаг, определяющий отображение кнопки как сайджеста. * true - интерактивная кнопка * false - кнопка-ссылка (сайджест) */ hide: boolean; /** * Дополнительные параметры кнопки. * Могут включать специфичные для платформы настройки. */ options: IButtonOptions; } /** * Возвращает кнопку в виде сайджеста (ссылки под текстом). * * @param {AppContext} appContext Контекст приложения * @param {string} title Текст кнопки * @param {string} [url=''] URL для перехода (должен начинаться с http:// или https://) * @param {TButtonPayload} [payload=null] Дополнительные данные для обработки нажатия * @param {IButtonOptions} [options={}] Дополнительные параметры: * - utmSource: источник перехода * - utmMedium: тип рекламного канала * - utmCampaign: название рекламной кампании * * @example * ```ts * // Простая ссылка * const button1 = getButton('Перейти на сайт', 'http://localhost'); * * // Ссылка с UTM-метками * const button2 = getButton('Купить', 'http://localhost/product', null, { * utmSource: 'bot', * utmMedium: 'button', * utmCampaign: 'spring_sale' * }); * * // Ссылка с дополнительными данными * const button3 = getButton('Подробнее', 'http://localhost/article', { * action: 'read', * article_id: 123 * }); * ``` * * @returns {IButtonType | null} Возвращается объект, если кнопка добавлена, и null в случае, если переданы некорректные настройки для кнопки */ export declare function getLinkButton<TButtonPayload = TBtnPayload>(appContext: AppContext, title: string | null, url?: string | null, payload?: TButtonPayload | null, options?: IButtonOptions): IButtonType<TButtonPayload> | null; /** * Возвращает кнопку в виде интерактивной кнопки. * * @param {AppContext} appContext Контекст приложения * @param {string} title Текст кнопки * @param {string} [url=''] URL для перехода * @param {TButtonPayload} [payload=null] Дополнительные данные для обработки нажатия. * Может быть строкой или объектом. * @param {IButtonOptions} [options={}] Дополнительные параметры: * - utmSource: источник перехода * - utmMedium: тип рекламного канала * - utmCampaign: название рекламной кампании * * @returns {IButtonType | null} Возвращается объект, если кнопка добавлена, и null в случае, если переданы некорректные настройки для кнопки. */ export declare function getButton<TButtonPayload = TBtnPayload>(appContext: AppContext, title: string | null, url?: string | null, payload?: TButtonPayload | null, options?: IButtonOptions): IButtonType<TButtonPayload> | null;