SDK (Portal.EventReceiver.Sdk)
SDK (Portal.EventReceiver.Sdk)
C# SDK для разработки Event Receiver. Контракт: backend/src/Portal.EventReceiver.Sdk/IEventReceiver.cs.
Runtime Worker инжектирует IReceiverApi — см. backend/src/Portal.Application/EventReceivers/EventReceiverApiHost.cs.
Интерфейс обработчика
using Portal.EventReceiver.Sdk;
public sealed class MyHandler : IEventReceiver{ public async Task<object?> HandleAsync( EventContext context, IReceiverApi api, CancellationToken cancellationToken = default) { var listId = context.Details.GetProperty("listId").GetString(); var itemId = context.Details.GetProperty("item").GetProperty("id").GetString();
var item = await api.Lists.GetItemAsync(listId!, itemId!, cancellationToken); api.Log.Info("Updated item", itemId); return new { ok = true }; }}EventContext
| Поле | Описание |
|---|---|
EventName | Имя события (listItem.updated и т.д.) |
Details | Данные события (listId, item, user) |
ReceiverConfig | Config привязки из UI (listId, note) |
User | Пользователь, инициировавший событие |
Payload | Полный JSON задания |
Receiver API (IReceiverApi)
| Объект | Метод | Описание |
|---|---|---|
Lists | GetAsync, GetFieldsAsync, GetItemAsync, GetItemsAsync | Списки и элементы |
CreateItemAsync, UpdateItemAsync | Создание/изменение (с проверкой прав) | |
Nodes | GetAsync | Узел |
Jobs | EnqueueAsync | Поставить задание в очередь |
Log | Info, Warn, Error | Логирование Worker |
Права выполняются от имени пользователя из context.User.
Шаблон проекта
cd backenddotnet new install ./templates/portal-eventreceiverdotnet new portal-eventreceiver -n MyHandler -o ../../packages/my-handlerПример: packages/event-receiver-examples/list-change-handler.