Subskrybowanie zdarzeń routera zadań
Artykuł 06/13/2024
Współautorzy: 9
Opinia
W tym artykule
W tym przewodniku opisano kroki konfigurowania subskrypcji zdarzeń routera zadań i sposobu ich odbierania.
Aby uzyskać więcej informacji na temat usługi Event Grid, zobacz dokumentację usługi Event Grid.
Wymagania wstępne
Tworzenie subskrypcji usługi Event Grid
Ten szablon wdraża subskrypcję usługi Event Grid w kolejce magazynu dla zdarzeń routera zadań.
Jeśli konto magazynu, kolejka lub temat systemowy nie istnieją, zostaną one również utworzone.
Parametry
Nazwa zasobu usług Azure Communication Services: nazwa zasobu usług Azure Communication Services. Jeśli na przykład punkt końcowy zasobu to https://contoso.communication.azure.net
, ustaw wartość contoso
.
Nazwa magazynu: nazwa konta usługi Azure Storage. Jeśli nie istnieje, zostanie utworzony.
Nazwa podrzędna zdarzenia: nazwa subskrypcji zdarzeń do utworzenia.
Nazwa tematu systemu: jeśli masz istniejące subskrypcje zdarzeń w zasobie usług Azure Communication Services, znajdź System Topic
nazwę na Events
karcie zasobu usług Azure Communication Services. W przeciwnym razie określ unikatową nazwę, taką jak sama nazwa zasobu usług Azure Communication Services.
Nazwa kolejki: nazwa kolejki na koncie magazynu. Jeśli nie istnieje, zostanie utworzony.
Wdrożone zasoby
Następujące zasoby są wdrażane w ramach rozwiązania
Konto magazynu: jeśli nazwa konta magazynu nie istnieje.
Kolejka magazynu: jeśli kolejka nie istnieje na koncie magazynu.
Temat systemu usługi Event Grid: jeśli temat nie istnieje.
Subskrypcja usługi Event Grid: subskrypcja wszystkich zdarzeń routera zadań w kolejce magazynu.
Szybki start: odbieranie zdarzeń usługi Event Grid za pośrednictwem kolejki usługi Azure Storage
Tworzenie nowej aplikacji w języku C#
W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj dotnet new
polecenia , aby utworzyć nową aplikację konsolową o nazwie EventReceiver
. To polecenie tworzy prosty projekt języka C# "Hello World" z jednym plikiem źródłowym: Program.cs .
dotnet new console -o EventReceiver
Zmień katalog na nowo utworzony folder aplikacji i użyj dotnet build
polecenia , aby skompilować aplikację.
cd EventReceiver
dotnet build
Instalowanie pakietów
Zainstaluj kolejki usługi Azure Storage i pakiety usługi Event Grid.
dotnet add package Azure.Storage.Queues
dotnet add package Azure.Messaging.EventGrid
Odbieranie komunikatów z kolejki
Skopiuj następujący fragment kodu i wklej go do pliku źródłowego: Program.cs
using Azure.Storage.Queues;
using Azure.Messaging.EventGrid;
// For more detailed tutorials on storage queues, see: https://learn.microsoft.com/azure/storage/queues/storage-tutorial-queues
var queueClient = new QueueClient("<Storage Account Connection String>", "router-events");
while (true)
{
var msg = await queueClient.ReceiveMessageAsync();
if (msg.Value == null)
{
await Task.Delay(TimeSpan.FromSeconds(1));
continue;
}
var json = Convert.FromBase64String(msg.Value.Body.ToString());
var evt = EventGridEvent.Parse(BinaryData.FromBytes(json));
Console.WriteLine($"Received event: {evt.EventType} - {evt.Subject} - {evt.Data}");
await queueClient.DeleteMessageAsync(msg.Value.MessageId, msg.Value.PopReceipt);
}
Uruchamianie kodu
Uruchom aplikację z katalogu aplikacji za dotnet run
pomocą polecenia .
dotnet run
Wykaz zdarzeń
Zdarzenia routera
Microsoft.Communication.RouterJobReceived
Powrót do wykazu zdarzeń
{
"id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"jobStatus": "PendingClassification",
"channelId": "FooVoiceChannelId",
"classificationPolicyId": "test-policy",
"queueId": "queue-id",
"priority": 0,
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"requestedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttlSeconds": 50,
"expirationTime": "2022-02-17T00:58:25.1736293Z"
}
],
"scheduledOn": "3/28/2007 7:13:50 PM +00:00",
"unavailableForMatching": false
},
"eventType": "Microsoft.Communication.RouterJobReceived",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelReference
string
❌
jobStatus
enum
❌
Możliwe wartości PendingClassification, Queued
Po wysłaniu tego zdarzenia proces klasyfikacji nie został jeszcze wykonany lub zadanie zostało utworzone za pomocą skojarzonego identyfikatora queueId.
channelId
string
❌
classificationPolicyId
string
✔️
null
gdy queueId
jest określony dla zadania
queueId
string
✔️
null
gdy classificationPolicyId
jest określony dla zadania
priority
int
✔️
Wartość null, gdy classificationPolicyId
jest określona. Wartość niepusta w przypadku przypisania kolejki bezpośredniej.
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
requestedWorkerSelectors
List<WorkerSelector>
✔️
Na podstawie danych wejściowych użytkownika
scheduledOn
DateTimeOffset
✔️
Na podstawie danych wejściowych użytkownika
niedostępnyForMatching
bool
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterJobClassified
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
"data": {
"queueDetails": {
"id": "625fec06-ab81-4e60-b780-f364ed96ade1",
"name": "Queue 1",
"labels": {
"Language": "en",
"Product": "Office",
"Geo": "NA"
}
},
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"classificationPolicyId": "test-policy",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"priority": 5,
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"attachedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
]
},
"eventType": "Microsoft.Communication.RouterJobClassified",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
queueDetails
QueueDetails
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
classificationPolicyId
string
❌
queueId
string
✔️
null
gdy classificationPolicy
nie jest używany do wyboru kolejki
priority
int
✔️
null
gdy classificationPolicy
nie jest używany do stosowania priorytetu zadania
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
attachedWorkerSelectors
List<WorkerSelector>
✔️
Lista selektorów procesów roboczych dołączonych przez zasady klasyfikacji
Microsoft.Communication.RouterJobQueued
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"priority": 1,
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"requestedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"attachedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
]
},
"eventType": "Microsoft.Communication.RouterJobQueued",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelReference
string
✔️
channelId
string
❌
queueId
string
❌
priority
int
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
requestedWorkerSelectors
List<WorkerSelector>
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
attachedWorkerSelectors
List<WorkerSelector>
✔️
Lista selektorów procesów roboczych dołączonych przez zasady klasyfikacji
Microsoft.Communication.RouterJobClassificationFailed
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/classificationpolicy/{classificationpolicy-id}",
"data": {
"errors": [
{
"code": null,
"message": "Classification failed due to <reason>",
"target": null,
"innerError": null,
"details": null
}
],
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"classificationPolicyId": "test-policy",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterJobClassificationFailed",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
błędy
List<CommunicationError>
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
classificationPolicyId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterJobCompleted
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "queue-id",
"assignmentId": "6f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"workerId": "e3a3f2f9-3582-4bfe-9c5a-aa57831a0f88"
},
"eventType": "Microsoft.Communication.RouterJobCompleted",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
identyfikator przypisania
string
❌
identyfikator procesu roboczego
string
❌
Microsoft.Communication.RouterJobClosed
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "",
"dispositionCode": "",
"workerId": "",
"assignmentId": "",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterJobClosed",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
dispositionCode
string
✔️
Na podstawie danych wejściowych użytkownika
identyfikator procesu roboczego
string
❌
identyfikator przypisania
string
❌
Microsoft.Communication.RouterJobCancelled
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/disposition/{disposition-code}",
"data": {
"note": "Cancelled due to <reason>",
"dispositionCode": "100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"queueId": ""
},
"eventType": "Microsoft.Communication.RouterJobCancelled",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
uwaga
string
✔️
Na podstawie danych wejściowych użytkownika
dispositionCode
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
queueId
string
✔️
Microsoft.Communication.RouterJobExceptionTriggered
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/exceptionrule/{rulekey}",
"data": {
"ruleKey": "r100",
"exceptionRuleId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterJobExceptionTriggered",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
ruleKey
string
❌
exceptionRuleId
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterJobWorkerSelectorsExpired
Powrót do wykazu zdarzeń
{
"id": "b6d8687a-5a1a-42ae-b8b5-ff7ec338c872",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/queue/{queue-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"requestedWorkerSelectorsExpired": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"attachedWorkerSelectorsExpired": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
]
},
"eventType": "Microsoft.Communication.RouterJobWorkerSelectorsExpired",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelReference
string
✔️
queueId
string
❌
channelId
string
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista selektorów procesów roboczych dołączonych przez zasady klasyfikacji
Microsoft.Communication.RouterJobUnassigned
Powrót do wykazu zdarzeń
{
"id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}/assignment/{assignment-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"assignmentId": "",
"workerId": "",
"channelId": "FooVoiceChannelId",
"channelReference": "test-abc",
"queueId": "queue-id",
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterJobUnassigned",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
identyfikator przypisania
string
❌
identyfikator procesu roboczego
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
gdy classificationPolicyId
jest określony dla zadania
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterJobWaitingForActivation
Powrót do wykazu zdarzeń
{
"id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelId": "FooVoiceChannelId",
"channelReference": "test-abc",
"queueId": "queue-id",
"priority": 1,
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"requestedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"attachedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"scheduledOn": "2022-02-17T00:55:25.1736293Z",
"unavailableForMatching": false
},
"eventType": "Microsoft.Communication.RouterJobWaitingForActivation",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
gdy classificationPolicyId
jest określony dla zadania
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista selektorów procesów roboczych dołączonych przez zasady klasyfikacji
scheduledOn
DateTimeOffset
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
niedostępnyForMatching
bool
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
priority
int
❌
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
Microsoft.Communication.RouterJobSchedulingFailed
Powrót do wykazu zdarzeń
{
"id": "acdf8fa5-8ab4-4a65-874a-c1d2a4a97f2e",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "job/{job-id}/channel/{channel-id}",
"data": {
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelId": "FooVoiceChannelId",
"channelReference": "test-abc",
"queueId": "queue-id",
"priority": 1,
"labels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"requestedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"attachedWorkerSelectors": [
{
"key": "string",
"labelOperator": "equal",
"value": 5,
"ttl": "P3Y6M4DT12H30M5S"
}
],
"scheduledOn": "2022-02-17T00:55:25.1736293Z",
"failureReason": "Error"
},
"eventType": "Microsoft.Communication.RouterJobSchedulingFailed",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator zadania
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
gdy classificationPolicyId
jest określony dla zadania
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista selektorów procesów roboczych dołączonych przez zasady klasyfikacji
scheduledOn
DateTimeOffset
✔️
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
failureReason
string
✔️
Ustalone przez system
priority
int
❌
Na podstawie danych wejściowych użytkownika podczas tworzenia zadania
Zdarzenia procesu roboczego
Microsoft.Communication.RouterWorkerOfferIssued
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"offerId": "525fec06-ab81-4e60-b780-f364ed96ade1",
"offeredOn": "2021-06-23T02:43:30.3847144Z",
"expiresOn": "2021-06-23T02:44:30.3847674Z",
"jobPriority": 5,
"jobLabels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"jobTags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterWorkerOfferIssued",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
offeredOn
DateTimeOffset
❌
expiresOn
DateTimeOffset
❌
jobPriority
int
❌
jobLabels
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
jobTags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterWorkerOfferAccepted
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"jobPriority": 5,
"jobLabels": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"jobTags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
"assignmentId": "765fec06-ab81-4e60-b780-f364ed96ade1"
},
"eventType": "Microsoft.Communication.RouterWorkerOfferAccepted",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
identyfikator zadania
string
❌
jobPriority
int
❌
jobLabels
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
jobTags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
identyfikator przypisania
string
❌
Microsoft.Communication.RouterWorkerOfferDeclined
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1",
"offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
},
"eventType": "Microsoft.Communication.RouterWorkerOfferDeclined",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
Microsoft.Communication.RouterWorkerOfferRevoked
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1"
},
"eventType": "Microsoft.Communication.RouterWorkerOfferRevoked",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
offerId
string
❌
identyfikator procesu roboczego
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Microsoft.Communication.RouterWorkerOfferExpired
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}/job/{job-id}",
"data": {
"offerId": "565fec06-ab81-4e60-b780-f364ed96ade1",
"workerId": "w100",
"jobId": "7f1df17b-570b-4ae5-9cf5-fe6ff64cc712",
"channelReference": "test-abc",
"channelId": "FooVoiceChannelId",
"queueId": "625fec06-ab81-4e60-b780-f364ed96ade1"
},
"eventType": "Microsoft.Communication.RouterWorkerOfferExpired",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
offerId
string
❌
identyfikator zadania
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Microsoft.Communication.RouterWorkerRegistered
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}",
"data": {
"workerId": "worker3",
"totalCapacity": 100,
"queueAssignments": [
{
"id": "MyQueueId2",
"name": "Queue 3",
"labels": {
"Language": "en",
"Product": "Office",
"Geo": "NA"
}
}
],
"labels": {
"x": "111",
"y": "111"
},
"channelConfigurations": [
{
"channelId": "FooVoiceChannelId",
"capacityCostPerJob": 10,
"maxNumberOfJobs": 5
}
],
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
}
},
"eventType": "Microsoft.Communication.RouterWorkerRegistered",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
totalCapacity
int
❌
queueAssignments
List<QueueDetails>
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
channelConfigurations
List<ChannelConfiguration>
❌
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
Microsoft.Communication.RouterWorkerUpdated
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}",
"data": {
"workerId": "worker3",
"availableForOffers": true,
"totalCapacity": 100,
"queueAssignments": [
{
"id": "MyQueueId2",
"name": "Queue 3",
"labels": {
"Language": "en",
"Product": "Office",
"Geo": "NA"
}
}
],
"labels": {
"x": "111",
"y": "111"
},
"channelConfigurations": [
{
"channelId": "FooVoiceChannelId",
"capacityCostPerJob": 10,
"maxNumberOfJobs": 5
}
],
"tags": {
"Locale": "en-us",
"Segment": "Enterprise",
"Token": "FooToken"
},
"updatedWorkerProperties": [
"TotalCapacity",
"Labels",
"Tags",
"ChannelConfigurations",
"AvailableForOffers",
"QueueAssignments"
]
},
"eventType": "Microsoft.Communication.RouterWorkerUpdated",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
totalCapacity
int
❌
queueAssignments
List<QueueDetails>
❌
Etykiety
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
channelConfigurations
List<ChannelConfiguration>
❌
tags
Dictionary<string, object>
✔️
Na podstawie danych wejściowych użytkownika
updatedWorkerProperties
List<UpdateWorkerProperty>
❌
Zaktualizowano właściwości procesu roboczego, w tym AvailableForOffers, QueueAssignments, ChannelConfigurations, TotalCapacity, Labels i Tags
Microsoft.Communication.RouterWorkerDeregistered
Powrót do wykazu zdarzeń
{
"id": "1027db4a-17fe-4a7f-ae67-276c3120a29f",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}",
"subject": "worker/{worker-id}",
"data": {
"workerId": "worker3"
},
"eventType": "Microsoft.Communication.RouterWorkerDeregistered",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2022-02-17T00:55:25.1736293Z"
}
Lista atrybutów
Atrybut
Typ
Możliwa wartość Null
opis
Uwagi
identyfikator procesu roboczego
string
❌
Definicje modelu
QueueDetails
public class QueueDetails
{
public string Id { get; set; }
public string Name { get; set; }
public Dictionary<string, object>? Labels { get; set; }
}
CommunicationError
public class CommunicationError
{
public string? Code { get; init; }
public string Message { get; init; }
public string? Target { get; init; }
public CommunicationError? InnerError { get; init; }
public IEnumerable<CommunicationError>? Details { get; init; }
}
Konfiguracja kanału
public class ChannelConfiguration
{
public string ChannelId { get; set; }
public int CapacityCostPerJob { get; set; }
public int? MaxNumberOfJobs { get; set; }
}
UpdatedWorkerProperty
public enum UpdatedWorkerProperty
{
AvailableForOffers,
Capacity,
QueueAssignments,
Labels,
Tags,
ChannelConfigurations
}
WorkerSelector
public class WorkerSelector
{
public string Key { get; set; }
public LabelOperator LabelOperator { get; set; }
public object Value { get; set; }
public double? TTLSeconds { get; set; }
public WorkerSelectorState State { get; set; }
public DateTimeOffset? ExpireTime { get; set; }
}
public enum WorkerSelectorState
{
Active = 0,
Expired = 1
}
public enum LabelOperator
{
Equal,
NotEqual,
LessThan,
LessThanEqual,
GreaterThan,
GreaterThanEqual,
}