Как я подключил MAX и VK к Chatwoot: разбираем двусторонний мост

maxim_edu_ai 45 минут назад Объяснить с Как я подключил MAX и VK к Chatwoot: разбираем двусторонний мост Средний 9 мин 1.7K VK API * Node.JS * Мессенджеры * Веб-разработка * Информационная безопасность * Кейс После моей...
Will Anthropic have the best AI model at the end of October 2026?
В сфере искусственного интеллекта произошло заметное событие. maxim_edu_ai 45 минут назад Объяснить с Как я подключил MAX и VK к Chatwoot: разбираем двусторонний мост Средний 9 мин 1. JS * Мессенджеры * Веб-разработка * Информационная безопасность * Кейс После моей статьи о рабочем месте репетитора в Chatwoot в комментариях закономерно спросили не о календаре и не о Jitsi, а о детали, которую я тогда почти не показал: как именно сообщения из MAX и VK попадают в Chatwoot и как ответ возвращается обратно. Короткий ответ: это не скрапинг веб-версий и не автоматизация личных аккаунтов.
MAX у меня подключён через официального бота, VK — через сообщения сообщества. Между ними и двумя API inbox в Chatwoot работает небольшой сервис на Node. В этой статье разберу его фактическую реализацию: маршруты вебхуков, создание контакта и диалога, хранение соответствий, защиту от повторной обработки и передачу изображений.
Технические детали
Заодно покажу места, где маленький рабочий мост ещё не стал отказоустойчивой шиной сообщений. Обложка: MAX и VK сходятся в Chatwoot через собственный мостЧто именно я хотел получитьУ меня уже был Chatwoot как единое окно для переписки. Telegram подключался ботом, WhatsApp — отдельной интеграцией.
Для MAX готового канала в моей установке Chatwoot не было, а VK мне было удобнее подключить тем же способом, не смешивая логику мессенджеров с самим Chatwoot. Требования получились небольшими:Новое сообщение пользователя должно появиться в правильном inbox Chatwoot. Повторный вебхук не должен создавать повторное сообщение.
Ответ оператора в Chatwoot должен уйти в тот же внешний диалог. Перезапуск контейнера не должен уничтожать соответствия диалогов. Токены нельзя хранить в образе или выводить в лог.
Отраслевые последствия
MAX и VK должны оставаться разными каналами, даже если обслуживаются одним процессом. Есть и принципиальное ограничение: это мост ботов и сообщества, а не личных аккаунтов. Он не читает мою личную переписку в MAX или VK и не пытается изображать браузер.
Пользователь пишет MAX-боту или VK-сообществу, а оператор отвечает из Chatwoot. АрхитектураДля каждого внешнего канала в Chatwoot создан отдельный API inbox. У входящего и исходящего направления разные инициаторы:MAX webhook ─┐ ├─> Node.
js bridge ─> Chatwoot Application API VK Callback ─┘ Chatwoot message_created webhook ─> bridge ─┬─> MAX Bot API └─> VK API Архитектура двустороннего мостаНа reverse proxy опубликованы четыре POST-маршрута:МаршрутКто вызываетНазначение/maxMAXвходящие события MAX/vkVK Callback APIподтверждение сервера и входящие события VK/chatwoot/Chatwootисходящие сообщения MAX inbox/chatwoot-vk/Chatwootисходящие сообщения VK inboxОтдельно есть GET /health. js-контейнер не публикует порт на хост: он находится во внешней Docker-сети edge, а HTTPS завершает reverse proxy. Почему API inbox, а не новый канал внутри ChatwootУ Chatwoot есть удобная модель для внешних интеграций: контакт связывается с inbox через source_id, внутри inbox создаётся conversation, а сообщения добавляются через Application API.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




