Интеграция GREEN-API для GoHighLevel#
Данная интеграция обеспечивает взаимодействие с WhatsApp в GoHighLevel (GHL) через платформу GREEN-API. Разработана на базе Universal Integration Platform от GREEN-API и состоит из адаптера NestJS, обеспечивающего связь между двумя платформами.
Важная информация
Эта интеграция предназначена исключительно для суб-аккаунтов GoHighLevel. Попытка установить или использовать её на уровне агентства или выбрать "Agency" во время настройки приложения может привести к некорректной работе или проблемам с функциональностью.
Содержание#
- Обзор
- Архитектура
- Установка
- Развертывание в Docker
- Установка и использование интеграции
- Как работает интеграция
- Распространенные ошибки и их устранение
- Лицензия
Обзор#
Данная документация проведет вас через процесс настройки вашей собственной интеграции между GREEN-API и GoHighLevel. Вместо использования готового приложения вы:
- Создадите своё собственное приложение в GoHighLevel Marketplace
- Настроите и развернёте сервис-адаптер
- Свяжете ваш инстанс GREEN-API с вашим суб-аккаунтом GoHighLevel.
Архитектура#
Сервис-адаптер#
Приложение NestJS, которое:
- Обрабатывает преобразование сообщений между GoHighLevel и WhatsApp
- Управляет OAuth-аутентификацией GoHighLevel и управлением токенами для суб-аккаунтов
- Предоставляет конечные точки для вебхуков от GoHighLevel и GREEN-API
- Создаёт и управляет контактами из WhatsApp в GoHighLevel
Установка приложения и адаптера#
Минимальные требования#
- База данных MySQL (5.7 или выше)
- Node.js 20 или выше
- Аккаунт и инстанс GREEN-API
- Аккаунт разработчика GoHighLevel. Вы можете создать его на сайте https://marketplace.gohighlevel.com/
- Суб-аккаунт GoHighLevel для тестирования установки и функциональности приложения
- Публично доступный URL-адрес для сервиса-адаптера (для вебхуков)
Настройка приложения в GoHighLevel Marketplace#
Перед развертыванием сервиса-адаптера необходимо создать и настроить приложение в GoHighLevel Marketplace:
-
Зарегистрируйтесь и войдите на сайте https://marketplace.gohighlevel.com/
-
Создайте новое приложение:
- Перейдите в раздел Apps и нажмите "Create New App"
- Заполните базовую информацию вашего приложения (название, описание и т.д.)
-
Настройте параметры публикации:
- В конфигурации приложения найдите "Listing Configuration"
- ВАЖНО: Выберите только "Sub-Account" в качестве опции установки
- НЕ выбирайте "Agency" или оба варианта, так как это может вызвать проблемы с функциональностью
-
Настройте OAuth:
- Настройте URL перенаправления:
YOUR_APP_URL/oauth/callback
- Выберите необходимые разрешения (scopes):
- contacts.readonly
- contacts.write
- conversations.readonly
- conversations.write
- conversations/message.readonly
- conversations/message.write
- locations.readonly
- users.readonly
- Настройте URL перенаправления:
-
Сгенерируйте Client ID и Client Secret:
- Перейдите в раздел "API Credentials"
- Сгенерируйте Client ID и Client Secret
- Сохраните эти значения - они понадобятся для конфигурации адаптера
-
Настройте параметры вебхуков:
- Настройте URL вебхука по умолчанию:
YOUR_APP_URL/webhooks/ghl
- Включите событие вебхука "OutboundMessage"
- Настройте URL вебхука по умолчанию:
-
Создайте Conversation Provider:
- Перейдите в настройки "Conversation Provider" в настройках приложения
- Имя: "GREEN-API" (или любое другое по вашему выбору)
- Тип: SMS
- URL доставки:
YOUR_APP_URL/webhooks/ghl
(то же, что и URL вебхука) - Отметьте оба пункта: "Is this a Custom Conversation Provider?" и "Always show this Conversation Provider?"
- При желании добавьте алиас и логотип
- Сохраните Conversation Provider ID - он понадобится для конфигурации
-
Настройте внешнюю аутентификацию:
- Включите External Authentication
- Выберите метод "API Key/Basic Auth"
- Добавьте два обязательных поля:
- Поле 1: Название "Instance ID", Ключ "instance_id", Тип "Text"
- Поле 2: Название "Instance Token", Ключ "api_token_instance", Тип "Text"
- Установите URL аутентификации:
YOUR_APP_URL/oauth/external-auth-credentials
- Установите метод: POST
- Сохраните конфигурацию
Настройка адаптера#
1. Клонируйте репозиторий:
git clone https://github.com/green-api/greenapi-integration-gohighlevel.git
cd greenapi-integration-gohighlevel
npm install
Создайте файл .env
в корне проекта со следующими переменными:
DATABASE_URL="mysql://USER:PASSWORD@HOST:PORT/DATABASE_NAME"
APP_URL="https://your-adapter-domain.com"
GHL_CLIENT_ID="your_ghl_client_id_from_developer_portal"
GHL_CLIENT_SECRET="your_ghl_client_secret_from_developer_portal"
GHL_CONVERSATION_PROVIDER_ID="your_ghl_conversation_provider_id_from_app_settings"
DATABASE_URL
: Строка подключения к вашей базе данных MySQL-
APP_URL
: Публичный URL, где будет развернут ваш адаптер-
GHL_CLIENT_ID
и GHL_CLIENT_SECRET
: Из шага 5 настройки приложения GHL-
GHL_CONVERSATION_PROVIDER_ID
: Из шага 7 настройки приложения GHL4. Примените миграции базы данных:
npx prisma migrate deploy
# Сборка приложения
npm run build
# Запуск в production режиме
npm run start:prod
Развертывание в Docker#
Адаптер может быть развернут с использованием Docker. Конфигурационные файлы:
Настройка Docker Compose#
docker-compose.yml
version: '3.8'
services:
adapter:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=${DATABASE_URL}
- APP_URL=${APP_URL}
- GHL_CLIENT_ID=${GHL_CLIENT_ID}
- GHL_CLIENT_SECRET=${GHL_CLIENT_SECRET}
- GHL_CONVERSATION_PROVIDER_ID=${GHL_CONVERSATION_PROVIDER_ID}
depends_on:
- db
restart: unless-stopped
db:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=your_strong_root_password
- MYSQL_USER=your_db_user
- MYSQL_PASSWORD=your_db_password
- MYSQL_DATABASE=ghl_adapter
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
volumes:
mysql_data:
Dockerfile#
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npx prisma generate
RUN npm run build
EXPOSE 3000
CMD npx prisma migrate deploy && npm run start:prod
Для развертывания с использованием Docker Compose:
# Запуск всех сервисов
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановка всех сервисов
docker-compose down
Данные файлы предоставлены в качестве примера и могут требовать корректировок в зависимости от ваших конкретных условий и требований развертывания.
Установка и использование интеграции#
После настройки вашего приложения GoHighLevel и развертывания сервиса-адаптера, вы можете установить и использовать интеграцию:
-
Установите приложение в ваш суб-аккаунт GoHighLevel:
- Если ваше приложение приватное:
- Скопируйте ID вашего приложения из marketplace.gohighlevel.com
- Из вашего суб-аккаунта GoHighLevel перейдите в маркетплейс
- Нажмите на любое приложение и измените URL, заменив ID приложения на ID вашего приложения
- Нажмите "Install" на странице вашего приложения и затем "Allow and Install"
- Если ваше приложение приватное:
-
Завершите аутентификацию GREEN-API:
- После OAuth-авторизации вы можете закрыть страницу, на которую вас перенаправили, и вернуться на предыдущую страницу, где вам будет предложено ввести учетные данные GREEN-API
- Введите ваш Instance ID и API Token GREEN-API из console.green-api.com
- Система проверит и свяжет ваш инстанс GREEN-API с вашим аккаунтом GHL.
Как работает интеграция#
После установки интеграция работает автоматически:
Входящие сообщения (WhatsApp → GHL)#
-
Когда клиент отправляет сообщение на ваш номер WhatsApp:
- GREEN-API получает сообщение и отправляет его в ваш адаптер
- Адаптер создает или обновляет контакт в GHL
- Сообщение появляется в интерфейсе переписки GHL
-
Поддерживаемые типы входящих сообщений:
- Текстовые сообщения
- Медиа (изображения, видео, документы, аудио)
- Геолокации
- Контактные карточки
- И другие (стикеры, опросы и т.д.)
Исходящие сообщения (GHL → WhatsApp)#
-
Чтобы ответить контакту WhatsApp:
- Используйте стандартный интерфейс сообщений GHL
- Сообщение будет направлено через ваш адаптер в GREEN-API и доставлено по WhatsApp
-
Поддерживаемые типы исходящих сообщений:
- Текстовые сообщения
- Вложенные файлы
Распространенные ошибки и их устранение#
-
Сообщения не доставляются:
- Проверьте, что ваш инстанс GREEN-API авторизован
- Проверьте логи адаптера на наличие ошибок
- Убедитесь, что URL вебхуков настроены правильно
-
Проблемы с установкой приложения:
- Убедитесь, что ваше приложение настроено только для Sub-Account
- Проверьте, что внешняя аутентификация (External Authentication) настроена правильно
-
Ошибки подключения к базе данных:
- Проверьте правильность DATABASE_URL
- Убедитесь, что пользователь базы данных имеет соответствующие разрешения
Лицензия#
Лицензировано в соответствии с MIT