Pull to refresh

Comments 42

Интересно, а можно ли в боте для Телеграм запускать веб приложения с использованием WebGL?

По сути - это практически стандартное окно браузера, открытое поверх телеграм. Так что: почему нет? - Как-то работает)

Ребята, вопрос: в web apps есть кэш на картинки и css файлы. Вопрос - как это убрать для css?

При обновлении кода сайта можно ставить версии подключенных файлов:

<link rel="stylesheet" href="style.css?v1.1">

Или же вовсе запретить кэш.

Это безусловно интересный функционал в Телеграм, открывающий доселе невиданные возможности при создании ботов. Но остался вопрос с точки зрения безопасности. Так как итоговый бот это HTML-страница, то можно воспользоваться официальной веб-версией Телеграм, чтобы извлечь iframe и запустить страницу локально. В такую страницу можно внести любые модификации, например подменить глобальную переменную tg, верно? И например использовать идентификатор другого пользователя.

На данный момент Web приложения в web.telegram.org не поддерживаются, но я думаю к релизу разработчики выдадут безопасное обновление в web-версии)

Сейчас официальные это webz/webk, победители конкурсов. Они поддерживают web приложения, вот даже код с iframe'ом. Интересно как будет решена проблема безопасного общения клиента и сервера для web ботов.

Они просят валидировать initData с информацией о пользователе (считайте проводить аутентификацию и авторизацию), но условно говоря этап аутентификации опционален. На практике там HMAC-SHA256 хэш, подписанный токеном бота.

Кнопка слева снизу для вызова Webapp получается в группе не работает?

вебботы добавляются к вам в менюшку, при нажатии на скрепку. Однако доступно это не всем) Пока что только для ботов, авторы которых занесли телеграму 2 миллиона евро в их рекламном кабинете

К сожалению это доступно только в приватных чатах.

забавно, что автор закрасил свой айдишник, но оставил юзерку. Любой может открыть его профиль и при необходимости, имея кастомный клиент например, достать айди) Но толку в этом нет, ибо айди тебе абсолютно ничего не даст. Люди, не бойтесь палить свой айдишник) Не заморачивайтесь, он итак публичный, и кому надо — его достанут

Пишу бота с WebApp уже месяц с самого релиза, есть парочка моментов.

1) В офф документации очень мало инфы

2) Объект initData передаётся согласно офф докам только через inline кнопку, но первые 2 недели было наоборот- только через неё объект не передавался.

3) Почему initData не передаётся через остальные кнопки- непонятно.

Самое главное:

4) Не сбрасываются куки. Я прошёл аутентификацию через сторонний сервис (он через 302 статус и хэдер set-cookies проставил у меня в WebApp куку) месяц назад- кука с токеном сессии до сих пор жива и передаётся этому сервису. Сброс кэшей и бд Телеграмма, Хрома, Android WebView не помогает. Единственный выход- переустановка клиента Телеграмма. Возможно, поможет ещё костыль в виде set-cookie из моего WebApp, но я пока не пробовал.

Ещё в доке сейчас написано, что sendData работает только для Keyboard Button.

Тоже не понимаю почему только для него.

Пока наблюдаю обратную проблему: куки нельзя поставить, при перезапуске клиента они слетают.

Не кто не сталкивался, с тем что в Desktop версии (window) телеграмма в WebApps не работает часть браузерного API, например тот же alert() ?

Расстраивает ограничение, что Web Apps работают только в приватном чате пользователь-бот. Есть интересные кейсы использования для групп и каналов через inline buttons, но в этом случае сейчас сервер телеграма возвращает ошибку "Web app can be used in private chats only". Может кто-то знает, планирует ли Telegram добавить поддержку групп и каналов для Web Apps?

да, тоже интересно, можно ли как это запустить webapp в канале? через кнопку какую нибудь

Автору спасибо! Кто-нибудь знает, как сделать отправку данных как в оф. примере DurgerKingBot?

Пример
пример
пример

Надо вызвать метод answerWebAppQuery. Аргументом передать query_id полученный из initData. В качестве result использовать InlineQueryResultArticle.

А как получить этот query_id ?

Как я и сказал: получить его на фронте с помощью JS-скрипта Telegram из initData. Далее отправить любым удобным способом на ваш бек средствами того же JS. Подобная интеграция не простая и требует полноценный API, который умеет общаться с фронтом, Bot API тут не обойтись.

Странно, что не разрешили метод sendData для WebApp открытых через InlineButton. Возможно, как-то угрожает безопасности? Приходится свой API для связи с бэкендом бота писать

Думаю безопаность не причем. На мой взгляд это исключительно UX-решение. Telegram хочет, чтобы keyboard-button WebApp использовали только для простых вещей типа кастомной input-формы и чтобы у пользователей формировалась соответствующая привычка.

Привет, нашел ответ? Тоже не могу разобраться как отправлять данные после закрытия самого бота...

Всем привет!
У меня есть небольшой проект (читай стартап), в рамках которого я делаю бота на R, но с веб-разработкой совсем не знаком...Очень хочу добавить функциональность, которая появилась с помощью WebApps, так как много запросов у аудитории, которые решаться такой интеграцией.
Буду очень рад, если кто-то готов помочь с этим =)

Интересное предложение

А есть уже шаблоны web apps для телеги? Покопался на themeforest не нашел ничего

github - шаблон, который я подготовил. Там простой бот и простое веб-приложение, которое взаимодействует с telegramAPI.

Спасибо за статью!
Столкнулся с проблемой в Telegram macOS 8.8. Метод sendData не отрабатывает. Завел репорт на багтрекере Telegram. Кому не сложно, поставьте палец вверх по ссылке:
https://bugs.telegram.org/c/18381

P.S. Использовал бота из статьи в качестве примера.

Спасибо большое за это сообщение! А то я уже головой об стену начал биться. Все усугубляется тем, что дебажить можно через одно место, а гугл на все вопросы с telegram web app выдает чаще всего просто про телеграм что-то

Короче, оказалось, что WebApp.sendData метод не работает, если Web App был открыт через Menu button. Завел на это баг https://bugs.telegram.org/c/18681 (прошу тоже поддержать лайками)

Так в документации написано, что sendData работает только при использовании Keyboard Button. Это не баг, а фича короче.

Ага, там в комментах написали. Но какая-то странная фича, которая ведёт к неконсистентному поведению

Они позиционируют sendData только для использования в кастомных формах ввода. Думаю таким ходом они приучают пользователя тому, то Keyboard Button всегда для ввода данных (через него, кстати initData не прилетает, поэтому по другому назначению использовать его тоже не получится).

А с помощью webapp можно хранить некоторые данные локально на устройстве пользователя? Например, в localstorage?

Можно. LocalStorage работает, а Cookie почему-то не переживают перезапуск Telegram.

Подскажите, а можно ли как-то обрабатывать поп-апы в web app? Есть сайт, куда нужно логиниться через веб-кошелек. Он всегда открывает поп-ап окно с авторизацией. Если на этот сайт пойти через web app, то выдает ошибку "Unable to open a popup window" и открывает мне тот поп-ап в обычной вкладке браузера, но даже если в браузере авторизоваться и подтвердить, то в самом web app ничего не происходит.

В Windows 7 выводит сообщение, что для запуска нужен Windows 8.1

ПИПЕЦ

Sign up to leave a comment.

Articles