⚡️Запуск Python скриптов на своём сервере. (Salebot+Beget+Apache+Python)⚡️
1. Регистрируемся на бегете https://beget.com/p1857759
2. Создаем сервер. Начать можно с минимальной конфигурацией (1CPU+1Gb - 7р сутки) и потом расширять.
2.1. Выбираем готовый вариант LAMP.
2.2. Задаём пароль вручную или получаем на почту файл с доступами.
3. Заходим через файлового менеджера и редактируем ./etc/apache2/apache2.conf
ищем <Directory /var/www/>
и заменяем все на :
<Directory /var/www/> Options Indexes FollowSymLinks ExecCGI AllowOverride None Require all granted AddHandler cgi-script .cgi .py </Directory>
4. Заходим по созданному паролю или полученным в почту данным по ssh на сервер, используя например putty или MobaXterm. (Инструкцию по установке и настройке MobaXterm можно посмотреть тут: https://youtu.be/U93Hsgi3xsQ?si=_922Mbfs_aDiqhW0&t=70
apt update apt install python3.11 pip install requests
По аналогии с requests добавляем(инсталлируем) нужные нам библиотеки, до установить можно потом и перезагружаем сервер командами ниже:
a2enmod cgi systemctl restart apache2
6. идем снова в файловый менеджер в раздел ../var/www/html и создаем файл handle.py
7. Меняем атрибуты на файл права 755 добавляя галочки, чтобы файл стал исполняемым.
8. Пишем в файл скрипт с callback в бота:
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys import json import requests def handle(data): try: data = json.loads(data) text = "!!!!! результат выполнения вашей функции" url = f'https://chatter.salebot.pro/api/{data["api_key"]}/callback' body = { "message": f"callback_text {text}", "client_id": f"{data['client_id']}" } res = requests.post(url, json=body) # Проверяем статус код ответа res.raise_for_status() json_data = res.text return json_data except json.JSONDecodeError as e: return {"error": "Ошибка декодирования JSON: {}".format(str(e))} except requests.RequestException as e: return {"error": "Ошибка отправки запроса: {}".format(str(e))} post = sys.stdin.read() r = handle(post) print("Content-Type: application/json") print("") print(r)
10. Тестим. В данном примере после отправки АPI запроса на наш сервер, клиенту, который отправляет этот запрос, придёт сообщение из переменной res (статус отправки вебхука в Salebot). А пользователю из переменной client_id придет вэбхук с данными из переменной message.
Надеюсь, представленный материал окажется полезным для читателей, заинтересованных в автоматизации бизнес-процессов с помощью современных инструментов. Я открыт к диалогу и буду рад обсудить любые вопросы или предложения по улучшению статьи. Спасибо за внимание!