Files

98 lines
3.4 KiB
Markdown

# 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://<F7CLOUD-HOST>/ocs/v2.php/apps/f7support/api/v1/push
OCS-APIRequest: true
Content-Type: application/json
X-F7-Push-Secret: <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.