Как отвечать через бота в Телеграмме

Очень полезный помощник для администратора канал в Telegram. Позволяет общаться с подписчиками канала. Все диалоги в одном окне. Возможность использовать весь функционал Телеграм для получения обратной связи.

Вариант бота на Node.js описан в отдельной статье

Начинаем работать

Данные от Bot API приходят в формате application/json, поэтому доступа к ним через массив $_POST нет, и брать их будем в «сыром», необработанном виде через ‘php://input’ используя встроенную функцию PHP file_get_contents(). В работе мы будем использовать кодировку UTF-8, это требование Telegram Bot API. Определим ее в начале скрипта index.php. Создадим класс Bot, для начала добавим ему два приватных свойства и один публичный метод. Очень часто я в коде буду использовать в качестве условного оператора тернарный оператор.

init(‘php://input’); // Класс Bot class Bot < // токен API private $botToken = «34069ХХХХ:XXXXXXXXXXXX-XXXXXXXXXXXXKVW3qILFpY»; // Ваш ID Telegram private $adminId = 123456789; // инициализируем объект класса public function init($data) < >> ?>

Создадим еще один метод, сделаем его приватным т.к. он нужен нам только внутри класса, вызываться из вне как публичный метод init() он не будет. Его задача будет преобразовывать через функцию json_decode() преданные ему данные из JSON в ассоциативный массив, назовем его getData() .

Бот для обратной связи | отдела поддержки | отдела продаж | самый простой способ

Для отладки можно создать метод, который будет записывать в файл все результаты работы метода getData(). Это очень удобно, ведь можно посмотреть какую информацию отправляет нам Bot API. На входе он принимает результат метода getData(). Вызывать метод можно вот так: $this->setFileLog($data);

Находим наш бот в Telegram и запускаем его. Бот примет нашу команду Strat/Старт, обработает и запишет результат в файл. Теперь мы можем рассмотреть содержимое файла.

Array ( [update_id] => 22918823 [message] => Array ( [message_id] => 1 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => Name [last_name] => Surname [language_code] => ru ) [chat] => Array ( [id] => 123456789 [first_name] => Name [last_name] => Surname [type] => private ) [date] => 1512554545 [text] => /start [entities] => Array ( [0] => Array ( [offset] => 0 [length] => 6 [type] => bot_command ) ) ) )

Как видно из содержимого, приходит много служебной информации.

Сейчас нас интересует элемент массива $data[‘message’] , который тоже является массивом и содержит в себе информацию, с которой предстоит работать. Проверяя наличие нужных нам ключей в массиве, мы можем определить какой тип данных был отправлен боту. Для данного бота важно определить кто написал, ведь от этого зависит куда направлять сообщение. У нас предусмотрено две роли: администратор и пользователь. Есть еще один участник — это сам бот. Мы его будет определять по специальному флагу, но это чуть позже. * * *

Мои первые ошибки

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

как сделать и отвечать за бота в telegram? ответ тут!!

Решение пришло из официальной документации

Источник: imakebots.ru

Телеграм бот для поддержки своими руками

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

Еще по теме:  Скачать архив сообщений ТГ

Или, например, вы продаете что-то через свой канал. Клиентов так много, что один «продажник» (=вы) не справляется. Или поддержка вашего бизнеса отвечает всем в публичном чате, который прикреплен к вашему каналу. Но многие стесняются задать вопросы, так как их могут увидеть, поэтому пишут в личку, что не масштабируется.

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

Мое мнение: это самый лучшее применение телеграм ботов за всю историю их существования. На втором месте — рассылка закрытой информации через бота только проплатившим пользователям.

Самый популярный конструктор таких ботов — Livegrambot. Он позволяет сделать тоже самое, но при этом бот будет писать вашим пользователям «я сделан через Livegrambot», выпрашивая деньги у вас. Будучи умелым создателем Телеграм ботов, я решил сделать свой аналог, но уже с открытым исходным кодом и легким способом запустить его бесплатно на бесплатные серверы.

Ниже я расскажу, как в 1 клик запустить такого бота и как он технически устроен.

Юзер стори или как с этим ботом работать.

  • Ваши Пользователи (читатели канала, клиенты),
  • Закрытый Чат Поддержки (где сидят те, кто будет отвечать на вопросы Пользователей),
  • Бот (которому Пользователи будут писать свои вопросы).

Вот так это все будет работать:

  1. Вы публикуете ссылку на Бота,
  2. Пользователи пишут в него свои вопросы,
  3. Бот пересылает их сообщения в ваш Чат Поддержки,
  4. В этом чате вы или ваши помощники отвечают на сообщение (через reply),
  5. Бот пересылает ответ обратно пользователю от своего лица, скрывая аккаунт отвечающего.

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

Как это все запустить? Желательно, без навыков.

Планируя дизраптнуть платный аналог, необходимо продумать онбординг. Большинству проще заплатить, чем самому разбираться в коде, технологии и деплое. К счастью, я фанат Heroku, а именно там можно бесплатно хостить свой код, нажав всего одну кнопку.

В README.md я добавил волшебную кнопку от Heroku, которая поможет запустить код из репозитория. После нажатия, при наличии аккаунта на Heroku (который можно создать также по 1 кнопке), вы увидите такую картину:

Heroku уже понял, какие данные нужно запросить у вас, у создателя, чтобы все завелось автоматически. Давайте пройдемся по этим параметрам:

— App name: название приложения в системе Heroku. Можно придумать любое.

— Choose a region: где Хероку запустит ваш код. Можно выбрать любое место.

— HEROKU_APP_NAME : впишите сюда тоже самое, что указали выше в App name (это важно для того, чтобы завести тг бота через вебхуки).

— TELEGRAM_SUPPORT_CHAT_ID : айдишник чата, куда Телеграм бот будет пересылать сообщения пользователей. Как узнать его — смотрите ниже.

— TELEGRAM_TOKEN : токен вашего бота, который можно получить у BotFather.

Как узнать TELEGRAMSUPPORTCHAT_ID

Способов много, но самый простой — это добавить вот этого бота в ваш созданный приватный чат. Этот бот возвращает все данные, которые ему присылает Телеграм, в частности событие «меня добавили в чат», откуда вы и сможете извлечь chat_id .

Как реализовать такого бота?

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

Примеры кода я буду писать на языке Python и использовать библиотеку python-telegram-bot . Итогда я буду вставлять ссылки на GitHub (гит), чтобы легко можно было найти этот кусок кода в моем репозитории.

Еще по теме:  Что делать если нету доступа к Телеграмм но код надо ввести

Хендлеры (обработчики событий)

Для нашей задумки необходимы всего 3 хендлера (гит):

from telegram.ext import Updater from telegram.ext import CommandHandler, MessageHandler, Filters updater = Updater(TELEGRAM_TOKEN) dp = updater.dispatcher # Для приветственного сообщения и для «к вам подключился » dp.add_handler(CommandHandler(‘start’, start)) # Для пересылки из бота в чат поддержки dp.add_handler(MessageHandler(Filters.chat_type.private, forward_to_chat)) # Для пересылки ответа из чата обратно пользователю dp.add_handler(MessageHandler(Filters.chat(TELEGRAM_SUPPORT_CHAT_ID) Filters.reply, forward_to_user))

С командой /start все понятно. Юзер нажал — прислать приветственное сообщение — прислать в чат поддержки о том, что подключился новый юзер (гит).

def start(update, context): update.message.reply_text(WELCOME_MESSAGE) user_info = update.message.from_user.to_dict() context.bot.send_message( chat_id=TELEGRAM_SUPPORT_CHAT_ID, text=f»? Connected .», )

В случае пересылки ботом сообщения пользователя из лички в чат поддержки, тоже все просто (гит):

def forward_to_chat(update, context): update.message.forward(chat_id=TELEGRAM_SUPPORT_CHAT_ID)

В случае отправление ответа (reply) на пересланное сообщение, необходимо скопировать содержимое сообщения и отправить его от лица бота. Если аналогично сделать .forward , то будет виден отправитель. А тут как раз недавно в Telegram Bot API добавили возможность удобно копировать содержимое сообщения (гит):

def forward_to_user(update, context): user_id = update.message.reply_to_message.forward_from.id context.bot.copy_message( message_id=update.message.message_id, chat_id=user_id, from_chat_id=update.message.chat_id )

Бесплатный деплой на Heroku

Чтобы захостить это все бесплатно на Heroku, бот должен быть запущен в режиме Webhook, а не Pooling. Разница их в том, что вебхук «слушает новые сообщения от Телеги», а пулинг «периодически запрашивает». Чтобы запрашивать, сервер должен работать постоянно (условно, каждую секунду запрашивать у серверов Телеграмма новые сообщения, которые кто-то написал в бот). Однако, в случае с вебхуками, сервер может просто ждать, когда серверы Телеграмма сами отправят нам новые обновления бота.

Этот факт критически важен, если мы хотим бесплатно пользоваться услугами Heroku (который по факту дает нам свои серверы в аренду). Хероку любит «усыплять» простаивающие машины, которые пробуждаются в момент нового входящего запроса. Именно новые сообщения от серверов Телеграмма и будут пробуждать наш сервер тогда, когда необходимо переслать пользовательское сообщение из лички бота в наш чат поддержки.

Для того, чтобы настроить Webhook, необходимо поднять вебсервер, который будет слушать входящие сообщения по endpoint. Сказать Телеграму: «присылай события бота мне на сервер — по этому адресу». Также нужно как-нибудь защититься от злоумышленников, которые могут отправить на наш вебсервер событие, прикинувшись сервером телеги. Также телеграм требует, чтобы все работало https.

Звучит сложно, однако Heroku автоматически и бесплатно обеспечит https, а вебсервер для вебхука уже встроен в библиотеку python-telegram-bot . Если добавить секретный токен вашего бота в URL, по которому вы будете слушать события от Телеги, то можно защититься от стороннего вмешательства.

Вот как можно запустить Телеграм бот в webhook-режиме (гит) через эту библиотеку:

# запускаем слушающий вебсервер updater.start_webhook( listen=»0.0.0.0″, port=PORT, # HEROKU требует, чтобы порт вебсервера задавался через переменные окружения url_path=TELEGRAM_TOKEN # добавляем секретное значение в адрес, который слушаем ) # говорим Телеграму: «присылай события бота по этому адресу» updater.bot.set_webhook(f»https://.herokuapp.com/») updater.idle()

Помните, мы отдельно задавали переменную окружения HEROKU_APP_NAME , куда копипастили название нашей Heroku App? Дело в том, что эта переменная используется в адресе, по которому Heroku запускает наш вебсервер. Но при этом, имя приложения Хероку нельзя получить изнутри, поэтому решение «скопипастить название App Name в отдельную переменную окружения» для меня звучит норм.

Допустим, вы запустили бота, у вас уже много клиентов и вы хотите усовершенствовать функционал телеграм бота. Что можно сделать?

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

Еще по теме:  Как добавить музыку из Телеграмма в аймуви

Спасибо за просмотр. Теперь вы знаете, как можно сделать и бесплатно задеплоить Телеграм бота поддержки. Полный код проекта (вместе с волшебной кнопкой «задеплой это на хероку») лежит тут. В своем Телеграм канале я делюсь опытом разработки больших телеграм ботов, делюсь датасетами и продуктовой аналитикой. Заходите.

А какие другие популярные юзкейсы Телеграм ботов вы бы выделили? Напишите в комментариях.

  • telegrambot
  • поддержка
  • python
  • python-telegram-bot
  • поддержка пользователей
  • поддержка клиентов
  • телеграм-бот

Источник: habr.com

Как создать в Телеграме чат-бот для ответов на частые вопросы родителей. Инструкция

Педсовет

Фотографии: Unsplash. Иллюстрация: Юлия Замжицкая.

Эта инструкция поможет педагогам меньше чем за час создать простейший чат-бот, который автоматически ответит на 90 процентов родительских вопросов. Он поможет без участия учителя узнать расписание уроков, уточнить домашние задание, посмотреть фото с классных мероприятий и многое другое.

2. Напишите или выберите в меню/newbot — это команда к созданию нового чата.

3. Придумайте и введите название для своего бота — кириллицей или латиницей. Если передумаете, потом его можно будет легко изменить:

4. Затем придумайте юзернейм (он будет отображаться в ссылках). Он должен быть написан латиницей, может содержать цифры и нижнее подчеркивание и обязательно должен иметь окончание bot.

Например, SpravkaBot или spravka_bot.

А еще он должен быть уникальным. Если придуманный вами юзернейм уже занят, придется попотеть.

Когда корректный юзернейм будет подобран, вы получите в ответ сообщение с токеном (это секретный ключ-идентификатор бота). Что-то вроде такого:

Скопировать токен можно, кликнув по нему. Дальше он вам еще пригодится.

6. Теперь можно создать короткое описание вашего бота (пользователь будет видеть его, заходят в чат). Выберите/введите команду /setdescription и введите ответ на вопрос «Что умеет этот бот?» (именно так, вместе с этим вопросом, ваше описание увидят пользователи).

7. На этом базовые настройки бота завершены. Если что-то не нравится, всегда можно изменить их через команду /mybots.

10. Теперь можно перейти по ссылке в ваш собственный бот и продолжить настройку уже там. Нажмите на «Запустить», выберите язык.

11. Теперь можно добавлять кнопки: для этого выберите команду «Редактор кнопок», затем — «Добавить кнопку» и введите ее название.

Например «Расписание». Когда необходимые кнопки добавлены, нажмите на «Стоп редактор».

12. Теперь нужно сделать так, чтобы при нажатии на кнопку пользователю автоматически отправлялась нужная информация. Для этого нажмите на кнопку «Редактор постов» в главном меню и выберите кнопку, к которой хотите добавить информацию. Выберите команду «Добавить сообщение».

13. Теперь наберите нужное сообщение или прикрепите файл — например, картинку.

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

14. Еще одна полезная функция — рассылка: можно моментально оповестить всех пользователей бота, например, об изменении в расписании. Чтобы сделать рассылку, нажмите на кнопку «Админ» и выберите команду «Рассылка». Введите сообщение, которое хотите разослать, и нажмите на кнопку «Отправить».

Готово! Теперь бот будет мгновенно отвечать на повторяющиеся вопросы родителей, избавив учителя от головной боли, а их — от досадного ожидания.

Идея инструкции взята из блога Натальи Смарыгиной во Вконтакте.

Материалы по теме:

Если вам нравятся материалы на Педсовете, подпишитесь на наш канал в Телеграме, чтобы быть в курсе событий раньше всех.

Источник: pedsovet.org

Рейтинг
( Пока оценок нет )
Загрузка ...