WhatsApp Web
Подключение PRX к WhatsApp с использованием нативного Rust Web-клиента (wa-rs) со сквозным шифрованием, привязкой через QR-код или код пары и полной поддержкой медиа.
Предварительные требования
- Аккаунт WhatsApp с активным номером телефона
- PRX, собранный с флагом функции
whatsapp-web - Аккаунт Meta Business API не требуется
Быстрая настройка
1. Включение флага функции
Соберите PRX с поддержкой WhatsApp Web:
bash
cargo build --release --features whatsapp-web2. Конфигурация
toml
[channels_config.whatsapp]
session_path = "~/.config/openprx/whatsapp-session.db"
allowed_numbers = ["+1234567890", "*"]Для привязки через код пары (вместо QR-кода):
toml
[channels_config.whatsapp]
session_path = "~/.config/openprx/whatsapp-session.db"
pair_phone = "15551234567"
allowed_numbers = ["*"]3. Привязка аккаунта
Запустите PRX. При первом запуске будет отображён:
- QR-код в терминале для сканирования мобильным приложением WhatsApp, или
- Код пары, если задан
pair_phone(введите код в WhatsApp > Привязанные устройства)
4. Проверка
bash
prx channel doctor whatsappСправочник конфигурации
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
session_path | String | обязательный | Путь к SQLite-базе данных сессии. Наличие этого поля выбирает режим Web |
pair_phone | String | null | Номер телефона для привязки через код пары (формат: код страны + номер, например, "15551234567"). Если не задан, используется привязка через QR-код |
pair_code | String | null | Пользовательский код пары для привязки. Оставьте пустым, чтобы WhatsApp сгенерировал его автоматически |
allowed_numbers | [String] | [] | Разрешённые номера телефонов в формате E.164 (например, "+1234567890"). "*" = разрешить всем |
Возможности
- Meta Business API не требуется — прямое подключение в качестве привязанного устройства через протокол WhatsApp Web
- Сквозное шифрование — сообщения шифруются через Signal Protocol, как и в официальных клиентах WhatsApp
- Привязка через QR-код и код пары — два способа привязки аккаунта WhatsApp
- Постоянные сессии — состояние сессии хранится в локальной SQLite-базе данных и сохраняется между перезапусками
- Группы и ЛС — поддержка личных чатов и групповых разговоров
- Медиасообщения — обработка изображений, документов и других типов медиа
- Поддержка голосовых сообщений — транскрипция входящих голосовых сообщений (при настроенном STT) и опциональный ответ голосовыми сообщениями (при настроенном TTS)
- Присутствие и реакции — поддержка индикаторов набора текста и реакций на сообщения
Ограничения
- Требуется флаг функции
whatsapp-webпри компиляции - Поддерживается только одна сессия привязанного устройства на номер телефона (ограничение WhatsApp)
- Сессия может истечь при длительном неиспользовании; потребуется повторная привязка
- Только macOS, Linux и Windows WSL2 (как и сам PRX)
- WhatsApp может периодически требовать повторной аутентификации
Устранение неполадок
QR-код не появляется
- Убедитесь, что
session_pathзадан и директория доступна для записи - Проверьте, что PRX собран с
--features whatsapp-web - Удалите базу данных сессии и перезапустите для принудительной новой привязки
Сессия истекла или отключилась
- Удалите базу данных сессии по настроенному пути
session_path - Перезапустите PRX для запуска нового процесса привязки через QR-код или код пары
Голосовые сообщения не транскрибируются
- Настройте секцию
[transcription]в конфигурации PRX для включения STT - Поддерживаемые STT-бэкенды: OpenAI Whisper, Deepgram, AssemblyAI, Google STT
Режим Cloud API
Если у вас есть аккаунт Meta Business и вы предпочитаете обмен сообщениями через вебхуки, см. WhatsApp (Cloud API).