# f7support Клиент заявок поддержки для **F7cloud** (WebView / браузер). REST API: **support.f7cloud.ru**. ## Установка на инстанс F7cloud ```bash git clone git@git.f7cloud.ru:root/f7support.git /var/www/f7cloud/apps/f7support cd /var/www/f7cloud sudo -u www-data php occ app:enable f7support ``` ## Конфигурация (`occ`) ```bash # База API поддержки sudo -u www-data php occ config:app:set f7support support_api_base --value=https://support.f7cloud.ru # Опрос списка заявок (мс), по умолчанию 3000 sudo -u www-data php occ config:app:set f7support tickets_poll_ms --value=3000 # Push от support API → f7push (см. ниже) sudo -u www-data php occ config:app:set f7support push_enabled --value=yes ``` ## Push: новые сообщения от оператора Когда сотрудник отвечает в заявке на **support.f7cloud.ru**, support-сервер вызывает webhook на F7cloud → **f7push** → FCM → APK. ```text support.f7cloud.ru ──POST /apps/f7support/api/v1/push──► F7cloud ──► f7push ──► телефон ``` ### Секрет `F7_PUSH_SECRET` Один секрет для аутентификации webhook. На F7cloud хранится в: | Ключ `occ` | Назначение | |------------|------------| | `f7push api_secret` | основной секрет API f7push | | `f7support push_webhook_secret` | копия для f7support (опционально; webhook принимает оба) | **Сгенерировать и прописать на forbion:** ```bash bash /var/www/f7cloud/apps/f7push/scripts/generate-secret.sh --regenerate sudo -u www-data php occ config:app:set f7support push_webhook_secret --value="$(sudo -u www-data php occ config:app:get f7push api_secret)" ``` Получить текущий секрет (для `.env` на support): ```bash sudo -u www-data php occ config:app:get f7push api_secret ``` На сервере **support.f7cloud.ru** в `.env`: ```env F7_PUSH_SECRET=<тот же секрет> F7_PUSH_URL=https://forbion.f7cloud.ru/ocs/v2.php/apps/f7support/api/v1/push ``` Пример без секрета: `push.env.example` в корне репозитория. **Не коммитить** секрет в git. ### Webhook (вызывает support API) ```http POST https:///ocs/v2.php/apps/f7support/api/v1/push OCS-APIRequest: true Content-Type: application/json X-F7-Push-Secret: ``` ```json { "userId": "username", "ticketNumber": "12345", "ticketSubject": "Тема заявки", "body": "Текст ответа оператора" } ``` - `userId` — логин F7cloud (`X-F7cloud-User` от клиента). Альтернатива: `"email": "user@example.com"`. - Вызывать только при сообщении от **support**, не от клиента. - Клик по push открывает `/apps/f7support/?ticket=12345`. ### Требования на F7cloud - Приложение **f7push** включено, Firebase настроен, APK с FCM установлен у пользователя. - `f7push enabled_sources` содержит `f7support` (или `*`). - `f7support push_enabled=yes`. ## Версия 0.1.9 — webhook push, deep link `?ticket=`, notifier для f7push.