Сегодня выигрывает тот бизнес, где клиент получает ответ на запрос быстро, четко и по существу. Рост популярности голосовых и текстовых ботов происходит по всем каналам. Особенно в этом преуспел Telegram: у площадки user-friendly интерфейс и развитое API для запуска ботов.
Оставаясь в рамках Telegram, не перекидывая клиента на сайт, ты можешь в одном канале рассказать про товар, продать его, получить деньги, договориться о доставке и проинформировать клиента о приезде курьера
Артем Мельников, менеджер продукта
Продвинутые боты успешно заменяют собой мобильные приложения и даже сайты.
В этом материале мы даем простые лайфхаки по созданию чат-бота в Telegram, а наш чек-лист поможет проверить, что все сделано правильно.
Эксперты Just AI
Артем Мельников
менеджер продукта
Наталья Лаптиева
руководитель технической поддержки
Содержание
Этап № 1. Анализируем
Отдельный этап разработки – понять, для кого и ради чего нужен чат-бот. Ведь у вас появится полноценный онлайн-сотрудник с высочайшей производительностью. Боты могут развлекать, обучать, консультировать в чате, по телефону или в рассылке и все это в режиме 24/7.
Чаще всего ботам поручают скучные и рутинные процессы. Например, банк напоминает клиентам о текущем платеже, а поликлиника оформляет визит врача на дом пациентам с острой болью. Определив бизнес-модель и функционал бота, вы сможете прописать его tone of voice и найти подходящую технологическую платформу.
Этап № 2. Выбираем решение
Как известно, запустить бота можно несколькими способами – купить готовый, заказать разработчику или сделать самому. По какому пути идти, зависит от требований к функционалу, времени на реализацию и вашей подготовки.
Если вам нужен бот с несложной логикой и узкой специализацией, подойдет и готовое решение. Когда требуется реализация сложных сценариев, стоит задуматься об использовании профессиональных инструментов разработки – диалоговых платформ и фреймворков
Наталья Лаптиева
Этап № 3. Пишем сценарий
Хороший сервис должен быть незаметен. С ботами эта логика действует как нигде еще. Разрабатывая сценарий, вы должны «думать как клиент». Чтобы этого добиться, нужно сформировать базу знаний клиентского опыта. Именно вы понимаете контекст и истинные потребности своих заказчиков.
Сценарий – это диалог между ботом и клиентом.
Пример сценария в редакторе Aimylogic
Готовые решения для создания ботов помогают разработать сценарий быстрее и проще. Например, в Aimylogic уже встроены готовые интенты. Вам только остается подключить нужный блок в диалог. Созданный бот может не только отправлять сообщения, но и делиться картинками, стикерами, музыкой. Это нужно учитывать при написании сценария.
Готовые интенты — это заранее подготовленный список возможных реакций клиента, например, на приветствие или прощание.
Готовые интенты в Aimylogic
Когда карта диалогов прописана, нужно определиться с дополнительным функционалом. Будет ли бот дублировать информацию в сторонний сервис или проверять наличие товара перед оплатой. Всегда оставляйте возможность перевода разговора на человека. И добавьте вашему боту персонализации. Называя клиента по имени, вы повышаете лояльность к сервису.
Не забывайте, боты не всегда могут заменить человека на 100%. В некоторых случаях боту потребуется поддержка оператора. Тут важно передать сотруднику колл-центра всю историю взаимодействия, чтобы клиенту не пришлось отвечать на одни и те же вопросы по второму кругу
Артем Мельников
После того, как сценарий создан, можно переходить в Telegram.
Этап № 4. Публикуем бота
Если название не занято, BotFather сгенерирует боту ссылку и токен. С помощью токена вы сможете сменить имя /setname, добавить описание /setdescription и аватар /setuserpic. На этом же этапе подумайте, каких кнопок с командами не хватает вашему боту. Для их создания нужно зайти в раздел «Настроить гл. меню».
Токен – уникальный ключ, который используется для доступа к Bot API.
Когда токен получен, нужно перейти в настройки каналов в том продукте, который вы используйте. Например, в Aimylogic – это раздел «Каналы». Там нужно выбрать Telegram, в поле токен вставляется код, полученный в мессенджере. Если все сделано правильно, индикатор загорится зеленым — наш бот опубликован.
Теперь можно перейти в приложение Telegram и протестировать его работу.
Раздел «Каналы» в Aimylogic
Очень полезно проводить демо-тестирование или запускать бета-версию на небольшой круг клиентов. Вы сможете оценить, какой путь проходит пользователь, и насколько бот помогает ему в решении проблем. Используя эти знания, уже можно отправляться в «большое плавание»
Наталия Лаптева
Этап № 5. Оцениваем эффективность
Самостоятельная разработка ботов, отвечающих на вопросы, для чата в Telegram
Полезное
Автор Анна Сергеева На чтение 5 мин Просмотров 867
Telegram-боты помогают решать все больше повседневных задач, поэтому я расскажу о том, как создать бота в «Телеграмме». Инструкция позволит сделать его каждому пользователю, включая тех, кто не обладает опытом в программировании.
Возможности ботов в «Телеграме»
Telegram Bot несложно самому ввести в чат или канал, подключить к программам автоматизации. Базовая функциональность дополняется использованием конструкторов, системы которых решают частые и стандартные проблемы: проводят анализ статистики, модерацию сообщений, внедряют формы обратной связи. Сложные, нетипичные инструменты делают разработчики.
Ограничения ботов в ТГ
Сервисы-конструкторы имеют ограниченный список опций, не всегда полностью отвечают потребностям. Индивидуальная настройка поведения приложения, отличающегося от разработанных сценариев, осуществима при помощи программируемых скриптов. Обязательные условия применения WebHook – валидный сертификат и соединение по https.
Как создать бота в Telegram
Для воплощения вашей идеи достаточно телефона или компьютера и нескольких минут. Чтобы пошагово продемонстрировать, как создать бота в «Телеграме», сама выполню необходимые действия.
Регистрация бота
Ввела и мне пришли поздравления с созданием нового робота, токен для обращения к нему. Это ключ – длинный набор знаков, который понадобится для управления программой. Потребуется скопировать его и сохранить, в результате я бесплатно и быстро осуществила регистрацию.
Также читайте: Возможно ли узнать количество пользователей в группе, если подписчики скрыты — как увидеть
Программирование и настройка
Добавляю функции своему произведению. Это делается 2 способами. Первый предполагает использование сервисов-конструкторов, второй – навыков программирования.
Для работы с конструкторами нужно сначала подключиться к ним, пригодится ранее сохраненный токен. В поисковой строке ТГ ввожу название сервиса, например, Manybot. Начинаю с ним чат, выбираю язык, после клика по кнопке «Добавить нового бота» копирую, отправляю токен.
Теперь я могу создавать команды:
- Возвращаюсь в свой бот.
- Сразу после начала работы выбираю «Пользовательские команды» и создаю ее.
- Латинскими буквами после слеша ввожу название.
- Бот сможет ответить на нее одним или несколькими сообщениями после того, как я отправлю ему все, что хочу добавить к команде.
- Нажимаю «Сохранить».
Выполняю эти действия, команда для получения ответа на вопрос готова. Ввожу /Pogoda_zavtra. Пользователь получит ответ, заранее сохраненный мной.
Программист может обойтись без специальных сервисов, но сначала следует подготовиться к написанию кода. Например, если скрипт будет писаться с использованием Python, то язык предварительно устанавливается с официального сайта. Удобно пользоваться библиотекой Telebot.
Для Telegram работают 2 способа информирования бота о действиях пользователя: Webhook и Long Poll. Чтобы избежать настроек сервера, стоит выбрать второй.
Добавление кнопок
Пользователь не должен сам вводить поручения после слеша на латинском языке, поскольку для каждой команды формируется кликабельный интерфейс.
Например, для ответа на вопрос делается соответствующий пункт. После подключения к Manybot, выбора команд для пользователей настраиваю главное меню.
Далее следую единому алгоритму:
- добавление меню;
- определение команды;
- выбор названия для кнопки и отправка.
Разработчики могут создать кнопки для команд самостоятельно. Для этого редактируется код.
Проверка работоспособности
Перехожу по ссылке на своего бота, вижу отображенное расширенное меню с настройками. Пользователи должны видеть только созданные кнопки и команды.
Сервисы для создания ботов в Telegram
Специальные платформы-конструкторы позволят быстро стать разработчиком ботов с нуля. Их насчитывается более десятка, с каждым из них можно пошагово выполнить нужные действия.
Manybot
Бот-конструктор предлагает возможность делать рассылки подписанным пользователям, формировать меню и подменю, подключать RSS, Twitter, YouTube и VK. Функциональность предоставляется бесплатно, но нельзя отключить рекламные сообщения.
Chatforma
Puzzlebot
Платформа подходит для применения сложных инструментов, работы с группами и каналами. Поддерживается постинг, модерация, статистика. Также есть гибкие рассылки и приватные команды. Можно делить пользователей на категории, присваивать им разные права, менять отправленные сообщения. Присутствуют платный и свободный тарифы.
Telegrambot biz
Создает простые боты, способные рассылать текст, изображения, документы, прикреплять клавиатуру. Работает бесплатно и без рекламы.
Обзор
Источник: telegramguru.info
Создание Telegram-бота на Java: от идеи до деплоя
Что же такое вообще боты? Подробно почитать об этом можно здесь. Для начала вам необходимо ознакомиться с официальной документацией к библиотеке для разработки ботов на Telegram(далее API). Лежит она здесь. Там все очень доступно и понятно. Казалось бы, пиши да радуйся! Но не все так просто. Проведя много времени в поисковиках я находил отрывки знаний по разработке ботов, например, как сделать клавиатуру, обработать CallbackQuery и тому подобное. Полного и исчерпывающего руководства для разработки ботов на Java я так и не нашел. Это и натолкнуло меня на написание этой статьи. В Интернете много сайтов, где можно создать своего бота с уже готовым деплоем. Но дело в том. что в своем большинстве создаются боты, которые могут предоставить справочную информацию и прочее. Наш бот — полноценное веб-приложение, к которому можно привязать базу данных, выполнять запросы на различные API, парсить сайты, выполнять сложные вычисления и прочее. Дело ограничено только вашей фантазией. Я надеюсь что в этих строках я немного разъяснил вам о чем собираюсь писать. Бота в Telegram зарегистрировать очень просто, этот процесс подробно описан в документации по ссылке выше. Для нашего приложение необходимо знать только имя бота и токен, который вы получите при регистрации. По сути бот — просто консольное веб-приложение. Никакого фронтенда, чистая обработка команд. Если вы желаете хорошо освоить Hibernate или научиться парсить JSON, то такой проект для вас. Начнем с того чтобы подключить зависимость в pom.xml (подразумеваем что вы используете Maven). Сделать это можно так:
org.telegram telegrambots 3.5
Затем создаем класс Bot , унаследуем его от класса TelegramLongPollingBot , переопределив его методы:
Ну и содержимое метода main :
public static void main(String[] args) < ApiContextInitializer.init(); TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try < telegramBotsApi.registerBot(Bot.getBot()); >catch (TelegramApiRequestException e) < e.printStackTrace(); >>
Вписав в методы getBotUsername() и getBotToken() мы запускаем бота. Пока он только перенаправляет нам любые сообщения, которые мы отправим ему, этакое «зеркало». Работает это все следующим образом: когда вы запускаете приложение, оно начинает раз в n количество секунд отправлять на сервер Telegram GET запрос по следующему URL: https://api.telegram.org/BotToken/getMe, где BotToken – токен вашего бота, получая в ответ JSON, в котором находятся все сообщения. Каждое такое сообщение обрабатывается библиотекой и приходит в метод OnUpdateReceived(Update update) объектом Update . С ним то мы и работаем. В этом вся прелесть Telegram-ботов, они могут работать на любом компьютере, для тестирования нужно просто запустить приложение, не нужно деплоить его на хостинг после каждого изменения. Это очень удобно. Само собой бота можно настроить на работу по вебхуку, руководство можно найти на просторах Интернета, мы будем для простоты работать по LongPolling. То как обрабатывать сообщения и что отправлять в ответ ограничено только лишь средствами языка и библиотекой, все остальное на ваше усмотрение. Вы можете сделать бота, который будет искать для вас видео на YouTube, можете сделать бота, который каждый день будет присылать вам то, что вы отправите себе, к примеру, за год, эдакую капсулу времени. А можете научиться интегрироваться к CRM-системам и делать ботов для малого бизнеса, все ограничено вашей фантазией. Идем дальше. Те, кто пользовался ботами знают, что с ними удобно взаимодействовать командами, начинающимися со знака «/» , например /start . Но есть способ удобнее — кнопки. Есть два вида кнопок: те, что появляются под полем ввода, ReplyKeyboardMarkup и кнопки, которые находятся непосредственно под сообщением, к которому привязаны, InlineKeyboardMarkup . В документации вы можете поверхностно ознакомиться с их описанием. ReplyKeyboardMarkup. По сути это — массив массивов кнопок, List> . Вот пример кода, который создает клавиатуру
public synchronized void setButtons(SendMessage sendMessage) < // Создаем клавиуатуру ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); sendMessage.setReplyMarkup(replyKeyboardMarkup); replyKeyboardMarkup.setSelective(true); replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboard(false); // Создаем список строк клавиатуры Listkeyboard = new ArrayList<>(); // Первая строчка клавиатуры KeyboardRow keyboardFirstRow = new KeyboardRow(); // Добавляем кнопки в первую строчку клавиатуры keyboardFirstRow.add(new KeyboardButton(“Привет”)); // Вторая строчка клавиатуры KeyboardRow keyboardSecondRow = new KeyboardRow(); // Добавляем кнопки во вторую строчку клавиатуры keyboardSecondRow.add(new KeyboardButton(“Помощь”); // Добавляем все строчки клавиатуры в список keyboard.add(keyboardFirstRow); keyboard.add(keyboardSecondRow); // и устанваливаем этот список нашей клавиатуре replyKeyboardMarkup.setKeyboard(keyboard); >
В методе sendMsg() мы вызываем этот метод, передавая ему сообщение, таким образом устанавливая для такого сообщения клавиатуру. Когда мы отправим это сообщение пользователю, то он увидит текст сообщения, который мы установили, а также 2 кнопки, на которых будет написано Привет и Помощь, друг под дружкой. По нажатию на эти кнопки боту будет отправлено сообщение, текст которого представляет собой то, что написано на кнопке. То есть если клиент нажмет «Помощь», то боту придет сообщение с текстом “Помощь“. Для него это как будто бы клиент сам написал текст “Помощь“ и отправил бы ему. Ну а затем вы обрабатываете такие сообщения.
InlineKeyboardMarkup Это тоже массив массивов, он похож на предыдущий Markup, но логика работы здесь немного другая. Такая клавиатура привязывается к определенному сообщению и существует только для него. Вот метод для установки Inline-клавиатуры
private void setInline() < List> buttons = new ArrayList<>(); List buttons1 = new ArrayList<>(); buttons1.add(new InlineKeyboardButton().setText(“Кнопка“).setCallbackData(17)); buttons.add(buttons1); InlineKeyboardMarkup markupKeyboard = new InlineKeyboardMarkup(); markupKeyboard.setKeyboard(buttons); >
Создаем List в List , добавляем в первую строку Inline-кнопку. Такая кнопка может содержать URL, ссылку на канал или же CallbackQuery , о которой я напишу чуть позже. Здесь мы устанавливаем текст для нашей кнопки, который будет видеть пользователь, а затем устанавливаем данные, которые будут отправлены боту. В нашем примере пользователь видит «Привет», а боту при нажатии отправится число 17, это и есть наш CallbackQuery . Пару слов о CallbackQuery . Для получения таких данных из объекта Update нужно выполнить update.getCallbackQuery() , этот метод возвращает CallbackQuery , из которого уже можно получить данные, переданные боту. Не нужно пытаться получить эти данные через метод update.getMessage().getText() , получите NullPointerException .
Если есть сообщение, отправляем на обработку в новый поток сообщение, если есть CallbackQuery , отправляем его на обработку в соответствующий поток. На CallbackQuery можно отправлять ответ. У каждого объекта в Telegram есть свой id. Для отправки ответа на определенный CallbackQuery нужно знать лишь его id, который мы получим из соответствующего объекта. Для отправки ответа вызовем такой метод:
public synchronized void answerCallbackQuery(String callbackId, String message) < AnswerCallbackQuery answer = new AnswerCallbackQuery(); answer.setCallbackQueryId(callbackId); answer.setText(message); answer.setShowAlert(true); try < answerCallbackQuery(answer); >catch (TelegramApiException e) < e.printStackTrace(); >>
ВАЖНО: Текст в ответе на CallbackQuery должен быть не длиннее 200 символов! При отправке такого ответа клиент получит всплывающее окно, в котором будет написано сообщение. Такое окно может исчезнуть через несколько секунд само после появления, а может висеть до тех пор, пока пользователь не нажмет ок. Для переключения этих режимов мы вызываем метод answer.setShowAlert(true) . При true окошко висит до нажатия ок, при false исчезает через 5 секунд. В принципе это все базовые фишки библиотеки Telegram bot. Такие вещи как отправка мультимедиа, геолокации и тд вы при желании сможете освоить из документации. Давайте перейдем к деплою нашего бота на хостинге. Для своего проекта я выбрал Heroku, тк по моему мнению это достаточно удобный хостинг, который имеет свой CLI. Он бесплатен, но на таком тарифе ваш бот при отсутствии запросов будет уходить в спячку через 30 минут. Когда же к нему будет отправлен запрос, он просыпается. Это происходит довольно быстро, вы даже не заметите(если конечно коннект к БД не поднимается заново). Ограничение на бесплатный тариф — 5MБ база данных, 100МБ дисковое пространство, 2ТБ траффика в месяц, 1 дино. Дино — это ваше запущенное приложение. Скажу сразу, именно стадия деплоя вызвала у меня трудности, так как я до этого никогда не разворачивал свои приложения. Heroku при деплое требует наличия файла с именем Procfile(без расширения). Создаем его в корне проекта, пишем туда worker: sh target/bin/workerBot workerBot – имя, которое мы указываем в pom.xml Будет запускаться sh скрипт, генерируемый с помощью Maven плагина appassembler-maven-plugin. В скрипте описан запуск скомпилированного jar. Имя запускаемого класса указывается между , имя скрипта между pom.xml:
. . org.codehaus.mojo appassembler-maven-plugin 1.1.1 target com.home.server.TelegramBot workerBot package assemble
Перед началом этого процесса вам следует зарегистрироваться на Heroku, установить Git и Heroku CLI. Если вашему приложению необходима БД, то при оформлении нового приложения не забудьте добавить нужную вам БД. Далее вам необходимо узнать host, username, password и port вашей БД, а после указать в своем приложении. Далее перед деплоем выполните сборку вашего проекта с помощью Maven.
mvn clean install
Для начала мы переходим в каталог нашего проекта, инициализируем репозиторий командой git init Затем добавляем в этот репозиторий свой проект
git add .
После коммитим изменения
git commit -m “First commit in project”
Далее вам нужно залогиниться на heroku, пишем в командной строке
heroku login
Вводим свои данные, указаные при регистрации. После вам нужно узнать URL вашего репозитория на heroku, делается это в настройках. Затем пишем
git remote add heroku [url]
Для вашего репозитория добавится удаленный репозиторий heroku. Далее пишем
git push heroku master
Ждем… При успешном деплое приложения выполняем команду
heroku ps:scale worker=1
И все, ваше приложение запущено. Если же этого не произошло, просмотрите внимательно логи, скорее всего возникает ошибка в вашем приложении, из-за которой оно упало. Спасибо за прочтение такой длинной статьи, надеюсь кому-нибудь это окажется полезным и сэкономит массу времени в тех местах, где я спотыкался при разработке.
Источник: javarush.com