Skip to content

Описание

architecture.png

Описание#

Сервис выступает в роли сервиса коммутатора. Создаёт клиенты для сервисов-прослоек: 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)