Чат-боты — это программы, которые автоматически генерируют сообщения по определенным сценариям. Последние зависят и от целевой аудитории, и от поведения пользователей: их реакции и ответов на сообщения.
Обработка входящих обращений ботами эффективно разгружает отдел продаж, техподдержку или колл-центр. С помощью программ также можно рассылать полезные материалы и информировать о новых предложениях, продавать несложные товары и услуги, запускать учебные онлайн-курсы.
Чат-бота обычно разрабатывают на Python. Но если у Вас нет нужных навыков, времени или бюджета, можно сделать его самостоятельно, не написав ни строчки кода. О том, как создать чат-бота с помощью конструктора и какие возможности предлагают популярные сервисы, — расскажу в статье.
Лучшие конструкторы чат-ботов в Telegram
Если Вы сталкивались с nocode-платформами вроде Тильды или Unisender, то работа в конструкторе чат-бота не вызовет затруднений. Конструктор — это сервис, построенный по принципу визуального проектирования из элементов, блоков и модулей. В нем также можно редактировать под свои задачи существующие шаблоны.
#12. Форматирование текста в телеграм боте на Python | Aiogram
Я протестировала 8 разных программ и заметила один важный момент. Хотя их основной функционал схож, почти все конструкторы специализированы под определенные задачи и даже бизнес-нишу. Поэтому при выборе варианта из таблицы ниже всегда отталкивайтесь от нужд компании.
Бот умеет отправлять не только текстовые сообщения, но и прикреплять файлы, изображения, аудио, видео, кнопки и перенаправлять по ссылкам. Еще можно задать время задержки следующего сообщения или указать боту, чтобы он подождал, пока пользователь ответит. Построив логику диалога в конструкторе, тестируем, что получилось.
Отзыв пользователя попадает в CRM сервиса. Рассмотрим эту возможность подробнее.
2. Сбор данных и CRM
Одна из важных задач чат-программы — собирать и бережно хранить данные о пользователе, полученные в ходе диалога. Боты умеют запрашивать и записывать во внутреннюю CRM конструктора любые текстовые и контактные данные пользователя, его обращения, ответы на вопросы и заявки.
Например, если в нашу схему в Bot Kits добавить блок сохранения данных, отзыв пользователя попадает в CRM-систему, которая в конструкторе представлена таблицей с настраиваемыми полями.
3. Продажа несложных товаров
Научим бота продавать три вида шариков и отправлять оптовый прайс на email клиента. В админ-панеле BotTap перейдем во вкладку «Диалоги», создадим приветственное сообщение и добавим кнопки меню. В этом конструкторе Вы проектируете по принципу drag and drop: перетаскиваете мышью подходящий блок из палитры справа в нужное место и редактируете.
Приветствие создаем с помощью блока «Текст», разделы меню — с помощью одноименного блока. Можно выставить задержку сообщений бота.
Чтобы создать товары, переходим на вкладку справа — «CRM интернет-магазина», а затем — в «Товары». Сервис дает возможность заполнить описание продукта, загрузить его изображение и назначить цену.
Вернемся на страницу «Диалоги», выделим в нашем блоке с меню «Каталог» и добавим из правой палитры блок «Интернет-магазин».
Перейдем в чат и потестируем, что получилось. После приветствия бота выберем «Каталог» и добавим в корзину красный шар.
Можно научить бота запрашивать адрес и телефон покупателя при оформлении заказа — данные попадут в CRM интернет-магазина. В настройках платформы есть опции заказа с оплатой или без. Для теста выбираем последнюю.
Протестируем в чате оформление заказа: введем адрес и телефон. Затем проверим, появился ли заказ в CRM конструктора.
4. Прием платежей и интеграция по API
В конструкторах обычно есть возможность интеграции по крайней мере с одним платежным сервисом. Вернемся нашему боту и рассмотрим функцию оплаты на примере того же BotTap.
Заходим в настройки блока «Интернет-магазин» и включаем опцию приема оплаты. Система предлагает выбрать платежный шлюз, который подключается на одноименной вкладке.
Кроме платежных платформ, некоторые конструкторы чат-ботов позволяют подключиться к другим внешним сервисам по API (например, к Битрикс24, Google Analytics, MailChimp и пр.).
5. Отправка файлов на email пользователя
Также можно научить обота отправлять любые документы (книги, чек-листы и т.д.) на email клиента. В BotTap это можно сделать с помощью блока «Электронная почта». Добавим его в наш конструктор диалога.
Протестируем в чате:
6. Рассылки
Бот может не только отправлять сообщения, письма и файлы по запросу пользователя, но и делать автоматизированные рассылки. При этом можно построить довольно глубокую логику, сегментировать и фильтровать аудиторию по поведению.
Вернемся к нашему боту и научим его спрашивать покупателя, не осталось ли у того каких-нибудь вопросов, через 20 минут после последнего действия пользователя.
Воспользуемся для примера платформой Bot Kits. Выберем в админ-панели вкладку «Рассылка» → «Реакция на сообщение».
В настройках зададим правило — посылать сообщение после последнего действия клиента — и укажем время отправки. Пусть наш бот не только вежливо интересуется, не осталось ли вопросов у покупателя, но и передает ответ менеджеру. Отметим это в настройках рассылки: в Bot Kits для этого нужно указать переменную, в которую будут записываться сообщения пользователей.
Протестируем рассылку в чате нашего бота: сообщение пришло ровно через 20 минут после взаимодействия.
А что, если пользователь не хочет общаться с искусственным интеллектом и настойчиво требует, чтобы в чате ему ответил живой человек?
Кстати. Ищите лучшие сервисы для рассылки в телеграм и отзывы о них на нашем агрегаторе.
7. Переключение диалога на оператора
Функцию приглашать в чат сотрудника поддерживают не все конструкторы, поэтому узнавайте об этой возможности заранее.
Распознавание и перевод текста через телеграм-бота
Кажется, что сегодня алгоритмы машинного обучения применяются чуть ли не в каждом втором приложении. Хотя подождите, не кажется: в наше время и правда сложно найти более или менее серьезную компанию, продукты которой полностью обходятся без нейросетей — помощников… Существуют даже интеллектуальные приложения для заметок!
На фоне всего этого очень сложно придумать что-то новое. Я очень долго думал, чего же инновационного придумать для того, чтобы все удивились. К сожалению, ничего такого в голову не пришло… Но в процессе размышлений я вспомнил, как часто в процессе написания диплома встречал сканы научных работ, которые пригодились бы в качестве источника. Жаль, что тогда я не знал про OCR — мне не пришлось бы вглядываться в текст и переписывать слово в слово нужный абзац. Но теперь знаю и расскажу вам!
Достаточно точное определение дает amazon.com на странице своего облачного сервиса AWS. Оптическое распознавание символов (OCR – Optical Character Recognition) – это процесс преобразования изображения текста в машиночитаемый текстовый формат. Например, при сканировании бланка или квитанции, компьютер сохраняет скан в виде файла изображения. Текстовый редактор невозможно использовать для редактирования, поиска или подсчета слов в файле изображения. OCR помогает преобразовать изображение в текстовый документ, содержимое которого хранится в виде текстовых данных. Технология применяется для цифровизации любых источников данных, содержащих текст — будь то автомобильный номер, паспорт, капча — что угодно.
С научной стороны все тоже довольно просто. Для создания алгоритма, способного преобразовать изображение в текст, необходимо сначала определиться с набором символов и собрать обучающую выборку. Хотите распознавать русский печатный текст или английский рукописный? Не проблема, в любом случае придется потрудиться над выбором и разметкой входных данных. Дальше — обучение модели. Для решения задач распознавания текста зачастую используют сверточные и рекуррентные нейронные сети.
На рисунке указан пример архитектуры сверточной НС, взятый из статьи на researchgate:
На Хабре, NTA и многих иностранных ресурсах в открытом доступе есть работы, подробно изучающие процесс обучения таких моделей и их технические аспекты.
В данной статье будет рассмотрено практическое применение этой технологии в простой и практичной оболочке телеграм-бота. Предвосхищая обвинения в плагиате, признаю: это не единственный продукт в своем роде. Есть платные и бесплатные платформы, позволяющие с разным уровнем качества и удобства преобразовать картинку в текст. Есть даже пара сомнительных неактивных ботов в телеграм. Но чего нет — так это простой и понятной инструкции по созданию своей системы. Этим и займемся.
Для решения задачи нам понадобится компьютер, который мы будем использовать в качестве сервера для приема и обработки команд и сообщений. На устройстве нужно будет установить Python и используемые модули.
Для осуществления OCR будем использовать простой и популярный Tesseract с их библиотекой для pytesseract в связке с Pillow:
pip install Pillow, pytesseract
Кроме pytesseract, необходимо установить саму программу и русский язык: гайд по установке.
В качестве изюминки добавим переводчик. Используем библиотеку googletrans. Эта библиотека отправляет в сервис Google Translate исходный текст и язык, на который его нужно перевести. Stable версии библиотеки иногда могут работать некорректно, рекомендую установить:
pip install googletrans==3.1.0a0
Еще нам понадобится модуль langdetect для осуществления функции автоматического перевода одной кнопкой:
pip install langdetect
Воспользуемся библиотекой aiogram для связи с серверами telegram и создания функционального бота:
pip install aiogram
Здесь мы создали бота с именем “OCR bot”, ID “ntaresearchbot” и получили API токен для обмена информацией с серверами телеграм.
Перейдем к написанию кода. Для более глубокого понимания, рекомендую ознакомиться с данным ресурсом. В нем описаны многие из распространенных практик разработки ботов на платформе Telegram — в том числе те, что будут использованы далее.
Импортируем необходимые библиотеки, напишем код для постоянного опроса серверов телеграм. Не забудьте вставить свой API-ключ:
from aiogram import Bot, Dispatcher, executor, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.types.message import ContentType bot = Bot(token=’ваш токен’, parse_mode=types.ParseMode.HTML) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) if __name__ == ‘__main__’: print(‘Бот запущен!’) executor.start_polling(dp, skip_updates=False, timeout=100)
Получилось тело будущего бота. Теперь добавим обработчик команды “/start”. Эта команда будет служить для запуска бота:
Как видно из кода обработчика команды /start, бот должен в ответ на получение команды отправить нам некое сообщение и reply_markup(). Этот reply_markup есть не что иное, как клавиатура для взаимодействия с ботом. Вставим функцию для создания клавиатуры перед обработчиком команд:
def initial_keyboard(): keyboard_markup = types.InlineKeyboardMarkup(row_width=1, resize_keyboard=True) keyboard_markup.insert(types.InlineKeyboardButton(text=’Распознать текст’, callback_data=f’ocr_rus’)) keyboard_markup.insert(types.InlineKeyboardButton(text=’Распознать текст’, callback_data=f’ocr_eng’)) keyboard_markup.insert(types.InlineKeyboardButton(text=’Переводчик’, callback_data=f’translate’)) return keyboard_markup
В эту клавиатуру мы добавили 3 кнопки: ‘Распознать текст’, ‘Распознать текст’, ‘Переводчик’. Так это выглядит в боте:
Красивые кнопки, еще и с эмодзи, ух! Но их нажатие сейчас ни к чему не приведет. Чтобы это исправить, необходим обработчик кнопок. Сначала посмотрите на код для создания клавиатуры – там у каждой кнопки есть своя callback_data. Это строка содержит информацию, которую мы можем использовать для создания новых обработчиков. Как /start, только немного по-другому:
Это обработчик нажатия кнопки, в callback_data которой есть строка ‘ocr’. Кроме этой строки, там содержится еще и информация о необходимом языке, на котором будет распознаваться текст. Для определения языка и его отображения, используем функцию getFlagIndex:
async def getFlagIndex(region): flag = «» if region == «rus» else «» flagindex = flags[region] return flag, flagindex
Как вы можете заметить, в коде обработчика нет вызова клавиатуры. Но данные все еще нужно передать. Для этого воспользуемся «машиной состояний». Она поможет нам установить необходимые условия, чтобы следующий обработчик, проверив состояние, понял, что от него требуется. Более подробно о «машине состояний» и ее использовании написано в документации aiogram. Создадим ее, добавив следующий программный код перед обработчиками:
from aiogram.dispatcher.filters.state import State, StatesGroup class lang(StatesGroup): rusl = State() engl = State() transt = State()
В нашей «машине состояний» есть три состояния: русский язык, английский язык и переводчик.
Теперь, после нажатия кнопки «Распознать ru текст», состояние бота сменится с None на ‘lang:rusl’, а интерфейс нашего бота будет выглядеть так:
Теперь добавим обработчик изображений, учитывающий состояния для того, чтобы бот мог принять и преобразовать картинку в текст:
Как видно из кода, обработчик сработает в случае отправки контента (только фотографий), вместе с условием, что состояние либо ‘lang:rusl’, либо ‘lang:engl’. Кстати, не забывайте про сброс состояний, иначе следующий обработчик, который не принимает состояния, может не сработать – сделайте await state.finish(). Еще в коде есть асинхронная функция processImage(). Она служит для преобразования изображений в текст, и для ее работы нам понадобится импортировать библиотеки pytesseract, pathlib и PIL:
import pytesseract pytesseract.pytesseract.tesseract_cmd = r’C:Program FilesTesseract-OCRtesseract.exe’ from pathlib import Path from PIL import Image async def processImage(uid, lang, dir): text = pytesseract.image_to_string(Image.open(f’_photo.jpg’), lang=lang) Path(f’/userpic/_photo.jpg’).unlink() # удаление картинки return text
Теперь можно отправлять боту картинку. В ответ вернется текст с картинки, после чего бот предложит воспользоваться функцией распознавания заново:
Распознавание работает. Кстати, благодаря функционалу telegram и некоторой магии, текст можно копировать, просто нажав на него. Теперь настроим переводчик. Для этого нам понадобится функция – обработчик callback_data из кнопки «Переводчик»:
В этой функции мы задали состояние lang.transt. Теперь после нажатия кнопки «Переводчик» наш бот будет выглядеть так:
Ожидается отправка пользователем текста. Создадим обработчик и для этого:
Здесь используется функция translateText(). Для ее работы придется импортировать googletrans и langdetect. А для красивого отображения — вернем флаг, обозначающий исходный текст:
from googletrans import Translator from langdetect import detect async def translateText(inp): dest = «ru» if detect(inp) == «en» else «en» flag_origin = «» if detect(inp) == «en» else «» tr = Translator() result = tr.translate(inp, dest=dest).text return flag_origin, result
Переведем текст в интерфейсе бота:
Таким образом, мы получили полезного бота, который не только может распознавать текст на двух языках, но и переводить его. В качестве сервера можно оставить включенный компьютер, микрокомпьютер или арендовать хостинг. Такой программе не нужно много вычислительной мощности, любого самого дешевого сервера хватит.
Спасибо за внимание! Пишите в комментариях, какой бот пригодился бы вам! А скачать и посмотреть полную версию кода можно по ссылке на GitHub!
Источник: newtechaudit.ru
Telegram – регистрация и настройка бота
Переписываю старую статью дабы более полно отделить и структурировать информацию. В данной статье речь пойдет о создании своего собственного бота и приглашение его в чат!
Создаем бота
Теперь заходим в настройки бота и позволяем ему читать все сообщения в чате. Это упростит поиск айди канала в который ми пригласим бота чуть ниже.
Создаем чат и приглашаем в него бота
Чат создается в пару кликов. В главном меню выбираем NEW CHANNEL и заполняем имя и адрес. Можно отправлять текст на имя чата – публичный чат и на его id – приватный! Теперь заходим на бота и активируем его, будет кнопка или можно командой /start
Через меню бота находим пункт меню Add to group и вступаем в только что созданный чат. На этом для публичного чата подготовка завершена, но если у вас приватный чат, присылать сообщения на имя чата не получится и понадобится его id. Чтобы его узнать, пишем в чат с приглашенным ботом любой текст и следуем по ссылке:
https://api.telegram.org/bot 273805635:AAGQOuPVadtQyEx0COPrDnq2r-YmUo90xaU /getUpdates
Источник: devarts.pro