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