Skip to content

alexbalandi/chatwoot-dify

 
 

Repository files navigation

Что это?

Коннектор, который запускает свои постгрю, редис, 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 живёт совсем базовое. При локальном деплое:

  1. Убедиться что заполнен .env
  2. прописать туда TEST_CONVERSATION_ID=<айдишник дилога, видно в логах и dev tools браузера>, написав боту со своего акка.
  3. uv pip install -e ".[dev]" (uv прекрасный пакетный мендежер для питона на rust : https://docs.astral.sh/uv/getting-started/installation/)
  4. python -m pytest

About

connector for chatwoot and dify

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 92.9%
  • Jupyter Notebook 5.4%
  • Other 1.7%