UNPKG

umbot

Version:

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

234 lines (233 loc) 7.93 kB
/** * Интерфейс, описывающий отправителя сообщения в Max App. */ export interface IMaxSender { /** * Уникальный идентификатор пользователя-отправителя. */ user_id: number; /** * Имя отправителя. */ first_name?: string; /** * Фамилия отправителя. */ last_name?: string; /** * Полное имя отправителя. */ name?: string; /** * Имя пользователя (никнейм) отправителя. */ username?: string; /** * Флаг, указывающий, является ли отправитель ботом. */ is_bot?: boolean; /** * Время последней активности отправителя (предположительно, в формате Unix timestamp). */ last_activity_time?: number; } /** * Интерфейс, описывающий вложение в сообщении Max App. */ export interface IMaxAttachment { /** * Тип вложения. */ type?: 'image' | 'inline_keyboard'; /** * Полезная нагрузка вложения, представленная в виде произвольного объекта. */ payload?: Record<string, unknown>; } /** * Интерфейс, описывающий тело сообщения в Max App. */ export interface IMaxMessageBody { /** * Уникальный идентификатор сообщения. */ mid: string; /** * Последовательный номер сообщения (в рамках диалога или сессии). */ seq: number; /** * Текст сообщения. */ text: string; /** * Вложения к сообщению. */ attachments?: IMaxAttachment; /** * Разметка текста (например, для выделения, ссылок). */ markup?: { /** * Тип разметки. */ type: string; /** * Индекс символа начала размеченной части текста (0-based). */ from?: number; /** * Длина размеченной части текста. */ length?: number; /** * URL, связанный с разметкой (например, для ссылки). */ url?: string; }; } /** * Интерфейс, описывающий полное сообщение в Max App. */ export interface IMaxMessage { /** * Информация об отправителе сообщения. */ sender: IMaxSender; /** * Информация о получателе сообщения (например, для личных сообщений). */ recipient?: { /** * ID чата. */ chat_id: number; /** * Тип чата. */ chat_type: 'chat'; /** * ID пользователя-получателя. */ user_id: number; }; /** * Временная метка сообщения (предположительно, в формате Unix timestamp). */ timestamp?: number; /** * Информация о пересланном или процитированном сообщении. */ link?: { /** * Тип связи: 'forward' - пересылка, 'reply' - ответ. */ type: 'forward' | 'reply'; /** * Отправитель пересланного/процитированного сообщения. */ sender: IMaxSender; /** * ID чата, откуда было переслано сообщение. */ chat_id: number; /** * Тело пересланного/процитированного сообщения. */ message: IMaxMessageBody; }; /** * Основное тело сообщения. */ body: IMaxMessageBody; /** * Статистика по сообщению. */ stat?: { /** * Количество просмотров сообщения. */ views: number; }; /** * URL, связанный с сообщением (например, если оно содержит ссылку). */ url?: string; } /** * Интерфейс, описывающий структуру содержимого обновления от Max App. * Представляет собой полный объект, получаемый от webhook`а. */ export interface IMaxRequestContent { /** * Тип обновления. */ update_type: 'message_created' | 'message_callback' | 'message_editing' | 'message_removed'; /** * Временная метка обновления (предположительно, в формате Unix timestamp). */ timestamp?: number; /** * Объект сообщения, связанного с обновлением. */ message: IMaxMessage; /** * Языковой стандарт (locale) пользователя, инициировавшего обновление. */ user_locale?: string; } /** * Интерфейс, описывающий кнопку в Max App. * Определяет тип, текст, полезную нагрузку и другие параметры кнопки. */ export interface IMaxButton { /** * Тип кнопки. * - 'message': Отправляет текстовое сообщение. * - 'link': Открывает указанный URL. * - 'callback': Отправляет payload на сервер. * - 'request_geo_location': Запрашивает геолокацию у пользователя. * - 'request_contact': Запрашивает контактные данные у пользователя. * - 'open_app': Открывает другое приложение Max App. */ type: 'message' | 'link' | 'callback' | 'request_geo_location' | 'request_contact' | 'open_app'; /** * Текст, отображаемый на кнопке. */ text: string; /** * Полезная нагрузка, отправляемая с кнопкой (например, при нажатии типа 'callback'). */ payload?: string; /** * Интент кнопки, влияющий на её визуальное оформление (например, цвет). */ intent?: 'default' | 'positive' | 'negative'; /** * URL, открываемый при нажатии кнопки типа 'link'. */ url?: string; /** * Флаг, указывающий, является ли кнопка "быстрой". * Быстрые кнопки могут исчезать после нажатия. */ quick?: boolean; /** * URL веб-приложения, открываемого при нажатии кнопки типа 'open_app'. */ web_app?: string; /** * ID контакта, используемый при нажатии кнопки типа 'request_contact'. */ contact_id?: number; } /** * Интерфейс, описывающий объект, содержащий массив кнопок Max App. * Используется для передачи коллекции кнопок в API. */ export interface IMaxButtonObject { /** * Массив кнопок Max App. */ buttons: IMaxButton[]; }