Перейти к содержимому

Сценарии Event Receiver

Типичная цепочка после создания или изменения элемента списка.

1. Получить значения полей только что созданного элемента

Заголовок раздела «1. Получить значения полей только что созданного элемента»

Событие listItem.created. В details уже есть listId и item (часто с field_values). Надёжнее перечитать элемент через API:

public async Task<object?> HandleAsync(EventContext context, IReceiverApi api, CancellationToken ct)
{
var listId = context.Details.GetProperty("listId").GetString()!;
var itemId = context.Details.GetProperty("item").GetProperty("id").GetString()!;
var item = await api.Lists.GetItemAsync(listId, itemId, ct);
var fields = await api.Lists.GetFieldsAsync(listId, ct);
var titleField = fields.First(f => f.InternalName == "title");
var title = /* прочитать field_values[titleField.Id] */;
api.Log.Info("Created item", itemId, title);
return new { ok = true, title };
}

Форматы значений: гайд по полям, API.

await api.Permissions.SetAsync(new
{
resourceType = "list_item",
resourceId = itemId,
listId,
principalType = "user",
principalId = ownerUserId,
permissionLevel = "edit",
}, ct);

См. API: Права и права на список. Точные методы SDK — в SDK Event Receiver.

3. Отправить уведомление со значениями полей

Заголовок раздела «3. Отправить уведомление со значениями полей»

Нужны настроенный SMTP и включённая служба notifications (см. Уведомления).

Вариант A — встроенный job почты (подписчик в админке или API): serviceKey: "notifications", jobType: "notifications.sendEventEmail", в configto/recipients, шаблоны subject/text/html. Пример и плейсхолдеры: API: Почта.

Вариант B — REST из кода пакета или HTTP к внешней системе:

POST /api/v1/mail/send
Authorization: Bearer …
Content-Type: application/json
{
"to": "manager@company.local",
"subject": "Новая заявка: …",
"text": "Создан элемент … со статусом …",
"async": true
}

Справочник: API: Почта.