diff --git a/README.md b/README.md new file mode 100644 index 0000000..e4eb9b3 --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +# 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. diff --git a/push.env.example b/push.env.example new file mode 100644 index 0000000..6ee2ab2 --- /dev/null +++ b/push.env.example @@ -0,0 +1,5 @@ +# Скопировать в .env на support.f7cloud.ru (не коммитить с реальным секретом). +# Секрет взять с F7cloud: sudo -u www-data php occ config:app:get f7push api_secret + +F7_PUSH_SECRET= +F7_PUSH_URL=https://forbion.f7cloud.ru/ocs/v2.php/apps/f7support/api/v1/push