[Из песочницы] Чат-помощник на сайт с помощью Telegram за 15 минут

17d640f4192640cfa7daf47f4f163ea6.png

Про чаты-помощники


Многие люди продают через интернет товары и услуги. Еще больше людей — покупает что-то через интернет.
Во время выбора покупок, часто возникают вопросы, которые можно решить позвонив и пообщавшись с менеджером.
Скорее всего я — не единственный человек на хабре, который общению с менеджерами по телефону предпочитает переписку.
И тут на помощь приходят всплывающие чаты-помощники, которые вроде-как повышают конверсию, но многих нервируют.
(Для тех, кто не в курсе: в углу сайта всплывает окошко, в котором можно он-лайн переписываться с консультантом).

Есть с десяток подобных сервисов и все они работают по принципу »пробная версия бесплатно, а дальше за деньги».
На хабре есть несколько статей, вот одна из них (http://habrahabr.ru/company/tuthost/blog/165365/), но, я уверен, аудитория Хабрахабра знает о чем речь.
Большинству людей подойдет бесплатный вариант любого такого сервиса: нужно всего-навсего зарегистрироваться и вставить на сайт кусок JS кода. Для тех у кого много менеджеров — придется платить: например Редхелпер на 10 операторов обойдется Вам:

115200 руб. за 1 год
f25766638fd642969cafff3b300094ec.png

Скорее всего — цена адекватная для тех, кто платит зарплату десяти менеджерам.

Но я решил изобрести бесплатный «велосипед» из подручных материалов.
Запуск у себя на сервере займет 15 минут. Всем, кому идея интересна — прошу под кат.

Telegram BOT


Набирающий популярность за границей мессенджер Telegram недавно представил новое API для разработки ботов. Штука — интересная, ей можно найти множество применений. Теперь можно создать бота (написать программу), который будет отвечать на Ваши вопросы, выполнять определнные команды и все это в окне переписки мессенджера Telegram.

Именно на основе мессенджера Telegram и его API для ботов будет работать наш бесплатный, безлимитный чат-помощник-на-сайт.

Общая схема идеи — на картинке:

5facc9048483406ab0eba3820cce44fa.png

Вот так это происходит:

  1. Пользователи на сайте пишут в чат
  2. Сообщение это улетает на Ваш сервер
  3. Оттуда Telegram-бот пересылает его нужному менеджеру
  4. Менеджер отвечает через Telegram
  5. Бот отправляет сообщение обратно в чат_на_сайте

Реализация


Итак, для запуска «у себя» Вам понадобится:

  1. Сервер, VPS или хостинг, на котором есть актуальный PHP, поддержка SQLite и возможность сделать set_time_limit (0) (т.е. сделать работу php скрипта не ограниченной по времени)
  2. Приложение Telegram (на смартфоне или компьютере)
  3. Базовые знания PHP


Внимание! Вы запускаете этот код на свой страх и риск! Я потратил на него несколько часов и возможно там полно ошибок!

План действий такой:

0) Скачиваем с ГитХаба исходники:
https://github.com/Surzhikov/TelegramSiteHelper

1) Регистрируем нового бота в Telegram.
Для этого нужен только смартфон и 2 минуты.
Заходим в Telegram, добавляем пользователя @BotFather и шлем ему команду »/newbot»
Далее по инструкции: придумываем имя, юзернейм, пишем about и загружаем фотку.
Результатом всего должен получиться API Key с помощью которого мы будем работать с BotAPI.
У меня получилось вот так:

6dea350f710b4afe9c03f94702aecf49.png

(Сообщение в котором фигурирует мой API Key я удалил)

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

3) Заливаем все на свой сервер

4) Запускаем нашего бота — фоновый процесс getUpdates.php
Он должен работать бесконечно, поэтому рекомендую поставить его в автозагрузку сервера.
Для надежности можно поставить запуск скрипта в crontab каждую минуту.
Скрипт будет запускаться в единичном экземпляре, все повторные запуски сразу же завершатся.

5) Регистрируем нового менеджера
Со смартфона менеджера заходим в телеграм и добавляем нашего нового бота (того, которого Вы только что создали)
Пишем ему команду:»/newmanager пароль_для_менеджеров». В ответ получаем приветствие.

e278823f206a4c39aeb886902500c0e1.png

Операцию повторяем нужное количество раз, для каждого менеджера.
Если на данном этапе Вы не получили ответ от Бота — значит что-то не работает!

6) Проверяем
Переходим на страницу index.html (то есть заходим на адрес mysite.ru/index.php, а не открываем локально).
Там находится небольшой, на скорую руку сверстанный чат.
Если отправить сообщение в этот чат, бот выберет случайного менеджера и перешлет ему это сообщение.

cbf50e45825a48ce92b8eac34ba7d875.png

Вот здесь интересный момент:
Клиентов (покупателей) может быть много, а менеджер — один.
Менеджер общается с клиентами посредством Telegram-бота.
Если одновременно два (или больше) клиентов написали сообщение, а менеджер отвечает им по очереди, Telegram-боту нужно как-то указать, какому из клиентов отправить ответ.
Для этого я сделал команду »/answer_№ЧАТА». После отправки этой команды все письма менеджера уходят в нужный веб-чат.

09ecbdd2e843492db55365ea5064bb46.png

Минусы, плюсы, что можно доделать


Минусы

  1. Сейчас чат сделан «на скорую руку», чтобы скорее запустить в своем проекте. Есть много лазеек, с помощью которых например можно писать в чужой чат и подглядеть чужую переписку.
  2. Сейчас эти проблемы меня не тревожат, потому как в чате-помощнике на сайте у нас не принято передавать важную и секретную информацию.
  3. Когда менеджер один, а клиентов много — можно запутаться, кому отвечаешь.
  4. … Буду дополнять из комментариев

Плюсы:

  1. Это работает!
  2. Бесплатно навсегда и на любое количество менеджеров
  3. Не нужно лишних приложений, только телеграм, который есть для всех популярных платформ
  4. Можно переписать и стилизовать чат так, как Вам хочется.
  5. Telegram работает очень быстро
  6. … Буду дополнять из комментариев

Что можно сделать:

  1. Защита от дурака и работа над безопасностью
  2. Умную систему распределения сообщений между менеджерами (сейчас бот направляет сообщение случайному менеджеру)
  3. Автоматические ответы от бота, когда менеджер долго молчит
  4. Добавить имя и фото менеджера, который отвечает в чате
  5. … Буду дополнять из комментариев

Спасибо за внимание.

© Habrahabr.ru