Описание

Описание#
Сервис выступает в роли сервиса коммутатора. Создаёт клиенты для сервисов-прослоек: Ucaller Client, Unibell Client, Email Client, Tg bot Client, FCM Client. При получении уведомления определяет его тип и вызывает соответствующий обработчик,
Типы уведомлений#
"NOTIFICATION_UNSPECIFIED" - для обработки неопределённого типа уведомлений
"NOTIFICATION_EMAIL" - по электронной почте
"NOTIFICATION_PHONE" - последние 4 цифры номера входящего (для пользователя) вызова
"NOTIFICATION_TELEGRAM" - по username'у telegram
"NOTIFICATION_PUSH" - push-уведомление в приложении
"NOTIFICATION_PHONE_WITH_VOICE" - код, продиктованный роботом во время звонка
Основной обработчик#
SendNotification - основной обработчик в сервисе, принимает NotificationRequest и вызывает у соответствующего клиента метод для отправки уведомления.
Тело запроса#
type NotificationRequest struct {
Title string
CategoryMessage string
ContactType int32
User_UUIDs []string
Message *string
Contacts []string
SecretCode *int32
Target map[string]string
ImageUrl *string
IsBroadcast bool
InlineButton *telegram.InlineButton
}
| Поле | Тип | Описание | Обязательное |
|---|---|---|---|
| Title | string | Заголовок уведомления, может использоваться для тем писем, а также в push-уведомлениях | ❌ |
| CategoryMessage | string | Описывает категорию сообщения | ❌ |
| ContactType | int32 | Определет, куда будет доставлено уведомление (см. Типы уведомлений) | ✅ |
| User_UUIDs | []string | Уникальные идентификаторы пользователей, которым будет отправлено уведомление | ❌ |
| Message | *string | Текст сообщения | ❌ |
| Contacts | []string | Прямые контактные данные для отправки | ❌ |
| SecretCode | *int32 | Секретный код для верификации (код подтверждения) | ❌ |
| Target | map[string]string | Дополнительные параметры для разных типов уведомлений | ❌ |
| ImageUrl | *string | URL-адрес изображения для уведомлений с медиа | ❌ |
| IsBroadcast | bool | Флаг массовой рассылки | ❌ |
| InlineButton | *telegram.InlineButton | Кнопка в сообщения в Telegram | ❌ |
Тело ответа#
Метод не возвращает никаких данных (&emptypb.Empty{} - пустое сообщение), только статус выполнения - успех/ошибка.
Клиенты#
TelegramServiceClient - отправляет запросы на terra-telegram-service; обработик - sendTelegram(ctx, request)
EmailServiceClient - отправляет запросы на terra-email-service; обработчик - sendMail(ctx, request)
UcallerServiceClient - отправляет запросы на terra-ucaller-service; обработчик - sendUcaller(ctx, request)
UnibellServiceClient - отправляет запросы на terra-unibell-service; обработчик - sendUnibell(ctx, request)
FcmServiceClient - отправляет запросы на terra-fcm-service; обработчик - sendPush(ctx, request)