umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
92 lines (91 loc) • 4.64 kB
TypeScript
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;