Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор

Что у бота под капотом?

Приступая к работе, мы думали о ситуациях, когда пользователю будет удобнее взаимодействовать с ботом, а не с основным мобильным приложением. Список преимуществ бота получился таким:

Но естественно, в сравнении с приложением бот имеет и ряд серьезных ограничений:

Проанализировав ситуации взаимодействия бота с пользователем, мы составили список потенциального функционала:

Информационный функционал

ОперацииПрочееNLP (Natural language processing) для обработки запросов

Конечно, все это не могло уместиться в первый релиз, и в мы итоге остановились на следующем MVP:

Информационный функционал

Операции балансПрочее

Однако мы сразу решили, что функции оплаты будут реализованы «универсальным» образом, чтобы впоследствии подключать и других контрагентов.

imageАлександр Нестеров, Открытие Digital, product owner
“Конечно, бот не заменит нашу службу поддержки, мобильное приложение или интернет-банк, но некоторые простые вопросы и регулярные задачи проще и удобнее решать в привычном интерфейсе мессенджера. Поэтому бот — это еще один дополнительный канал обслуживания наших клиентов, который делает общение с банком еще более удобным и доступным”.

Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор

Ботыv81cv8.cfБесплатно (free)

Положа руку на сердце, практическое удобство данной интеграции лично у меня вызывает сомнения. По той простой причине, что в этом случае вольно или невольно вы выходите «за пределы» Скайпа, и возникает угроза конфиденциальности данных. Но, наверное, с точки зрения заказчика, это очень удобно – находясь в форме 1С, одним кликом мышки связаться с контрагентом, отправить ему текстовое сообщение, и совсем уж здорово – прослушать последний разговор с клиентом.

12.09.2022   
10928   
arkanru   
18    

Заключение. телеграм боты

Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂

Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.

Возможно вам будет интересно:

 — Шпаргалка по Jest с примерами кода.

 — Шпаргалка по Redux с примерами кода (stylesheet).

Встраивание модуля в конфигурацию 1с

Встраивание модуля производится обычным объединением с рабочей конфигурацией. 

1. Включите возможность изменения конфигурации.

2. Откройте конфигурацию в конфигураторе. Выберите пункт меню «Конфигурация» – «Сравнить, объединить с конфигурацией из файла». Выберите файл конфигурации с двухфакторной аутентификацией (смотри рисунок 6).

3. В открывшемся окне снимите флажок с корня конфигурации, как на рисунке ниже. Далее нажмите кнопку «Действия» и выберите пункт «Отметить по подсистемам файла».

4. Установите галочку напротив «ДвухфакторнаяАутентификацияТелеграм» и нажмите кнопку «Установить».

5. Нажмите кнопку «Выполнить».

6. Откройте модуль управляемого приложения. Найдите процедуру «ПередНачаломРаботыСистемы» или создайте при ее отсутствии. Вставьте следующий вызов:

7. Настройте права. Для пользователя с административными правами добавьте роль «АдминистрированиеДвухфакторнойАутентификацииТелеграм». Для остальных пользователей добавьте роль «ДвухфакторнаяАутентификацияТелеграм».

Супергруппы

На самом деле многие группы в Телеграме являются супергруппами.

Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.

Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.

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

Супергруппу нельзя обратно превратить в группу. С точки зрения API супергруппа устроена так же, как и канал. Важное отличие супергрупп от обычных групп состоит в нумерации сообщений: о нём чуть ниже.

Ещё о кнопках

Оба типа кнопок могут составлять несколько рядов, в каждом из которых по несколько кнопок. Ограничения: в ряду может быть до 8 кнопок, а всего с сообщением до 100 кнопок.

При отправке сообщения можно выбрать одно (но не больше) из следующих действий:

  • Добавить к сообщению инлайн-кнопки,

  • Показать клавиатурные кнопки,

  • Убрать все клавиатурные кнопки,

  • Force reply: автоматически заставить пользователя ответить на сообщение. Так произойдёт то же самое, что и при нажатии пользователем кнопки «Ответить». Это нужно для того, чтобы бот мог общаться с пользователями в группах, не нарушая Privacy mode.

Таким образом, нельзя показать оба типа кнопок одновременно.

Id сообщений

Каждое сообщение в Телеграме имеет свой id. Это относится и к системным сообщениям (пользователь зашел в группу, изменилось название группы и т. д.)

Через Telegram API боты могут получать по запросу сообщения в любом чате по их id.

id сообщений в супергруппах и каналах уникальны для чата: первое сообщение в чате имеет номер 1, второе имеет номер 2 и так далее.

id сообщений в личных сообщениях и обычных группах работают по другому. Там, можно сказать, нумерация сквозная: id сообщения уникально для каждого отправившего его пользователя. Так, первое сообщение от пользователя во всех личках и группах имеет номер 1, второе сообщение от того же пользователя имеет номер 2 и так далее.

Инлайн-кнопки

Бот может оставлять кнопки под своими сообщениями.

Кнопки под сообщениями (они же inline keyboards / inline buttons) в основном бывают трёх видов:

Дополнительные виды кнопок

Чтобы показать клавиатурные кнопки, бот должен отправить сообщение. Можно отправить клавиатуру, которая свернётся (но не пропадёт) после нажатия на кнопку.

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

  • Для пользователей, юзернеймы которых были в тексте сообщения,

  • Если это ответ на другое сообщение: для пользователя, который его отправил.

Telegram login widget

Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:

  1. Пользователь должен будет ввести свой номер телефона.

  2. Бот Telegram попросит подтвердить вход.

  3. Пользователь авторизуется и нажимает на «Принять» на сайте.

  4. Телеграм боты

Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.

О Telegram Login Widget на сайте Телеграм

Какие апдейты можно получать

Бот не может получить старые сообщения из чата. Бот не может получить список всех своих пользователей. Все, что может получать бот — это информацию об обновлениях. В этом заключается главная сложность разработки ботов.

Вы можете получать информацию о новых сообщениях в боте и других событиях, но только один раз. Вам придётся самим хранить список чатов, старых сообщений (если это зачем-то нужно) и так далее. Если вы случайно сотрёте/потеряете эту информацию, вы её больше никак не получите.

В Telegram API бот может чуточку больше: он может получать сообщения по id, получать список участников группы и прочее.

Часть 3: получаем сообщения и говорим «привет»

Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.

Открывайте ваш любимый текстовый редактор, и давайте писать код бота!

Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:

Index.php

Этот файл будет выводить ссылку на авторизацию через бот в случае, если пользователь не авторизован. JS скрипт вешает на ссылку прослушку на событие click с функцией, которая через 2-х секундный интервал делает запрос на сервер. Когда ответ с сервера возвращается положительный, скрипт перезагружает страницу.

Если у пользователя обнаружена кука token то скрипт делает запрос в бд и получает первое и второе имя пользователя, которые выводит вместе с ссылкой на выход. При обработке действия “Выход”, скрипт просто удаляет куку и перезагружаем страницу.

Команды

Часто используемый способ «общения» пользователей с ботом — команды. Команды начинаются на «/» и состоят из латинских букв (можно использовать цифры и нижние подчеркивания).

Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.

В группах, чтобы различать команды от разных ботов, Телеграм предлагает ставить в конце команды юзернейм бота. Например: /[email protected].

Запуск бота пользователем

Когда пользователь впервые открывает бота, он видит кнопку «Запустить» или «Начать» (зависит от платформы пользователя), на английском — «Start». Нажимая на эту кнопку, он отправляет команду /start.

Таким образом, первое сообщение от пользователя — это всегда /start (либо /start с параметрами, об этом ниже в разделе «Диплинки»).

Получение данных о счетах

Пользователь может запросить через бот информацию о своих счетах. Но есть и мобильное приложение, которое обращается к API банка “Открытие” за теми же данными. Чтобы обойтись без доработок на стороне “Открытия”, мы просто использовали готовый API и отправляли туда запрос от своего бэкэнда — такой же, каким он был бы от мобильного приложения.

Оплата услуг

Фактически система такая же, как и со счетами: когда пользователь хочет положить денег на телефон, за кулисами в “Открытие” прилетает запрос по спецификации API для мобильного приложения. Бэкенд бота сам трансформирует программный интерфейс работы схем оплаты поставщиков в диалоговый интерфейс общения с пользователями.

Инлайн-режим. телеграм боты.

Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.

Выглядит это так: пользователь вводит юзернейм бота в поле для ввода сообщения. После юзернейма можно ещё записать запрос (текст до 256 символов).

Появляется менюшка с результатами. Выбирая результат, пользователь отправляет сообщение.

Введение

Удобство использования корпоративных информационных систем из любой точки земли по сети интернет неоспоримо и, зачастую, необходимость самого доступа с использованием мобильных устройств, требуемая руководством, сводит на “нет” и без того робкие попытки внутренних ИТ-служб компаний обеспечить сохранность корпоративных секретов в условиях ограниченных бюджетов.

Id пользователей и чатов

У каждого пользователя, бота, группы, канала в Телеграме есть собственный id. Различать чаты в коде бота следует именно по id, потому что он никогда не меняется.

В токене бота первая часть — это его id. Например, токен 110202274:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110202274.

Обработка запроса на сервере

При подтверждении пользователем авторизации на сайте, в зависимости от
выбранного параметра “тип авторизации”, либо выполнится
JavaScript-функция, либо пользователь будет перенаправлен на страницу
Callback URL. В качестве GET-параметров на эту страницу будут переданы
данные пользователя.

Рассмортрим второй вариант.

Телеграм боты. платежи

Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.

Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.

Платежи, к тому же, не работают на iOS из-за ограничений Apple.

Создание наборов стикеров для телеграм ботов

Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.

Checkkey.php

Этот файл принимает AJAX запрос со страницы index.php когда пользователь нажимает ссылку для авторизации. Он по ключу проверяет наличии записи в базе, и в случае обнаружения обновляет ключ, записывает куку и возвращает положительный результат.

Заключение

В статье описан общий принцип работы авторичзации пользователя на
сайте с использованием Telegram Login Widget. В статье используется
технологии Python и Django, однако принцип может быть реализован с
применением любых технологий, позволяющий обработать GET-запрос.

Результаты инлайн-режима

Результаты можно отображать двумя способами:

  • Сеткой. Удобно для выдачи картинок.

  • Вертикальным списком. Удобно для выдачи текста.

Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.

Приватность и геопозиция в инлайне

Когда пользователь вызывает инлайн-режим, бот не может получить никакую информацию о контексте, кроме информации о пользователе. Таким образом, телеграм бот не может узнать ни чат, в котором вызвали инлайн, ни сообщение, на которое пользователь отвечает.

Обработка естественного языка vs. кнопки

Изначально мы планировали сделать бота с NLP, но в итоге отказались от этой идеи. Платформы по лингвистическому процессингу, с которыми мы экспериментировали —

Что в итоге

На данный момент система работает так. В будущем мы планируем расширить возможности бота — улучшить механизм авторизации и ввести оплату по шаблонам.

Куда может писать бот

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

Боты не могут писать другим ботам.

Сообщения

Понятно, что главная функция бота — отправлять и получать сообщения.

И то, и другое можно делать со всеми видами сообщений (фото и видео, файлы, опросы, голосовые сообщения и т. д.).

Принцип работы виджета telegram

6 февраля 2022 года команда Telegram
анонсировала запуск Telegram Login
Widget для внешних сайтов.

Видимость сообщений в группах

Обычно бот должен реагировать именно на команды. Телеграм не уведомляет бота об остальных сообщениях, и это гарантирует приватность переписки.

Часть 1: регистрация бота


Самая простая и описанная часть. Очень коротко: нужно найти бота

Db.php

Класс для получения соединения с базой данных. Укажите данные ваших настроек базы данных.

Настройка параметров модуля

Для настройки модуля необходимо включить его использование и указать ряд настроек:

Оформление бота

Открыв бота, пользователи могут увидеть его профиль.

Похожее:  Протокол авторизации OAuth 2 — введение в технологию на примерах

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *