Публикация мини-приложений (TMA)
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите прин ять участие в переводе свяжитесь с @alexgton.
Как разработчикам, нам важно понимать экосистему, в которой мы работаем. Telegram предоставляет уникальные возможности для разработчиков мини-приложений благодаря своей надежной платформе и обширной пользовательской базе. Эта статья расскажет Вам о доступных способах для публикации Ваших мини-приложений в Telegram.
tApps Center
Что такое tApps Center? TON Foundation представил Telegram Apps Center - централизованное хранилище для Telegram-ботов и мини-приложений (TMA). Цель этой платформы - улучшить пользовательский опыт, используя интерфейс, напоминающий привычные магазины приложений.
Широкая поддержка экосистемы. Telegram Apps Center ориентирован не только на экосистему TON, он также приветствует приложения из других блокчейнов. Вам даже не нужна интеграция с web3, чтобы стать частью этого каталога. Такой инклюзивный подход направлен на то, чтобы сделать Telegram "универсальным приложением", аналогично таким платформам, как WeChat, где пользователи могут получить доступ к множеству услуг в рамках единого интерфейса.
Открыть tApps Center
Зачем публиковать в tApps Center?
Доступ к широкой аудитории. Центр приложений Telegram предоставляет разработчикам прекрасную возможность продемонстрировать свои проекты широкой аудитории, что облегчает привлечение пользователей и инвесторов.
Сила сообщества. Подход платформы ориентирован на сообщество, поощряя сотрудничество и обмен ресурсами и знаниями.
Читайте больше в блоге TON
Запуск в Telegram
В настоящее время Telegram поддерживает шесть различных способов запуска мини-приложений: с кнопки на клавиатуре, с инлайн-кнопки, с кнопки меню в боте, через инлайн-режим, с прямой ссылки - и даже из меню вложений.
Кнопка на клавиатуре в мини-приложениях
TL;DR: Мини-приложения, запускаемые из web_app с кнопки клавиатуры, могут отправлять данные обратно боту в служебном сообщении с помощью Telegram.WebApp.sendData. Это позволяет боту получить ответ без взаимодействия с внешними серверами.
Пользователи могут взаимодействовать с ботами, используя [пользовательские клавиатуры] (https://core.telegram.org/bots#keyboards), [кнопки под сообщениями в ботах] (https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), а также отправляя текстовые сообщения в свободной форме или любой из типов вложений, поддерживаемых Telegram: фото и видео, файлы, местоположения, контакты и опросы. Для еще большей гибкости боты могут использовать все возможности HTML5 для создания удобных интерфейсов ввода.
Вы можете отправить web_app типа KeyboardButton, который открывает мини-приложение с указанного URL.
Чтобы передать данные от пользователя обратно боту, мини-приложение может вызвать метод Telegram.WebApp.sendData. Данные будут переданы боту в виде строки в служебном сообщении. После их получения бот сможет продолжить общение с пользователем.
Полезно для:
- Интерфейсов ввода данных (персонализированный календарь для выбора дат; выбор данных из списка с расширенными возможностями поиска; рандомизатор, позволяющий пользователю "крутить колесо" и выбирать один из доступных вариантов, и т.д.).
- Повторно используемых компонентов, которые не зависят от конкретного бота.
Инлайн-кнопки в мини-приложениях
TL;DR: Для более интерактивных мини-приложений, таких как @DurgerKingBot, используйте web_app типа Inline KeyboardButton, которое получает основную информацию о пользователе и может быть использ овано для отправки сообщения от имени пользователя в чат с ботом.
Если одного приема текстовых данных недостаточно или нужен более продвинутый и персонализированный интерфейс, можно открыть мини-приложение с помощью web_app типа Inline KeyboardButton.
По нажатию кнопки откроется мини-приложение с URL, указанным в кнопке. В дополнение к настройкам темы оно получит основную информацию о пользователе (ID, name, username, language_code) и уникальный идентификатор сессии, query_id, который позволяет отправлять сообщения от имени пользователя обратно боту.
Бот может вызвать метод Bot API answerWebAppQuery, чтобы отправить сообщение от пользователя обратно боту и закрыть мини-приложение. Получив сообщение, бот может продолжить общение с пользователем.
Полезно для:
- Полноценны веб-сервисов и любых интеграций.
- Варианты использования фактически безграничны.
Запуск мини-приложений с кнопки меню
TL;DR: Мини-приложения можно запускать с настраиваемой кнопки меню. Это дает более быстрый способ доступа к приложению, а в остальном аналогично запуску мини-приложения с инлайн-кнопки.
По умолчанию в чатах с ботами всегда отображается удобная кнопка меню, которая обеспечивает быстрый доступ ко всем перечисленным командам. С Bot API 6.0 эта кнопка может быть использована для запуска мини-приложения.
Чтобы настроить кнопку меню, нужно указать текст, который кнопка должна отображать, и URL-адрес мини-приложения. Есть два способа задать эти параметры:
- Чтобы настроить кнопку для всех пользователей, используйте @BotFather (команда /setmenubutton или Настройки бота > Кнопка меню).
- Чтобы настроить кнопку как для всех пользователей, так и для конкретных пользователей, используйте метод setChatMenuButton в Bot API. Например, измените текст кнопки в зависимости от языка пользователя или покажите ссылки на различные веб-приложения в зависимости от настроек пользователя в Вашем боте.
Кроме того, веб-приложения, открываемые с помощью кнопки меню, работают точно так же, как и при использовании инлайн-кнопок.
@DurgerKingBot позволяет запускать свое мини-приложение как с инлайн-кнопки, так и с кнопки меню.
Инлайн-режим мини-приложения
TL;DR: Мини-приложения, запускаемые через web_app типа InlineQueryResultsButton, можно использовать в любом месте в режиме inline. Пользователи могут создавать контент в веб-интерфейсе, а затем отправлять его в текущий чат в режиме inline.
НОВОЕ. Вы можете использовать параметр button в методе answerInlineQuery, чтобы отобразить специальную кнопку "Switch to Mini App" ("Переключиться на мини-приложение") либо над, либо вместо результатов инлайн-запроса. Эта кнопка откроет мини-приложение с указанного URL. После этого вы можете вызвать метод Telegram.WebApp.switchInlineQuery, чтобы отправить пользователя обратно в инлайн-режим.
Инлайн мини-приложения не имеют доступа к чату - они не могут читать сообщения или отправлять новые от имени пользователя. Чтобы отправить сообщение, пользователь должен быть перенаправлен в инлайн-режим и активно выбрать результат.
Полезно для:
- Полноценных веб-сервисов и интеграции в инлайн-режиме.
Мини-приложения с прямой ссылкой
TL;DR: Боты мини-приложений могут быть запущены по прямой ссылке в любом чате. Они поддерживают параметр startapp и учитывают текущий контекст чата.
НОВОЕ. Вы можете использовать прямые ссылки для открытия мини-приложения прямо в текущем чате. Если в ссылку указан непустой параметр startapp, он будет передан мини-приложению в поле start_param и в параметре GET tgWebAppStartParam.
В этом режиме мини-приложения могут использовать параметры chat_type и chat_instance для отслеживания текущего контекста чата. Это обеспечивает поддержку параллельного и совместного использования несколькими участниками чата - для создания интерактивных досок, групповых заказов, многопользовательских игр и аналогичных приложений.
Мини-приложения, открытые по прямой ссылке, не имеют доступа к чату - они не могут читать сообщения или отправлять новые от имени пользовате ля. Чтобы отправить сообщение, пользователь должен быть перенаправлен в инлайн-режим и активно выбрать результат.
Примеры.
Полезно для:
- Полноценных веб-сервисов и интеграций, которые любой пользователь может открыть одним касанием.
- Кооперативных, многопользовательских или ориентированных на командную работу сервисов в контексте чата.
Варианты использования практически не ограничены.