Мини-приложения

В статье рассмотрим как создать и настроить Мини-приложение в Telegram боте
В этой статье

В статье рассмотрим как создать и настроить Мини-приложение в Telegram боте.

Статьи на схожую тему:

  1. Подключение мини-приложения для кнопки в боте (веб-бот).
  2. Магазин в виде мини-приложения (веб-бота).
c02cff96e279632d59f2a744a91bc247.png

Мини-приложение — элемент Telegram, который фактически является веб-страницей открывающейся внутри Telegram и использующий расширенные возможности Mini App Api. Все мини-приложения интегрированы в ботов. Дизайн Мини-приложений адаптирован под стилистику iOS и Android.

Настройка Мини-приложения в BotFather

Через @BotFather можно включить специальный режим для запуска Мини-приложения по кнопке из профиля бота или по Стартовой ссылке https://t.me/username_bot?startapp, а также можно создать Короткие ссылки по типу https://t.me/username_bot/miniapp, рассмотрим оба варианта.

Кнопка "Открыть приложение" и Стартовая ссылка

da13f2c54c4b10b86a91481f37d8f5aa.png

Кнопка для открытия приложения из профиля бота.

Для включения режима Мини-приложения необходимо:

  1. Перейти в @BotFather
  2. Ввести /mybots и выбрать нужного бота
  3. Открыть Bot Settings и выбрать Configure Mini App
  4. Нажать Enable Mini App
  5. Последним шагом необходимо открыть: Личный кабинет — Конструктор — выбрать уже созданное и опубликованное Мини-приложение — Скопировать Техническую ссылку и отправить её в @BotFather

Отлично, теперь Мини-приложение можно открыть по кнопке в профиле Telegram бота, а также по ссылке в виде https://t.me/username_bot?startapp, где на месте username_bot нужно подставить юзернейм вашего бота.

Короткая ссылка на Мини-приложение

47991d56a97fbe9bae02bb31fb45ad2a.png

Пример короткой ссылки на Мини-приложение.

Для создания короткой ссылки на Мини-приложение нужно: 

  1. Перейти в @BotFather
  2. Ввести /newapp 
  3. Выбрать нужного бота и следовать дальнейшим шагам: Ввести название Мини-приложения — Описание — Отправить картинку (например из Yandex)— Прислать GIF или отправить /empty 
  4. На шаге с отправкой ссылкой необходимо открыть: Личный кабинет — Конструктор — выбрать уже созданное и опубликованное Мини-приложение — Скопировать Техническую ссылку и отправить её в @BotFather
  5. Последним шагом нужно задать окончание ссылки, например "price"

Настройки Мини-приложения в Конструкторе

d5f4065468aee832dbdf5b961375cb52.png

Типы ссылок на Мини-приложение

В контексте личного кабинета существует всего 2 типа ссылок на Мини-приложения:

  1. Прямая ссылка — имеет вид https://t.me/username_bot?startapp=10e220a237218f61, на конце ссылки указан ID необходимого Мини-приложения
    Область применения: можно вставлять в текст, в кнопки и в любые иные места для вызова Мини-приложения

    Важно! Для её использования необходимо в @BotFather включить режим Mini App, о котором написали выше.
     
  2. Техническая ссылка имеет вид https://cp.puzzlebot.top/web_page/test.html?id=10e220a237218f61 , на конце ссылки указан ID необходимого Мини-приложения
    Область применения: предназначена исключительно для настройки режима Mini App и для создания коротких ссылок в @BotFather. 

    По ней нельзя переходить и её нельзя вставлять в виде ссылки в текст.

Важно! Наблюдаются проблемы в работе Прямых ссылок со стороны Telegram клиентов, описали метод исправления ошибки.

 

 

Также, помимо Прямой ссылки для перехода к Мини-приложению есть ещё Короткая ссылка в виде https://t.me/username_bot/miniapp и Стартовая ссылка для открытия главной страницы Мини-приложения https://t.me/username_bot?startapp , о которых рассказали выше.

Дополнительные настройки

  • Защита контента — функция запрещает копировать текст и отключает работу правой кнопки мыши.
  • Отобразить кнопку "Назад" — кнопка отображается в левом верхнем углу окна мини-приложения, вместо кнопки “Закрыть”. Для неё можно выбрать следующие действия: Предыдущее мини-приложение, Переход к Мини-приложению, Переход к команде или условию.
443b2ebeb876f84366f777e26b028d37.png

Пример попапа перед закрытием Мини-приложения.

  • Показать попап перед закрытием Мини-приложения — при закрытии Мини-приложения появится попап с предупреждением “Внесённые изменения могут быть потеряны”. Будет всегда отображаться для Мини-приложений с формами ввода.
  • Закрывать окно по жесту (свайп) вниз — Telegram может неверно реагировать на быструю прокрутку страницы и закрывать окно Мини-приложения когда это не нужно, вы можете отключить функцию и закрытие окна будет происходить при клике на кнопку “Закрыть”.

Особенности блоков Мини-приложения

74cf75eda03ed68a4dcb99cc7ec306d8.png

Для блоков можно добавить заголовок и описание.

Рассмотрим особенности настройки части блоков.

Блок Изображение

При загрузки 1 картинки она автоматически будет растянута по ширине с сохранением пропорций без ограничения по высоте. При добавлении 2 и более картинок блок работает по принципу карусели с ограниченной высотой.

Блок Стикер

Может отображать анимацию в формате .TGS (формат Telegram стикеров) или JSON.

Блок Видео

Отображает видео загруженное на следующие платформы: YouTube, Vimeo, VK, Dzen, RuTube, OK. В блоке необходимо указать ссылку на видео из адресной строки. 

7e91e58c0e0a78ca0c4fdfd57bd94b64.png

Для платформы Dzen необходимо скопировать особую ссылку. Чтобы её найти необходимо нажать под видео на три точки — Поделиться — Встроить.

Блок Клавиатура

В отличии от клавиатуры в боте — в Мини-приложении клавиатура может существовать отдельно от блоков. Клавиатур может быть любое количество, кроме клавиатуры с типом Фиксированная.

Для каждой кнопки можно настроить выполнение вибрации.

 

d7d2b97ef955e9ae719ea6728f544c01.png

Тип клавиатуры: Фиксированная. Может быть только одна на всё Мини-приложение.

Важно! Фиксированная клавиатура может быть заменена, если внутри Мини-приложения есть Форма ввода
 

2d0161c97a27b7f5566e4af755067718.png

Тип клавиатуры: Обычная.

6c6b85b96f7c9238311efc4e070bb318.png

Тип клавиатуры: Строки.

23040b3f8346e1756cae058d8bd9c5a0.png

Тип клавиатуры: Инлайн.

Блок Строки

32480ff5e27b224fc20e486582b2a1d0.png

Блок Документ

061a0b139c00af36310af18a3deb7d68.png

Блок позволяет скачать отдельные документы или все разом. Документы отправляются в личные сообщения с ботом.

Блок Форма ввода

Подробнее о Формах ввода рассказали в статье: Форма ввода. В данном разделе рассмотрим особенности Форм ввода в Мини-приложении.

Важно! При использовании Формы ввода в Мини-приложение автоматически добавляется блок Клавиатуры с типом Фиксированная. Если в Мини-приложении уже есть блок Клавиатуры с типом Фиксированная, то он будет заменён.
 

1f2e883d7cacb76502b7455798980c68.png

Для Форм ввода в Мини-приложении добавлены следующие функции:

  • Обязательная форма — требует ответа на Форму.
  • Повторное прохождение — разрешает или запрещает повторный ответ на форму. В случае запрета Форма всё равно будет отображаться, но в отключенном состоянии и без возможности выбрать вариант или отправить ответ.
  • Подставить ответ из переменной — отображает Форму ввода с заранее введённым ответом, который пользователь может стереть.

У Формы ввода с типом Выбор варианта для кнопок есть настройка Выбрать по умолчанию, которая позволяет предустановить популярные варианты ответа.

5d6bd19f26a9edadeaebfbee073e7873.png

При ответе на Формы ввода воспроизводится эффект конфетти.

Блок Форма ввода с типом Список

2585e5896c985d9a97f3dfb7822e6f82.png

Данный тип формы ввода позволяет выбрать один или несколько вариантов из списка. Особенность типа в наличии поиска по  вариантам (в случае, если вариантов больше 10). Также данный тип предусматривает 3 способа добавления вариантов:

  1. Через личный кабинет — до 16 вариантов
  2. Текстовым документом — необходимо подготовить обычный .txt файл с содержимым по примеру:
    Название варианта 1 = Значение 1
    Название варианта 2 = Значение 2
    ...
    Название варианта N = Значение N

3. Подключением к Google Sheets или NocoDB Таблицам

Блок Подстановка

Блок позволяет подставить контент другого Мини-приложения

Важно! Действия другого Мини-приложения не будет выполнены.
 

Попап

2d392f1f050ede8105e852aca08ae566.png

Попапы могут быть 2 видов: С кнопкой и Без кнопки.

Блок Меню

905343cf733cbfbb40f485f160af5e63.png

Блок Меню позволяет загрузить SVG изображения в качестве иконок.

 

Блок Вкладки

1a8b195e6f4139e94527920c99a5236c.png

Стандартные вкладки вмещают до 5 страниц, Расширенные до 24 страниц.

Блок HTML

Позволяет вставить HTML код между тегами <body></body>

Важно! В дополнительных настройках Мини-приложения, а также в глобальных настройках бота можно задать HTML код, который будет вписан между тегами <head></head>
 

Полезная информация: 

  1. Классы .block-ios и .block-android — специальные классы для CSS кода для отображения элемента только для пользователей с iOS или Android соответственно, пример: 
    <div class="block_ios">У вас iOS тема</div>
    <div class="block_android">У вас Android тема</div>

2. Атрибут goto_web_page для тега <a> — переход от одного Мини-приложения к другому и без открытия нового окна. В него пишется ID Мини-приложения (например: bb0ad173446c99b1), после загрузки страницы этот атрибут заменяется на href с необходимым URL-адресом страницы, пример:

<a goto_web_page="*тут айди второй страницы*">Перейти на вторую страницу</a>

f4fbbf6902681cc9a368c58a9087e1f0.png

Обведённый код является ID Мини-приложения.

3. Функция gotoWebPage("id_Мини-приложения", true | false) — переходом от одного Мини-приложения к другому. Аналог предыдущего варианта. Второй аргумент необязательный и по умолчанию false. Если false, то сделает переход на указанное Мини-приложение в текущем окне, если true, то откроет в новом окне.

<button onclick="gotoWebPage('*тут айди второй страницы*')">Перейти на другую страницу</button>

4. Функция getWebPageUrl("id_Мини-приложения") — возвращает ссылку правильного вида, без перехода, пример:

<script>
var other_page_url = getWebPageUrl("bb0ad173446c99b1")
setTimeout(function() {
window.location.href = other_page_url;//этот пример выдуман, тут можно было обойтись gotoWebPage
}, 3000);//переход через 3 сек
</script>

Другое

  1. Для действия в кнопках Подставить текст необходимо включить Инлайн-мод, подробнее: Инлайн-мод для инлайн-команд и групп команд в Конструкторе.
  2. Вы можете интегрировать в Мини-приложение свой сайт, подробнее: Подключение мини-приложения для кнопки в боте (веб-бот).