Маленький локальный сервер на Node.js, который отправляет сообщения в Битрикс24 через Playwright.
Полезен, когда нужно писать в чаты Битрикс24 из внешних скриптов, но нет желания возиться с публичным API.
- Принимает сообщения по HTTP API и ставит их в очередь.
- Отправляет сообщения в фоне через настоящий браузер.
- Ищет чат по названию, пишет в него текст.
- Сохраняет очередь в файл, чтобы ничего не терялось при перезапуске.
npm install
npx playwright install chromium
cp .env.example .env
# отредактируй .env
npm startСервер запускается на http://localhost:3456 (или на порту из PORT).
Создай .env рядом с package.json:
PORT=3456
BITRIX_URL=https://your-company.bitrix24.ru
BITRIX_LOGIN=your-email@example.com
BITRIX_PASSWORD=your-password
HEADLESS=true
USE_SYSTEM_CHROME=false| Переменная | Описание |
|---|---|
PORT |
Порт сервера. По умолчанию 3456. |
BITRIX_URL |
URL вашего портала Битрикс24. |
BITRIX_LOGIN |
Почта или логин для входа. |
BITRIX_PASSWORD |
Пароль. |
HEADLESS |
true — браузер без окна, false — видимый. |
USE_SYSTEM_CHROME |
true — использовать системный Chrome, false — Chromium от Playwright. |
Если не хочется качать Chromium и в системе установлен Google Chrome, поставь USE_SYSTEM_CHROME=true.
Отправить сообщение:
curl -X POST http://localhost:3456/api/send \
-H "Content-Type: application/json" \
-d '{"chatName": "Иван Петров", "message": "Привет, как дела?"}'Или из PowerShell:
Invoke-RestMethod -Uri "http://localhost:3456/api/send" `
-Method Post -ContentType "application/json" `
-Body '{"chatName": "Иван Петров", "message": "Привет"}'Проверить очередь:
curl http://localhost:3456/api/queueПроверить, что сервер жив:
curl http://localhost:3456/healthДобавляет сообщение в очередь.
Тело:
{
"chatName": "Название чата или имя контакта",
"message": "Текст сообщения"
}Ответ:
{
"success": true,
"queueId": "uuid"
}Текущее состояние очереди: сколько всего, сколько ждёт, идёт ли обработка.
Простая проверка доступности сервера и состояния авторизации.
Для разработки или теста:
npm startИли без npm:
node server.jsВ Windows также можно использовать autostart/start-service.bat, который перейдёт в корень проекта и запустит сервер.
Проверить авторизацию и отправку:
npm run test:loginПроверить API на параллельных запросах:
npm run test:api- Приложение на Express принимает запросы.
- Сообщения падают в локальную очередь и сохраняются в
queue.json. BitrixSenderоткрывает браузер, логинится в Битрикс24 и отправляет сообщения по одному.- При ошибке делает несколько попыток, потом помечает задачу как проваленную.
├── server.js # HTTP API
├── bitrix-sender.js # Playwright-логика
├── message-queue.js # Очередь и сохранение на диск
├── autostart/
│ └── start-service.bat
├── tests/
│ ├── test-login.js
│ └── test-api.ps1
├── .env.example
└── queue.json # создаётся автоматически
- Селекторы Битрикс24 могут устареть со временем — тогда придётся поправить
bitrix-sender.js. - Авторизация обычная, по паролю. Двухфакторная аутентификация может потребовать доработки.
- Чат ищется по точному совпадению названия в списке чатов.