Коннектор, который запускает свои постгрю, редис, celery workers, фастапи сервер и телеметрию. Следит за всеми событиями в чатвуте и на нужные из них дёргает пайплайны в dify, выступая мостом между ними.
- Слушаем все эвенты от чатвута, через ифы в зависимости от статуса диалога / автора сообщения решаем, что пропускать.
- Dify пайплайны триггерим ТОЛЬКО пока диалог в статусе pending.
- Тыкание эндпойнтов по изменению статуса / региона / прочего - всё из dify, пока никаких ключей нет, пердполагается что всё живёт в одной сети, где из внешнего мира мост недоступен.
- Удаление диалогов в дифи (надо решить в какой момент делать)
- Создание своих диалогов (эндпойнты позволяют, но нужен айди контакта)
После того как назначается тима бот уже не может сводобно дёргать эндпойнты с инфой о дилаоге, в том числе и custom attributes. При этом он даже может их апдейтить, но не читать.
При простановке всяких параметров по conversation_id счяитается, что это ответственность моста обработать "None" и им подобные значения, не делать запрос в чатвут и вернуть success статус dify-пайплайну.
Dify снэпшотит inputs
для диалога в базе : langgenius/dify#11140 Поэтому просто передавать туда статус не выйдет, он так и останется pending.
Важно : ссылку на вебхук надо прописать для Agent Bot в Super Admin консоли chatwoot : Outgoing url https://<ссылка на bridge>/api/v1/chatwoot-webhook
Ссылка на корень сервиса должна быть в env vars пайплайна в dify bridge_api_url = https:///<ссылка на bridge>/api/v1
Не забыть из нужного dify пайплайна/бота взять его апи ключ и прописать в энв как DIFY_API_KEY
, именно по этому ключу dify не только впускает, но и понимает, какой пайплайн запускать.
Дальше docker-compose up
должно хватить.
В health.py живёт совсем базовое. При локальном деплое:
- Убедиться что заполнен .env
- прописать туда
TEST_CONVERSATION_ID=<айдишник дилога, видно в логах и dev tools браузера>
, написав боту со своего акка. uv pip install -e ".[dev]"
(uv прекрасный пакетный мендежер для питона на rust : https://docs.astral.sh/uv/getting-started/installation/)python -m pytest