Pull to refresh

Comments 43

Почему getUpdates? Чем не подошел setWebhook?
Вероятно, из-за необходимости иметь SSL сертификат.
но ведь есть же бессплатные сертификаты
ну как пишут в интернетах тот же StartSSL не подходит, если разубедите меня в обратном, поставлю его :) сам бота пишу. Регать домен и получать, даже бесплатный, сертификат, ради того чтоб в итоге получит не рабочее приложение, того не стоит.
Очень даже подходит, мой бот не жалуется. Точнее, сервера телеграма на него не жалуются.
Хм, спасибо за информацию. Free'шный? или платный у них какой?
Бесплатный, тот который на год. Там важно сделать правильную цепочку сертификатов.
Можно продробнее что за цепочка?
А то вот такая ошибка на бесплатном сертифкате от StartSSL
Longman\TelegramBot\Exception\TelegramException: cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\base\basic\vendor\longman\telegram-bot\src\Request.php:184
Stack trace:

Если ещё актуально, нашел интересную статью о 3-ех летнем бесплатном сертификате. Правда ещё не пробовал.
В ней так-же есть ссылка на статью по настройке SSL в Ngnix — это чтобы вообще не париться и поднять всё минут за 20-30.
Уже настроил StartSSL все шикарно работает, но 3х летний сертификат заинтересовал :)
Чем не подходит?
Прекрасно работают и распознаются его сертификаты.
Нужен HTTPS, а для многих это лишняя проблема…
Получить бесплатный сертификат дело получаса, а удобства при работе через вебхуки куда больше чем изгаляться с getUpdates
Я не заметил ничего сложного в getUpdates. Метод поддерживает Long-Poll, что очень удобно, а скрипт который работает бесконечно — остался от одного из прошлых проектов. Единственный минус на мой взгляд — не на каждом хостинге запустишь.

Ну а если честно, я лишь однажды делал SSL и совсем не помню, как он настраивается.
Если мой трехчасовой труд перерастет в проект, обещаю, доделать Webhook ;)
В дополнение к статье автора: недавно выложил в opensource похожую систему.
Только там уже свой сервер для обработки и хранения чатов. Может кому пригодится :)
github.com/edolganov/live-chat-engine
Большим плюсом для Вашей системы будет связка административной части с одним из существующих мессенджеров.!
Да, вы правы. После вашей статьи понимаю, что это очень полезная фича.
О, коллега! Я начал делать похожий сервис, 1 в 1 :) Только не на PHP, а на Node.

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

Далее случайно была найдена Chatra.io. У нее уже есть все эти возможности и она бесплатная. Все нужные функции есть в бесплатной редакции. Мессенджер кроссплатформенный и гораздо удобнее реализован (кстати, похож на телеграмм).
Да, я даже не подумал об этой проблеме.
Дело в том, что у нас каждый сотрудников не много и каждый спокойно может быть менеджером и отвечать на вопросы клиентов.
Те кто реально отвечают на сообщения пользователей — носят с собой смартфоны с Telegram и отвечают оперативно, хоть в метро, хоть на отдыхе, хоть на пробежке (и такое бывает). У нас Telegram- это корпоративный чатик.

Но для больших компаний это конечно проблема (хотя я вижу несколько решений).

Кстати на сайте Chatra.io есть ограничение бесплатной версии «Число операторов онлайн — 5»
Какие решения? Писать сколько минут назад оператор был активен — не вариант.

По поводу 5 операторов, для небольших сайтов хватает с лихвой, тем более, никто не запрещает одновременно пользоваться аккаунтом одного оператора сразу на нескольких машинах.

Я этот сервис рассматривал как бюджетный вариант для небольших сайтов, на замену всяким JivoSite и пр, которые просят > 500 руб в месяц.
Оператор оффлайн потому-что он отошел в туалет/покурить?
Или его сегодня нет в офисе?

В первом случае — Charta не спасет нас, ведь «Писать сколько минут назад оператор был активен — не вариант». Тут у Telegram есть плюс, потому что его можно взять с собой.
Во втором случае — можно сделать ежедневную утреннюю регистрацию менеджера в офисе, через тот же бот.

Как вариант — через 10 секунд молчания — переключать чат на другого менеджера.

Может я не до конца проблему, опишите. В чем в данном случае преимущество Chatra.io над предложенным сервисом?

У вас предполагается, что оператор всегда за компом и отлучается от него ненадолго. В мелких конторах не держат операторов, отвечают на вопросы сами хозяева, они не всегда за компьютером. Т.е. они или есть или их нет.

Думаю что тут можно сделать таким образом: при нажатии посетителем на кнопку «Начать чат», окно с чатом раскрывается и оператору падает сообщение: «Новый посетитель с именем Вася входит в Чат...». В случае, если в течение определенного времени оператор ничего не пишет боту, то мы показываем посетителю надпись: «К сожалению нет операторов онлайн, но ваше сообщение мы обязательно прочитаем, напишите ваш email или сотовый чтобы мы могли связаться с вами». Вопрос только в том, насколько это сильно будет раздражать посетителей :)

Преимущество Chatra лично для меня получается в том, что удобнее переписываться с разными посетителями, не надо выискивать в истории кто кому написал в общем потоке. Ну и по вышесказанному тоже.
только что в чате чатры мне сказали, что у них есть мобильные приложения. Так что, их тоже можно взять в… хм, покурить 8-)
Хорошо 8-) вы дружно меня победили!
Удаляю реп, регистрируюсь в «чарте»!
Нет-нет, ни в коем случае.
реп пусть остается. Хоть я и не люблю РНР 8-)
но ссылочку засейвил, чтоб потом посмотреть, как сделано — вдруг возникнет таки желание навалять велосипед.
Вот и сдулся Chatra.io один оператор онлайн в бесплатной версии. И так с любым новым сервисом онлайн консультантов. Так что пилите Андрей. Оно того стоит.
Мы сделали telme.chat, работает, бесплатно.
Пока нет адекватной возможности создавать для каждого пользователя отдельной «чат-комнаты» с менеджером не вижу особой монетизации сервиса. Да и блокировки радости не прибавляют...)
Я не очень понял такую вещь — менеджер с помощью команды переключает свое окно чата на разных пользователей?
Получается, что все истории у него сваливаются в одно окно?
Понятно, что тут менеджер говорит с ботом, поэтому автоматическое разделение сеансов не работает.
Но можно ли как-то:
— разделить сеансы общения с одним и тем же ботом?
— дать этим сеансам разные имена?
Вот тоже очень напрягает сток всей переписки с разными клиентами в один поток.
В телеграмме же есть чаткомнаты (групповые чаты). Апи Бота позволяет создавать для каждого клиента свой групповой чат — с выбранным менеджером и подписывать его названием чата?
Я смотрел АПИ, но я не вижу там возможности для бота инициировать беседу или сделать ее групповой. Кроме того, по умолчанию, id индивидуального чата совпадает с id пользователя, что как бы намекает на дискуссию 1:1 без комнат — все в кучу.
Бот может получить уведомление, что чат стал групповым и что у него изменилось название. Но как он может сам это сделать — загадка.
У меня была мысль иметь для пользователя один центральный чат, в который будут присылаться ссылки на открывание отдельных чатов. Не очень понятно про core.telegram.org/bots#deep-linking
Если пользователю прислать ссылку с разными значениями start, у него будут открываться отдельные окна переписки?
telegram.me/triviabot?start=1
Following a link with the start parameter will open a one-on-one conversation with the bot, showing a START button in the place of the input field

Эта ссылка открывает тот же самый чат, на месте поля ввода — будет кнопка старт.

If the startgroup parameter is used, the user will be prompted to select a group to add the bot to

В случае, если передан параметр "startgroup" — Вам предложат выбрать группу в которую вы хотите добавить бота.

Your bot will receive a message from that user in this format:
/start PAYLOAD
PAYLOAD stands for the value of the start or startgroup parameter that was passed in the link.


Как только пользователь нажмет Start или добавит бота в группу, бот доставит Вам сообщение (через webhook или getupdates) «/start PAYLOAD», где PAYLOAD — это параметр переданный в ссылке.

А вот дальше (https://core.telegram.org/bots#deep-linking-example) я не разобрался и ничего не понял.
Если кто-то переведет и объяснит — буду благодарен.

Но вот про «создание_ботом_новых_чатов» я в API ничего не нашел…
Благодарю за объяснение.

> А вот дальше (https://core.telegram.org/bots#deep-linking-example) я не разобрался и ничего не понял.
Пример совершенно дурацкий — я тоже не сразу допер зачем же мне предлагают подключать memcache к телеграму. :)
На самом деле надо выкинуть все, что касается этого мемкеша, base64 и сразу становится понятно.

Задача: мы хотим авторизовать пользователя через телеграм.
1. Даем ему ссылку на нашего бота, в ссылку зашиваем рандомный ключ авторизации — тот самый PAYLOAD.
2. Пользователь тыкает на эту ссылку — у него откроется окно нашего бота. Внизу чата вместо поля для ввода текста у пользователя будет кнопка Start. Нажав ее, пользователь отправит боту сообщение /start PAYLOAD.
3. Бот получает сообщение:
{
         "message" : {
            "text" : "/start PAYLOAD",     //    <--------
            "date" : 1438985300,
            "message_id" : 16,
            "from" : {
               "first_name" : "Habra",
               "id" : 110304546,           //    <---------
               "last_name" : "User"
            },
            "chat" : {
               "id" : 110304546,
               "first_name" : "Habra",
               "last_name" : "User"
            }
         },
         "update_id" : 10336636
      }

4. По PAYLOAD понимаем кто именно из пользователей к нам пришел. Извлекаем id юзера, сохраняем себе в БД для аутентификации пользователя в будущем.
Я с Вами полностью согласен, это пожалуй единственная крупная проблема, которая мешает комфортно работать.
Красивых решений я пока не нашел. В текущей версии API — Бот создавать комнаты не может.

Вижу пару некрасивых решений:
1) оставить как есть и ждать доработок API
2) регистрировать на каждый проект десять+ ботов, чтобы распределять по ним чат

Если у Вас есть идеи, как можно решить эту проблему — буду рад услышать :)
Я был бы даже не против, если бы не бот, а человек сам создавал комнаты с подачи бота. Причем реализовать это очень просто, добавив параметры к запуску бота. Например, так:

https://telegram.me/Bot?startnew=PAYLOAD&title=Title+of+new+chat.

Пользователю придет команда на запуск отдельного чата с заданным заголовком с нашим же ботом.
Тем самым мы оставляем контроль за пользователем — бот все так же не может открыть новый чат с пользователем или написать ему первым, не может потихоньку переименовать комнату чата, чтобы пользователь по ошибке написал туда что-то ненужное. Можно даже сделать, чтобы все такие чаты имели заголовок вида «ИмяБота: Title+of+new+chat.» — тем самым сразу понятно по заголовку и картинке с каким именно ботом идет общение.

Как написать тикет с предложением в телеграм? :)
> 1) оставить как есть и ждать доработок API
Или попросить добавить.
Доработка минимальная, полностью укладывается в их стратегию.

> 2) регистрировать на каждый проект десять+ ботов, чтобы распределять по ним чат
После 20-го вам BotFather ответит )
Поможете сформулировать текст обращения к разработчкам Telegram?
Даже не знаю, как подступиться, ведь у них наверняка есть свой план развития…
Полностью переписал бота, теперь работает более стабильнее, теперь можно выбирать между sqlite и mysql

В планах:
— админ-панель со статистикой
— работа через webhook

https://github.com/Surzhikov/TelegramSiteHelper
У нас давно было нечто подобное с работой через аську.
Отлично работало с кучей клиентов, когда для каждого клиента генерился ID и бот воспринимал ответ вида ID сообщение клиенту
Круто!
Я когда-то пытался такую штуку на базе ICQ сделать, но во времена ICQ — мне еще не хватало знаний и умений для этого.
сыроват вариант. начал ловить 504.

[25-Oct-2015 15:09:58] [pool *****] pid 66509
script_filename = /usr/home/*****/www/bot/tbGetMessages.php
[0x0000000801821938] usleep() /usr/home/*****/www/bot/tbGetMessages.php:79
А собственно, какие преимущества делать интерфейс сервиса через telegram бота, вместо обыкновенного веб сайта адаптированного для мобильного?
Я пытаюсь их увидеть и пока вижу только, что бот имеет id user'a в telegram и потом владелец бота может контактировать с ним.
Интересно, может ли бот произвольно написать юзеру с которым когда-то общался?
Это было бы аналогом Android notification's

Only those users with full accounts are able to leave comments. Log in, please.