x

Python (FastAPI) интеграция Telegram и Webim через Custom Channel

Перейти к заказу
1. Цель и общее описание Необходимо создать сервис, который будет:Принимать входящие сообщения от Telegram-бота (через Webhook).Перенаправлять эти сообщения в Webim посредством механизма Custom Channel.Принимать ответы от оператора в Webim (через callback) и пересылать их обратно пользователям в Telegram.Использовать базу данных PostgreSQL:Для хранения настроек (конфигураций, токенов, параметров интеграции).Для хранения связки между Telegram-пользователями и Webim-посетителями (visitor_id ↔ chat_id).При этом сами тексты сообщений (входящие и исходящие) не сохраняются в БД. Хранится только необходимая техническая информация: настройки интеграции и соответствие идентификаторов пользователей в обеих системах. 2. Требования к архитектуре и окружению Язык реализации: Python Web-фреймворк: FastAPI СУБД: PostgreSQLВзаимодействие с Telegram:Через Telegram Bot API и Webhook (setWebhook).Токен бота хранится в БД (таблица настроек) или в .env — на усмотрение исполнителя, но желательно хранить в БД, если это соответствует требованиям безопасности в инфраструктуре заказчика.Взаимодействие с Webim:Через REST API (Custom Channel). https://webim.ru/kb/dev/api/custom-channel.htmlCallback-URL для получения исходящих сообщений от оператора.access_token Webim также хранится в БД (в таблице настроек), либо в .env.Безопасность:Все внешние вызовы должны выполняться по HTTPS.Логирование:Использовать стандартный модуль logging (или аналог) для записи ключевых событий (получение сообщения, отправка, ошибки).Логи можно хранить локально или в любом внешнем сервисе (по согласованию). 3. Функциональные требования 3.1. Обработка входящих сообщений от Telegram Endpoint: POST /telegram-webhookПринимает JSON (update) от Telegram.Извлекает из него:Идентификатор пользователя (chat_id).Текст сообщения (при наличии).Определяет (через обращение к БД) наличие связки chat_id ↔ visitor_id:Если такой записи нет — создаёт новую:Генерирует/запрашивает новый visitor_id (может быть, например, str(chat_id) или использовать GUID).Сохраняет пару visitor_id, chat_id в таблице (см. пункт 4.2).Если запись уже существует, использует соответствующий visitor_id.Отправляет сообщение в Webim по Custom Channel:Передаёт visitor_id, текст сообщения и любую дополнительную метаинформацию (например, username).Сообщения в БД не сохраняются.Регистрация Webhook:Предоставить инструкцию по выполнению setWebhook для Telegram (пример CURL или Python-скрипт). 3.2. Обработка исходящих сообщений от Webim Endpoint: POST /webim-callbackWebim вызывает этот адрес при отправке ответа оператором. По visitor_id ищет в БД связку visitor_id ↔ chat_id.Если связка найдена, получает chat_id.Если нет — логирует ошибку (такое может произойти, если пользователь устарел, или в случае расхождения данных).Отправляет сообщение пользователю в Telegram (метод sendMessage).В БД текст сообщения не сохраняется. 3.3. Хранение настроек в PostgreSQL Хранить токены, URL-адреса и прочие конфигурационные данные в таблице settings. При запуске приложения (FastAPI) читать настройки и использовать в процессе интеграции. Время от времени их можно кэшировать в оперативной памяти, чтобы не грузить БД частыми запросами. 3.4. Хранение связки “visitor_id ↔ chat_id” в PostgreSQL Назначение: чтобы точно знать, какому Telegram-пользователю (chat_id) соответствует конкретный visitor_id из Webim.Предложенная таблица (например, chat_mapping): !Тут на усмотрение разработчика! При первом сообщении от нового Telegram-пользователя сервис создаёт запись (если её ещё нет).При callback из Webim с visitor_id сервис ищет запись в chat_mapping.Важно: если предполагается, что один и тот же Telegram-пользователь может иметь несколько различных сессий (и, соответственно, несколько visitor_id), нужно уточнить бизнес-логику. Наиболее распространённый случай: один chat_id ↔ один visitor_id. 4. Технические детали реализации 4.1. Структура проекта (пример на усмотрения разработчика) project/├── app/ │ ├── main.py # Точка входа FastAPI-приложения │ ├── config.py # Функции чтения настроек из БД или .env │ ├── db.py # Подключение к PostgreSQL (SQLAlchemy или psycopg2) │ ├── routers/ │ │ ├── telegram.py # Маршрут /telegram-webhook │ │ └── webim.py # Маршрут /webim-callback │ ├── schemas.py # Pydantic-схемы (валидация входящих данных) │ └── utils.py # Утилиты (отправка сообщений в Webim/Telegram) ├── requirements.txt # Зависимости (FastAPI, uvicorn, psycopg2 и т.д.) ├── README.md # Инструкция по развёртыванию и настройке ├── .env # Переменные окружения (не хранить в Git) └── ... 4.2. Взаимодействие с Webim Отправка входящих сообщений:Из telegram.py после получения chat_id и текста вызывается метод utils.send_to_webim(...).В аргументах передаются:visitor_id (из таблицы chat_mapping или вновь созданный).Текст сообщения.Авторизация по access_token Webim (из таблицы settings или переменной окружения).Приём сообщений (callback):В webim.py обрабатывается JSON с полями visitor_id, message, т. д.Находит в БД chat_id.Отправляет ответ в Telegram методами Bot API. 4.3. Взаимодействие с Telegram Отправка сообщений:Метод sendMessage Telegram Bot API.В качестве chat_id используется значение из chat_mapping.Токен бота читается из settings или переменной окружения.Приём сообщений (Webhook):Endpoint POST /telegram-webhook.Извлекает chat_id, текст и затем направляет сообщение в Webim. 4.4. Логирование Записывать в логи каждое входящее и исходящее сообщение (только факт получения/отправки, без сохранения полного текста в БД).При ошибках (например, Telegram вернул 4xx/5xx или Webim не ответил) логировать детальную информацию об ошибке. 5. Выходные материалы Исходный код в репозитории (Git) со структурой, описанной выше.Файлы миграции или SQL-скрипты:Для создания таблицы settings.Для создания таблицы chat_mapping.Инструкция в формате README.md (или аналог):Установка зависимостей (requirements.txt).Настройка переменных окружения (или заполнение таблицы settings).Запуск приложения (например, uvicorn app.main:app --host 0.0.0.0 --port 8000).Настройка Webhook в Telegram (setWebhook).Настройка Webim (callback URL).Пример полного цикла: пользователь → Telegram → Webim → оператор → Webim callback → Telegram.Тестовая сессия:Проверка, что при новом chat_id сервис корректно создаёт новую запись в chat_mapping.Проверка ответа оператора в Webim и доставки этого ответа в Telegram.Убедиться, что сообщения не сохраняются в БД. 6. Критерии приёмки Функциональность:Сообщения из Telegram доходят в Webim, ответы оператора — в Telegram.Связка visitor_id ↔ chat_id создаётся и поддерживается корректно в БД.Настройки (токены и пр.) считываются из PostgreSQL или .env, согласно требованиям.Стабильность:Приложение обрабатывает множественные запросы без критических сбоев.Логи содержат информацию об ошибках, при сетевых сбоях сервис не падает.Качество кода:Соблюдение PEP8 или аналогичных стандартов.Логичная структуризация (роуты, утилиты, модели/схемы).Документация:Наличие полного руководства по запуску/настройке 1-3 станицы.Примеры API-запросов и сценария тестирования.Сроки и соответствие ТЗ:Все перечисленные задачи выполнены.Предоставлен рабочий прототип, готовый к развёртыванию (при условии корректного наполнения таблицы settings и настройки Webim/Telegram).

Найдено 7024 результата

Разработка системы помощи водителю в симуляторе CARLA с Python API

Разработка системы помощи водителю в симуляторе CARLA с Python API Тема: "Разработка Системы Помощи Водителю В Сложных... руб

Программирование и IT
Опубликован:
03.12.24 22:00
Бюджет:
15000 руб.~$187.25
Консультация по созданию проекта с использованием блокчейна

Хочу сделать свой проект, используя блокчейн (не криптовалюта, а что-нибудь связанное с сохранением данных, условно как сохранять свои заметки или важные договора). Читал/слушал, но остались практические вопросы как выглядит процесс разработки такого рода проекта, как считается стоимость. Смотрел в сторону Solana, но может есть что-то еще. По умолчанию делаю свои проекты используя связку Python + Flask + Mongo + DockerХочу созвониться на 1 час, чтобы позадавать общие вопросы, с разработчиком, который имеет практический опыт разработки коммерческих проектов в продакшн.

Backend
Опубликован:
03.12.24 21:34
Бюджет:
1500 руб.~$18.73
Исправить код selenium в виду обновившегося сайта

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

Скрипты и боты
Опубликован:
03.12.24 19:50
Бюджет:
3000 руб.~$37.45
Разработка небольшого сайта на Python

Необходима разработка сайта наподобие: https://steam.kupikod.com/ Дизайн и верстка будут предоставлены. Необходимые интеграции: - связать сайт с API поставщиком услуг - интеграция с платежной системой - минимальная админка для контроля заказов и смены цен на пополнение После первых тестов далее сделаем личный кабинет, бонусную систему. Первая версия сайта будет что-то наподобие MVP, дальше будем развивать. Поэтому рассчитываем на долгосрочное сотрудничество. Укажите, пожалуйста, ориентировочную стоимость подобного проекта и/или стоимость часа вашей работы

Создание сайта
Опубликован:
03.12.24 19:16
Бюджет:
80000 руб.~$998.63
Парсинг сайта Цупис

Необходимо написать скрипт на python, который после авторизации по смс коду внутри скрипта будет выдавать инфу об аккаунте (суммы транзакций в целом) Главное - написать чтобы не давало ошибки 403, а по выдаче информации там все одним гет запросом выдается

Скрипты и боты
Опубликован:
03.12.24 18:54
Бюджет:
10000 руб.~$124.83
Прогнозирование временных рядов с помощью нейросетей

Построение и настройка нейросетевых моделей - прогнозируемый временной ряд "Цена" из файла. 1. Необходимо с помощью библиотек на Python реализовать прогнозирование временных рядов цен акций "Яндекса" с применением моделей RNN, LSTM, CNN. 2. В реализованном прогнозировании должны оптимизироваться гиперпараметры моделей для получения наилучшего результата прогнозирования. Должны фиксировать результаты - до/после оптимизации с графиками прогноза и расчетом метрик (оценка моделей должна производиться по параметрам (R^2, MAE, RMSE, и др.), должно быть доказано, что у модели отсутствует переобучение, в работе должна присутствовать кросс-валидация. 3. Построение гибридной нейронной (RNN+LSTM, CNN+LSTM). Необходимо провести анализ, исследование построения гибридных нейросетевых моделей. Цель: провести анализ/исследование, что лучше ансамбль моделей или суперпозиция моделей? Должны фиксироваться результаты - до/после с графиками прогноза и расчетом метрик (R^2, MAE, RMSE, и др.), должно быть доказано, что у модели отсутствует переобучение, в работе должна присутствовать кросс-валидация. 4. У лучшей нейросетевой модели (из п.3) описать архитектуру - на 2 стр. (+ рисунок ее архитектуры). 5. Для лучшей модели должна быть реализована возможность подавать на вход дату и прогнозировать на эту дату временной ряд. Общие требования: 1) Разработку вести в файле с расширением ipynb - как итог, рабочий код. 2) Комментировать код при написании.

Десктоп программирование
Опубликован:
03.12.24 18:47
Бюджет:
40000 руб.~$499.32
Написать голосового помошника для сайта на Elevenlabs на python

Написать на pyton голосового бота на сайте связанного с голосовым Агентом Eleven Labs Пример реализации с разбором написнаия... руб

Веб-разработка
Опубликован:
03.12.24 16:34
Бюджет:
5000 руб.~$62.42
Нужен программист на Go или Python, чтобы сделать относительно простые алгоритмы парсинга в текстовый файл или куда это правильнее делать

Нужен программист на Go или Python, чтобы сделать относительно простые алгоритмы парсинга объявлений с Авито в текстовый файл... руб

Программирование и IT
Опубликован:
03.12.24 16:26
Бюджет:
10000 руб.~$124.83
Разработка приложения для управления стримами

Нужно разработать десктоп приложение для управления стримами, запущенными на удаленных серверах (VPS), среда разработки любая, но тз написано для Python. Вот само техническое задание: https://docs.google.com/document/d/1nLcmyMJ2ts1xXf8YrL-Fn-7mkWrIQLHIMcf7iToL8XM/edit?usp=sharing

Десктоп программирование
Опубликован:
03.12.24 15:57
Бюджет:
30000 руб.~$374.49
Python массовая вставка с множества скриптов в 1 таблицу

Всем доброго времени суток. Необходима помощь с двумя рабочими примерами: для SQLite и postgresql. Есть 10-15 скриптов, которые работают то одновременно, то в разное время, бывает по всякому. Вопрос в следующем: как сохранить данные в 1 таблицу или изменить некоторые строки в 1 таблице так, чтобы данные, получаемые скриптами - не потерялись. Те, если в один момент работает 2 и более скриптов и в один момент они пытаются произвести вставку данных в таблицу - то чтобы ни один из них не вылетел по ошибке, что таблица занята другим процессом или заблокирована или еще что-то. Собственно, нужен понятный алгоритм сохранения данных для баз, что описал выше. Сохранять сначала в файлы а потом доп скриптом собирать данные с них - не хотелось бы.

Скрипты и боты
Опубликован:
03.12.24 15:06
Бюджет:
1000 руб.~$12.49
Помощь со знанием python, который будет проверять код,

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

Юзабилити, тесты и помощь
Опубликован:
03.12.24 13:45
Бюджет:
500 руб.~$6.25
Спарсить товар озона через ссылку с их приложения

Задача состоит в том, чтобы спарсить ссылку озона такого формата https://ozon.ru/t/RNeVo1. Можно сделать одно из двух вещей: либо с помощью этой ссылки получить артикул товара (желательно без лишних запросов к их api), либо получить данные с этой ссылки (интересует только название товара и цена без озон карты) Код нужен на python/js.

Базы данных и клиентов
Опубликован:
03.12.24 12:43
Бюджет:
6000 руб.~$74.9
Написать на phyton

Необходимо написать автотесты для сайта cable.ru (python, selenium)Тест кейсы писать не требуется.Список функционала, который требуется покрыть автотестамиhttps://docs.google.com/document/d/1VRcwUT1H2HAKfZ...

Bots
Опубликован:
03.12.24 12:29
Бюджет:
5000 руб.~$62.42
Автоматизация действий в приложении через запросы

Нужно узнать какие запросы отправляет мобильное приложение серверу при наборе определенных действий Написать скрипт на Python для автоматизации этих действий (скрипт должен работать через запросы, решения с эмуляторами не подойдут) Приложение есть как на андроиде, так и на айфоне Подробнее тз опишу в личке

Скрипты и боты
Опубликован:
03.12.24 10:40
Бюджет:
40000 руб.~$499.32
Разработка ПО C++/Python: обработка документов с ИИ

Разработка программы для автоматизированной обработки документов Требуется создать приложение для Windows, которое будет автоматизировать обработку текстовых документов, таблиц и сканов. Основной функционал включает: Загрузка и обработка файлов: Поддержка форматов: PDF, DOC/DOCX, XLS/XLSX, PNG, JPG, TXT. Возможность перетаскивания файлов в окно загрузки. Автоматическое разделение многостраничных документов (например, PDF) на части. Обработка документов: Распознавание текста из сканов с использованием OCR (например, Tesseract). Определение типа документа по ключевым словам (госконтракты, отчёты, резюме и т.д.). Автоматическое извлечение ключевых данных (даты, суммы, стороны договора). Интеграция с API нейросети: Передача данных в API для выполнения задач (например, краткий пересказ, анализ данных). Получение результатов от API и отображение их в структурированном виде. Интерфейс: Минималистичный дизайн на базе Qt: Слева список задач (обработка контрактов, отчётов, резюме и т.д.). Справа — зона загрузки файлов. Внизу — область вывода результатов с кнопками для сохранения документов или уточнения деталей. Функции редактирования: Настройка промтов для API (доступно только администратору). Возможность внесения изменений в регулярные выражения и настройки обработки. Технические требования: Основной функционал реализуется на C++ (Qt), дополнительные задачи — на Python. Хранение временных данных и настроек в JSON-файлах.

Десктоп программирование
Опубликован:
03.12.24 09:43
Бюджет:
120000 руб.~$1497.95
Доделать один метод в телеграм боте (Python)

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

Backend
Опубликован:
03.12.24 08:34
Бюджет:
2000 руб.~$24.97
Python генерация pdf из картинки

Привет! У нас есть 8 картинок, нужно скриптом наложить в соответствии с дизайном 7 чисел кастомным шрифтом в место, предусмотренное дизайном и далее и экспортануть все в один pdf На входе скрипт принимает массив из 7 чисел - на выходе pdf

Скрипты и боты
Опубликован:
03.12.24 05:15
Бюджет:
1000 руб.~$12.49
Дэсктоп приложение на python

Дэсктопное приложение для windows на питоне + tkinter. Программа считает сумму компонентов нефтяных потоков, путем чтения характеристик потоков из файлов и суммирования его компонентов.Приложение состоит из:главное менюкнопка, открывающая проводник для выбора файла определенного формата (файл формата ключ значение, необходимо парсить в модель и сохранить в память)список названий загруженных файлов (при выборе должна появляться возможность удалить)при выборе загруженного файла из списка отображение полей из этого файла в определенном формает (несколько вкладок типа состав, характеристики и тп)кнопка "далее" которая открывает следуещее окно (набор условий)набор условийсписок названий условий подобно главной страницеформа редактирования выбранного условиякнопки "назад", "далее"(к результатам)результаты2 таблицы с результатами смешения потоковкнопка экспортировать в xlsxкнопка скопировать в буфер (csv)кнопка назадформат таблицы xlsx и примерный ui отправлю отдельно, логика смешения потоков - простое суммирование компонентов по ключу, код уже написан.Срок 1 неделя

Desktop
Опубликован:
03.12.24 02:50
Бюджет:
40000 руб.~$499.32
Помощь в запуске instaloader

Установил в python instaloader. Нужна помощь в запуске на скачивание фото из инсты и постинг к себе в инсту этого контента.

Юзабилити, тесты и помощь
Опубликован:
03.12.24 00:00
Бюджет:
1000 руб.~$12.49
Исправить работу скрипта

Исправить работу скрипта для woocommerce не обновляет цены и остатки с прайсов яндекс и маил облако. Скрипт wooupdater && python update_products.py

Скрипты и боты
Опубликован:
02.12.24 18:11
Бюджет:
3000 руб.~$37.45

Текущая страница: 28

Всего страниц: 352