3.5 KiB
3.5 KiB
title
| title |
|---|
| Создание лида Calltouch (Backend) |
Сценарий 4.2: Создание лида Calltouch
Бизнес-цель
Маркетинг фиксирует обращения пользователей как лиды в системе Calltouch для сквозной аналитики и колл-центра.
Точки входа
| Тип | Метод + URL | Класс |
|---|---|---|
| HTTP | POST /calltouch/create-lead |
CalltouchController::createLead |
Ограничение доступа: #[IsGranted('ROLE_ADMIN')] на уровне класса контроллера — вызов только для административной роли API.
Реализация HTTP vs клиент
- Тело (form/json) мапится в
CalltouchCreateRequestDto, проходитValidator. - Фактический вызов
CalltouchClientService::requestCreate($dto)в коде закомментирован; ответ клиента возвращён не будет. - Контроллер отдаёт
200с полемrequest(сырые данные из$request->request->all()).
То есть интеграция подготовлена, но в текущей ветке кода не активна до раскомментирования строки.
Как устроен CalltouchClientService (целевое поведение)
configureHeaders($dto->regionId)выбирает паруsiteId+ токен из строки ENV, разобранной в конструкторе (paramформатregion:siteId:token,...).- Формируется
POSTна путь/lead-service/v1/api/request/createзаголовкамиAccess-Token,SiteId. - Тело:
json_encode(['requests' => $dto->toArray()]). - Возвращается
dataиз JSON-ответа Calltouch.
Mermaid (фактическое поведение в коде)
sequenceDiagram
participant A as Админ-клиент
participant CC as CalltouchController
participant V as Validator
A->>CC: POST /calltouch/create-lead
CC->>V: validate(CalltouchCreateRequestDto)
CC-->>A: 200 JSON (поле request)
После раскомментирования CalltouchClientService::requestCreate к схеме добавятся шаги HTTP POST к API Calltouch с заголовками Access-Token и SiteId.
Внешние зависимости
| Система | Статус |
|---|---|
| Calltouch API | клиент реализован, HTTP в контроллере отключён |
| PostgreSQL | не используется в сценарии лида напрямую |
Обработка ошибок и edge cases
- Нет конфигурации региона —
configureHeadersбросаетInvalidArgumentException(на будущее при включении клиента). - Опечатка в конструкторе
CalltouchClientService: два присваивания$this->baseUrlподряд — стоит перепроверить при включении интеграции.
Ссылки на классы
apps/backend/src/Controller/CalltouchController.phpapps/backend/src/Service/Client/CalltouchClientService.phpapps/backend/src/Dto/CalltouchCreateRequestDto.phpapps/backend/src/Service/Client/Interfaces/CalltouchClientServiceInterface.php
См. backend-ddd.md.