umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
373 lines (372 loc) • 9.96 kB
TypeScript
import { IViberButton, IViberButtonObject } from '../../Viber/interfaces/IViberPlatform';
/**
* Интерфейс с результатом выполнения запроса к API Viber
*
* @example
* ```ts
* // Успешный ответ
* const successResponse: IViberApi = {
* status: 0,
* status_message: "ok"
* };
*
* // Ответ с ошибками
* const errorResponse: IViberApi = {
* status: 1,
* status_message: "error",
* failed_list: ["user1", "user2"]
* };
* ```
*/
export interface IViberApi {
/**
* Статус сообщения
* Описание результата выполнения запроса
*/
status_message?: string;
/**
* Список получателей, которым не удалось отправить сообщение
* Массив идентификаторов пользователей
*/
failed_list?: string[];
/**
* Результат действия
* 0 - успешно, 1 - ошибка
*/
status?: number;
}
/**
* Интерфейс с информацией о пользователе Viber
*
* @example
* ```ts
* const userInfo: IViberUserInfo = {
* id: "123456789",
* name: "John Doe",
* avatar: "http://localhost/avatar.jpg",
* country: "US",
* language: "en",
* primary_device_os: "iOS 15.0",
* api_version: 8,
* viber_version: "12.0.0",
* device_type: "iPhone"
* };
* ```
*/
export interface IViberUserInfo {
/**
* Уникальный идентификатор пользователя Viber
*/
id: string;
/**
* Имя пользователя Viber
*/
name?: string;
/**
* URL-адрес аватара пользователя
*/
avatar: string;
/**
* Код страны пользователя
* ISO 3166-1 alpha-2 код страны
*/
country?: string;
/**
* Язык телефона пользователя.
* Будет возвращен в соответствии с языком устройства
*/
language?: string;
/**
* Тип операционной системы и версия основного устройства пользователя
*/
primary_device_os: string;
/**
* Версия API Viber
*/
api_version: number;
/**
* Версия Viber, установленная на основном устройстве пользователя
*/
viber_version: string;
/**
* Мобильный код страны
*/
mss?: number;
/**
* Код мобильной сети
*/
mnc?: number;
/**
* Тип устройства пользователя
*/
device_type: string;
}
/**
* Интерфейс с информацией об отправителе сообщения
*
* @example
* ```ts
* const sender: IViberSender = {
* name: "My Bot",
* avatar: "http://localhost/bot-avatar.jpg"
* };
* ```
*/
export interface IViberSender {
/**
* Имя отправителя для отображения
* Максимум 28 символов
*/
name: string;
/**
* URL-адрес аватара отправителя
* Размер аватара должен быть не более 100 Кб. Рекомендуется 720x720
*/
avatar: string;
}
/**
* Интерфейс с информацией о пользователе, полученной через API
*
* @example
* ```ts
* const userDetails: IViberGetUserDetails = {
* status: 0,
* status_message: "ok",
* message_token: 123456789,
* user: {
* id: "123456789",
* name: "John Doe",
* avatar: "http://localhost/avatar.jpg",
* primary_device_os: "iOS 15.0",
* api_version: 8,
* viber_version: "12.0.0",
* device_type: "iPhone"
* }
* };
* ```
*/
export interface IViberGetUserDetails extends IViberApi {
/**
* Уникальный идентификатор сообщения
*/
message_token: number;
/**
* Информация о пользователе
*/
user: IViberUserInfo;
}
/**
* Интерфейс с параметрами настройки webhook`а
*
* @example
* ```ts
* const webhookParams: IViberWebhookParams = {
* url: "http://localhost/webhook",
* event_types: ["message", "delivered", "seen"],
* send_name: true,
* send_photo: true
* };
* ```
*/
export interface IViberWebhookParams {
/**
* URL для получения уведомлений
*/
url?: string;
/**
* Типы событий для получения уведомлений
*/
event_types?: string[];
/**
* Отправлять имя пользователя в уведомлениях
*/
send_name?: boolean;
/**
* Отправлять фото пользователя в уведомлениях
*/
send_photo?: boolean;
}
/**
* Интерфейс с параметрами для отправки Rich Media сообщения
*
* @example
* ```ts
* const richMediaParams: IViberRichMediaParams = {
* receiver: "123456789",
* type: "rich_media",
* rich_media: {
* Type: "rich_media",
* ButtonsGroupColumns: 6,
* ButtonsGroupRows: 7,
* BgColor: "#FFFFFF",
* Buttons: [
* {
* Columns: 6,
* Rows: 3,
* Text: "Button 1",
* ActionType: "reply",
* ActionBody: "button1"
* }
* ]
* }
* };
* ```
*/
export interface IViberRichMediaParams {
/**
* Идентификатор получателя
*/
receiver?: string;
/**
* Тип сообщения
*/
type?: string;
/**
* Параметры Rich Media
*/
rich_media?: {
/**
* Тип Rich Media
*/
Type: string;
/**
* Количество колонок в группе кнопок
*/
ButtonsGroupColumns: number;
/**
* Количество строк в группе кнопок
*/
ButtonsGroupRows: number;
/**
* Цвет фона
*/
BgColor: string;
/**
* Массив кнопок
*/
Buttons: IViberButton[];
};
}
/**
* Интерфейс с параметрами для отправки сообщения
*
* @example
* ```ts
* // Текстовое сообщение
* const textMessage: IViberParams = {
* receiver: "123456789",
* type: "text",
* text: "Hello, world!"
* };
*
* // Сообщение с изображением
* const imageMessage: IViberParams = {
* receiver: "123456789",
* type: "picture",
* media: ".../image.jpg",
* thumbnail: "http://localhost/thumb.jpg",
* text: "Check out this image!"
* };
*
* // Сообщение с контактом
* const contactMessage: IViberParams = {
* receiver: "123456789",
* type: "contact",
* contact: {
* name: "John Doe",
* phone_number: "+1234567890"
* }
* };
* ```
*/
export interface IViberParams {
/**
* Уникальный идентификатор пользователя Viber
*/
receiver?: string;
/**
* Тип сообщения
* Доступные типы: text, picture, video, file, location, contact, sticker, carousel content, url
*/
type?: string;
/**
* Информация об отправителе
*/
sender?: IViberSender;
/**
* Данные для отслеживания.
* Разрешает учетной записи отслеживать сообщения и ответы пользователя
*/
tracking_data?: string;
/**
* Минимальная версия API
* @defaultValue "1"
*/
min_api_version?: string;
/**
* Текст сообщения
* Обязательный параметр для текстовых сообщений
*/
text?: string;
/**
* URL адрес отправляемого контента
* Актуально при отправке файлов, изображений, видео
*/
media?: string;
/**
* URL-адрес изображения уменьшенного размера
* Актуально при отправке файлов, изображений, видео
*/
thumbnail?: string;
/**
* Размер файла в байтах
*/
size?: number;
/**
* Продолжительность видео или аудио в секундах.
* Будет отображаться на приемнике
*/
duration?: number;
/**
* Имя файла
* Актуально для type = file
*/
file_name?: string;
/**
* Контакты пользователя
* Актуально для type = contact
*/
contact?: {
/**
* Имя контактного лица
*/
name: string;
/**
* Номер телефона контактного лица
*/
phone_number: string;
};
/**
* Координаты местоположения
* Актуально для type = location
*/
location?: {
/**
* Координата широты
*/
lat: string;
/**
* Координата долготы
*/
lon: string;
};
/**
* Уникальный идентификатор стикера Viber
* Актуально для type = sticker
*/
sticker_id?: number;
/**
* Клавиатура с кнопками
*/
keyboard?: IViberButtonObject;
}