84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# Edge Functions
|
||
|
||
## `chatbot-webhook`
|
||
|
||
Принимает webhook от `telegram`, `vk`, `messenger_max`, нормализует сообщение, пишет его в
|
||
`chat_messages` и при необходимости обновляет статус заказа и `order_history`.
|
||
|
||
Требует подпись `X-Signature` или `Authorization: Bearer <INTEGRATION_API_KEY>`, а также
|
||
ограничивает частоту входящих событий.
|
||
|
||
Пример вызова:
|
||
|
||
```bash
|
||
curl -X POST \
|
||
'https://<project>.supabase.co/functions/v1/chatbot-webhook?provider=telegram' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{
|
||
"order_id": "uuid",
|
||
"text": "Подтверждаю",
|
||
"action": "confirm_delivery",
|
||
"external_message_id": "tg-42",
|
||
"payload": {"slot_id": "slot-1"}
|
||
}'
|
||
```
|
||
|
||
## `send-chatbot-message`
|
||
|
||
Принимает исходящее сообщение, подготавливает dispatch в нужный канал и логирует отправку в
|
||
`chat_messages`.
|
||
|
||
Если передан `workflowAction=send_delivery_offer`, функция дополнительно переводит заказ в
|
||
`Ожидает ответа клиента` и выставляет `delivery_agreement_status = 'Отправлено клиенту'`.
|
||
|
||
Ожидаемые переменные:
|
||
|
||
- `SUPABASE_URL`
|
||
- `SUPABASE_SERVICE_ROLE_KEY`
|
||
- `INTEGRATION_API_KEY`
|
||
- `INTEGRATION_WEBHOOK_SECRET`
|
||
- `TELEGRAM_BOT_TOKEN`
|
||
- `VK_BOT_TOKEN`
|
||
- `MESSENGER_MAX_TOKEN`
|
||
|
||
## `request-otp`
|
||
|
||
Отправляет код входа по email после проверки лимитов по IP и адресу. Используется страницей
|
||
логина вместо прямого вызова `supabase.auth.signInWithOtp` из браузера.
|
||
|
||
## `verify-otp`
|
||
|
||
Проверяет код входа, тоже с rate limit, и возвращает session для установки в клиенте.
|
||
|
||
## `create-delivery-invitation`
|
||
|
||
Создает или обновляет активное приглашение для публичной клиентской ссылки, сохраняет
|
||
`delivery_invitations`, обновляет заказ в статус `Ожидает ответа клиента` и возвращает публичный URL.
|
||
|
||
Обязательная переменная окружения:
|
||
|
||
- `PUBLIC_APP_URL`
|
||
|
||
## `get-delivery-invitation`
|
||
|
||
Возвращает публичное состояние приглашения по токену. Используется страницей клиента для показа
|
||
актуального статуса заказа.
|
||
|
||
## `confirm-delivery-choice`
|
||
|
||
Фиксирует выбор времени доставки клиентом, переводит заказ в `Доставка согласована` и создает
|
||
историю события.
|
||
|
||
## `update-order-group-delivery-choice`
|
||
|
||
Фиксирует ручное согласование доставки по группе `order_groups`.
|
||
Используется менеджером или логистом, когда клиент согласовал дату и половину дня напрямую.
|
||
|
||
## `transfer-to-logistics`
|
||
|
||
Используется для ручной передачи заказа логисту или перевода в `Платное хранение`.
|
||
|
||
## `report-delivery-result`
|
||
|
||
Фиксирует итог доставки, включая успешную доставку и проблемные сценарии.
|