feat: отметки «@» в чате заявки и письма через поток Power Automate
В поле ввода чата «@» открывает подсказку с участниками заявки (инициатор и все из маршрута). Отметка — обычный текст «@ФИО», без штатного упоминания SharePoint, чтобы не уходило его собственное письмо. После отправки сообщения портал вызывает поток FLOW_CHAT_NOTIFY_URL: отмеченным — «Вас упомянули», инициатору — «Новое сообщение по вашей заявке». О своих сообщениях писем нет; для проверки это включается свойством веб-части «Чат: уведомлять о своих сообщениях» (по умолчанию выключено) — тогда же можно отметить себя. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -12,14 +12,15 @@ export interface INotifyTarget {
|
||||
approvalListName: string; // ApproveListName (список согласования)
|
||||
}
|
||||
|
||||
// POST в поток оповещения (Entra-триггер) через AadHttpClient — обычный fetch → 401,
|
||||
// AadHttpClient даёт токен Flow Service (и снимает вопрос CORS).
|
||||
async function postNotify(context: WebPartContext, body: Record<string, unknown>): Promise<void> {
|
||||
if (!FLOW_NOTIFY_URL) {
|
||||
// POST в поток Power Automate (Entra-триггер) через AadHttpClient — обычный fetch → 401,
|
||||
// AadHttpClient даёт токен Flow Service (и снимает вопрос CORS). Общий для всех
|
||||
// потоков оповещения портала (согласование, чат заявки — shared/chat/chatNotify.service.ts).
|
||||
export async function postToFlow(context: WebPartContext, flowUrl: string, body: object): Promise<void> {
|
||||
if (!flowUrl) {
|
||||
return;
|
||||
}
|
||||
const client = await context.aadHttpClientFactory.getClient(FLOW_RESOURCE);
|
||||
const res = await client.post(FLOW_NOTIFY_URL, AadHttpClient.configurations.v1, {
|
||||
const res = await client.post(flowUrl, AadHttpClient.configurations.v1, {
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
@@ -68,7 +69,7 @@ async function notifyRow(
|
||||
if (!(await isNotifyAllowed(approval, row.approverId))) {
|
||||
return;
|
||||
}
|
||||
await postNotify(context, {
|
||||
await postToFlow(context, FLOW_NOTIFY_URL, {
|
||||
RequestTypeId: target.requestTypeId,
|
||||
RowID: row.id,
|
||||
RequestID: requestId,
|
||||
|
||||
Reference in New Issue
Block a user