Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
Аватара пользователя
Ox1
Ку!
заинтересовала функция Telegram Bot, но не получилось активировать.
сервер при настройке возвращает ошибку "Result:{"ok":false,"error_code":400,"description":"Bad Request: bad webhook: HTTPS url must be provided for webhook"}"
что было сделано:
- был создан бот в Telegram, получен token
- включена интеграция в настройках сервера и прописан token
при нажатии "Подключить Bot" возникает вышеописанная ошибка

сервер установлен за NAT на стандартных портах (web порт 8081), в настройка прописывал внешний ip и пробрасывал порты на роутере, картина не менялась.
пробывал повесить web сервер на порт 8443 и пробрасывал данный порт, ошибка осталась (в документации telegram bot есть описание "На текущий момент отправка обновлений через вебхуки доступна только на эти порты: 443, 80, 88, 8443"). при стандартных настройка формируется webhook следующего вида (Webhook: http://XX.XX.XX.XX:8081/rest/Telegram/<token>/

как настраивается данный функционал?
Аватара пользователя
Андрей Раков
Добрый день.

Bad Request: bad webhook: HTTPS url must be provided for webhook

Для работы с телеграмом нужно включить шифрование HTTPS для веб-сервера, но тут есть один нюанс, у вас должен быть домен и сертификаты для него.

Начнем с домена, он у вас есть?
Аватара пользователя
Ox1
Домен отсутствует. Можно ли использовать самоподписанные/стандартные сертификаты?
Аватара пользователя
Андрей Раков
К сожалению самоподписные он не может проверить и не принимает.

Вот сервис, которым я воспользовался для создания сертификата для нашего сервера: https://zerossl.com/usage.html

В результате он создает сертификаты от Let's Encrypt.

Короткая инструкция:

1) делаем любой домен для вашего внешнего адреса, можно сделать бесплатный;

2) качаем генератор: https://github.com/do-know/Crypt-LE/releases, файл le32.zip;

3) настраиваем доступ из интернета к вашему веб-серверу, также нужен доступ по ICMP, чтобы сервис сертификации мог сделать "ping" вашего домена со своей стороны;

4) создаем папку "C:\Program Files (x86)\MyChat Server\node\server\www\lobby\.well-known\acme-challenge"

5) запускаем приложение из архива:
Код: Выделить всё
le32.exe --key account.key --csr mydomain.csr --csr-key mydomain.key --crt mydomain.crt --domains "ИМЯ_ВАШЕГО_ДОМЕНА" --path "C:/Program Files (x86)/MyChat Server/node/server/www/lobby/.well-known/acme-challenge"  --generate-missing --unlink --live

6) надеемся что все получится;

7) берем созданные сертификаты mydomain.key и mydomain.crt (валидны 90 дней, дальше нужно их обновлять);

8) заходим в админку, раздел "Настройки" - "Веб-сервисы", ставим галочку "Использовать шифрование", нажимаем на кнопку "Свои", выбираем "публичный ключ" — mydomain.crt, а "приватный ключ" — mydomain.key;

9) сохраняем, перезагружаем и ожидаем запуска веб-сервера с шифрованием, в адресной строке должен быть HTTPS;

10) теперь возвращаемся к веб-хуку телеграма и регистрируем его.

Подробно про генератор ключей: https://zerossl.com/usage.html
Аватара пользователя
Ox1
спасибо!
с доменом не много перепутал. Домен в виде Active Directory отсутствует =) доменное имя присутствует. тогда получается можно сформировать ssl сертификаты для домена и использовать их
Аватара пользователя
Ox1
сразу возникает вопрос безопасности открытого web сервера, так как он на старте предлагает сервисы и администраторскую панель. можно ли закрыть доступ до всех сервисов за исключением необходимого для работы бота?
Аватара пользователя
Андрей Раков
Добавьте в фильтры IP адреса, с которых можно входить в админку.
chrome_2017-06-14_11-49-15.png
chrome_2017-06-14_11-49-15.png (195.36 КБ) Просмотров: 16785
Аватара пользователя
Ox1
Спасибо! подключил webhook, осталось разобраться как его использовать и сопоставлять пользователей.

делал по инструкции, добалю пару моментов:
- создал дополнительный поддомен
- настроил nat на маршрутизаторе с 80 на 8081 порт, иначе при генерации сертификата скрипт не может проверить владельца домена, запрос приходит на стандартный порт
- директорию под windows создавать через "mkdir -p C:/Program Files (x86)/MyChat Server/node/server/www/lobby/.well-known/acme-challenge/", иначе каталог с точкой создать не получится.
- перевёл WebServer на 8443 порт, и подключил сертификаты

после этого webhook активировался
Аватара пользователя
Алексей Пикуров
Отлично.
осталось разобраться как его использовать и сопоставлять пользователей

По логике работы вам поможет свежая статья "Интеграция офисного чата MyChat и мессенджера Telegram".

Если будете что-то непонятно — создавайте новую тему, там поможем.
Аватара пользователя
Андрей Раков
Хочу уточнить, вы создали сертификаты, как я описал или у вас они уже были?
Аватара пользователя
Ox1
Сертификаты создал по вашей инструкции.

Дабы не плодить много тем. С указанным внешним адресом в виде IP не приходила регистрация от бота Telegram в MyChat (может были задержки), установил внешний адрес в виде домена, клиент зарегистрировался, но я не могу его сделать активным. После установки статуса активен, не выходит кнопки сохранить, а если сделать активным, потом подключить бота и сохранить настройки статус клиента не активируется.

Предлагаю ссылку на статью обновить в новостях:
https://nsoft-s.com/news/1154-mychat-6- ... onferenciy

ссылка в новости просто указывает на форум.
Аватара пользователя
Андрей Раков
После подключения бота, когда активируете пользователей, никакой кнопки "Сохранить" не должно быть. Вы должны активировать пользователя и привязать к телеграм-акаунту внутреннего пользователя и все.

Насчет ссылки — обновите страницу, там давно уже ссылка на статью.
Аватара пользователя
Ox1
Разобрался спасибо!
если сначала выбрать клиента, а потом активировать, статус не сохранялся
если активировать, а потом выбрать клиента, всё нормально
Аватара пользователя
Андрей Раков
Похоже в сохранении активации и пользователя есть какой-то баг, так как не имеет значение последовательность, разберемся...
Аватара пользователя
Алексей Пикуров
Поправили, обновите сервер.
Аватара пользователя
Ox1
Обновил поверх текущую установку, получил ошибку на запуске
1.jpg
1.jpg (36.43 КБ) Просмотров: 16759

при попытке закрыть приложение
2.jpg
2.jpg (22.1 КБ) Просмотров: 16759


ещё выходила ошибка с 00000000 в адресах

переустановил предыдущий билд, запустилось в штатном режиме, надеюсь с базой ничего не произошло
Аватара пользователя
Алексей Пикуров
Баг репорт можете дать?
Аватара пользователя
Алексей Пикуров
Обновите сервер, дистрибутивы пересобраны и перезалиты.
Аватара пользователя
Ox1
К сожалению в тот момент не подумал об этом (в принципе не ориентируюсь как его снимать), быстрее перенакатил предыдущий билд.
При подобных ситуациях постараюсь учесть баг репорт.
Аватара пользователя
Станислав Ц.
Добрый день!
2) качаем генератор: https://github.com/do-know/Crypt-LE/rel ... 3/le32.zip (зеркало на нашем сайте — https://nsoft-s.com/files/le/le32.zip);

А у меня вот на этом этапе, почему-то затык.. Не распаковываются архивы
FvG4KNZvQHGzJJ8OvwBPNw.png
FvG4KNZvQHGzJJ8OvwBPNw.png (19.65 КБ) Просмотров: 16731
Аватара пользователя
Алексей Пикуров
Здравствуйте, Станислав.

Я изменил ваше сообщение, вставил картинку в пост, пожалуйста, вставляйте картинки, как вложения, не ставьте ссылки на внешние хранилища.

ZIP - это стандартный тип архива, поддерживается Windows, WinRar для него не нужен. Правая кнопка мышки на архиве, "Извлечь всё".
Аватара пользователя
Станислав Ц.
По поводу картинок все понял, Алексей, спасибо..
Но по поводу архива, тут не в архиваторе суть, а в том, что он скачивается битым..
Хотел узнать, только у меня ли так? У Вас он нормально извлекается, если сейчас скачать?
Вложения
Screenshot_3.png
Screenshot_3.png (45.14 КБ) Просмотров: 16731
Аватара пользователя
Алексей Пикуров
Да, отлично качается, я только что проверил.
Размер — 8 141 244 байт.
SHA1: fe51690f21fc5f3037e1bfa97be558885bea137f
Аватара пользователя
Станислав Ц.
Да, спасибо, дома все скачалось тоже без проблем.. Странненько. Видимо антивирь на шлюзе архив портил. Ладно, буду продолжать дальше мучиться :)
Аватара пользователя
Андрей Раков
Добрый день.

Обновите пожалуйста сервер чата, иначе у вас может оказаться сборка, где я допустил ошибку в активации пользователя через команду "/start" боту:

https://nsoft-s.com/files/mcserv.zip
Аватара пользователя
ota-elena
Добрый день!
Про сертификаты. Делаем по инструкции выше, уже по-разному пытались и все равно на последнем этапе ошибки. Последняя ошибка вот такая (скрин)
Вложения
cert_failled.png
cert_failled.png (31.73 КБ) Просмотров: 16393
Аватара пользователя
Андрей Раков
Добрый день.
4) создаем папку "C:\Program Files (x86)\MyChat Server\node\server\www\lobby\.well-known\acme-challenge"


Папку нужно создать там, потому что она должна быть видна из интернета, чтобы робот мог провести верификацию.

И в строке запуска le32 должен быть именно этот путь.
Аватара пользователя
ota-elena
Спасибо за ответ. Попробуем, эти два пункта у нас не так были сделаны
Аватара пользователя
ota-elena
К сожалению, после создания папки C:\Program Files\MyChat Server\node\server\www\lobby\.well-known\acme-challenge все такая же ошибка на моменте верификации. Говорит проверка домена - эрорр.
Аватара пользователя
Андрей Раков
Если перейти по адресу http://knk.i.tomsk.ru — ничего нет, а должен быть виден веб сервер чата, раньше ведь работало.

Поэтому и не отрабатывает механизм создания сертификатов.

Но у вас работает https://knk.i.tomsk.ru/, там выдается страница с текстом "It works!".
Аватара пользователя
ota-elena
У нас по вот такому адресу http://knk.i.tomsk.ru :8443 консоль админки открывается...по крайней мере вчера было. Это не верное решение?
Аватара пользователя
Андрей Раков
Поменяйте порт на 80 и выключите шифрование, для создания сертификатов это очень важно.

Проверьте, что открывается страница http://knk.i.tomsk.ru и там загружается страница веб-сервера, после этого запускайте повторно le32.