Документация сервиса отправки корреспонденции (PostService) — различия между версиями

Материал из doc.abonent.plus
Перейти к: навигация, поиск
Строка 48: Строка 48:
  
 
==== Реляционная модель ====
 
==== Реляционная модель ====
[[File:PostService_003.png|655x607px]]
+
[[File:PostService_003.jpg|655x607px]]
  
 
==== Перечисляемые типы ====
 
==== Перечисляемые типы ====

Версия 18:19, 7 сентября 2021

Сервис отправки корреспонденции (PostService)

Ключевые особенности

Отправка e-mail, sms, заказных писем и другие реализации;

Единая структура данных, набор статусов и принцип взаимодействия для всех реализаций;

Версионное API стокен-авторизацией, возможность подключения функции обратного вызова;

Ограниченное количество попыток отправки и получение статусов во внешних сервисах интеграции;

Распределенная обработка поступивших запросов по авторизованным клиентам сервиса;

Логирование входящих запросов и ответов с привязкой к Hashstamp (идентификатор запроса/ответа).

Репозиторий

https://gl.abonent.plus/services/postservice

Стек технологий

.NET 5.0 ASP.NET Core PostgreSql

Адрес доступа

Тестовый контур:

https://post-service.abonentplus.ru/ (http://192.168.51.12:51001/)

Релизный контур:

https://post-service.abonent.plus/ (http://192.168.77.3:4444/)

База данных

Подключение

Настройки подключения к БД задаются в «appsettings.json»

PostService 001.png

Генерация контекстных классов

Обновление с помощью батника, отредактировать по необходимости UpdateDbClasses.bat

PostService 002.png

Реляционная модель

PostService 003.jpg

Перечисляемые типы

Все перечисляемые типы, относящиеся к контексту базы данных находятся в Classes/Database/PostServiceContextEnum

Описание API

Авторизация

/api/GetToken Получить токен авторизации

по необходимости передавать дополнительные настройки externalSettings и идентификатор externalId

Сервис

Методы доступны только при использовании авторизационного токена (заголовок Authorization в значение Bearer ****, пример в TestPostService/ApiServiceTest/AuthTest):

/api/Service/SendPost Передать запрос на отправку

пример использования в TestPostService/ApiServiceTest/RussianPostSendTest

/api/Service/CheckPost Получить статус отправки

пример использования в TestPostService/ApiServiceTest/RussianPostCheckTest

​/api​/Service​/GetPostResult Получить результат отправки

пример использования в TestPostService/ApiServiceTest/RussianPostGetResultTest

Общее

Методы проверки работоспособности:

/api/Common/ApiTest Тестовый метод проверки API

в случае успеха метод возвращает в теле ответа один символ "+"

/api/Common/AuthTest Тестовый метод проверки авторизации

в случае успеха метод возвращает в теле ответа один символ "+"

​/api​/Common​/RussianPostChannelTest Тестовый метод проверки канала связи с Почтой РФ

в случае успеха метод возвращает в теле ответа один символ "+"

Быстрый старт

Добавить пользователя в таблицу БД api_user, получить токен с помощью API-метода getToken, реализовать или использовать методы сервиса отправки на примере отправки InnerEmail.

Для добавления своего типа отправки необходимо:

  • добавить реализацию и тип отправки в Classes/Database/PostServiceContextEnum.cs
  • добавить имеющуюся интеграционную документацию в Documents/%Название_отправки%/
  • добавить вспомогательные классы в Exchange/%Название_отправки%/, минимальный набор показан в InnerEmail реализации.
  • добавить хелпер отправки Helpers/%Название_отправки%/ подготовить методы SendRequest, NewProcessing, WaitProcessing, FailProcessing, DoneProcessing
  • добавить фоновую обработку в Background/%Название_отправки%Service.cs
  • добавить модульные тесты по возможности в TestPostService/Exchange/%Название_отправки%Test.cs слой 1 по Message и Sender.SendMessage, слой 2 по PostDocument и Helper.SendRequest