Inscrever-se em eventos do Job Router
Artigo 04/04/2024
9 contribuidores
Comentários
Neste artigo
Este guia descreve as etapas para configurar uma assinatura para eventos do Job Router e como recebê-los.
Para obter mais detalhes sobre a Grade de Eventos, consulte a documentação da Grade de Eventos.
Pré-requisitos
Criar uma subscrição do Event Grid
Este modelo implanta uma assinatura de Grade de Eventos em uma Fila de Armazenamento para eventos do Roteador de Trabalho.
Se a conta de armazenamento, a fila ou o tópico do sistema não existirem, eles também serão criados.
Parâmetros
Nome do Recurso dos Serviços de Comunicação do Azure: O nome do seu recurso dos Serviços de Comunicação do Azure. Por exemplo, se o ponto de extremidade do seu recurso for https://contoso.communication.azure.net
, defina como contoso
.
Nome do Armazenamento: O nome da sua Conta de Armazenamento do Azure. Se não existir, será criado.
Subnome do evento: o nome da assinatura do evento a ser criada.
Nome do Tópico do Sistema: Se você tiver assinaturas de eventos existentes em seu recurso dos Serviços de Comunicação do Azure, localize o System Topic
Events
nome na guia do seu recurso dos Serviços de Comunicação do Azure. Caso contrário, especifique um nome exclusivo, como o próprio nome do recurso dos Serviços de Comunicação do Azure.
Nome da fila: o nome da fila na sua conta de armazenamento. Se não existir, será criado.
Recursos implantados
Os seguintes recursos são implantados como parte da solução
Conta de armazenamento: se o nome da conta de armazenamento não existir.
Fila de armazenamento : se a fila não existir na conta de armazenamento.
Tópico do Sistema de Grade de Eventos : Se o tópico não existir.
Assinatura de grade de eventos: uma assinatura para todos os eventos do Job Router na fila de armazenamento.
Guia de início rápido: receber eventos da Grade de Eventos por meio de uma fila de armazenamento do Azure
Criar um novo aplicativo C#
Em uma janela de console (como cmd, PowerShell ou Bash), use o dotnet new
comando para criar um novo aplicativo de console com o nome EventReceiver
. Este comando cria um projeto C# "Hello World" simples com um único arquivo de origem: Program.cs .
dotnet new console -o EventReceiver
Altere seu diretório para a pasta do aplicativo recém-criada e use o dotnet build
comando para compilar seu aplicativo.
cd EventReceiver
dotnet build
Instalar os pacotes
Instale as filas de armazenamento do Azure e os pacotes de grade de eventos.
dotnet add package Azure.Storage.Queues
dotnet add package Azure.Messaging.EventGrid
Receber mensagens da fila
Copie o seguinte trecho de código e cole no arquivo de origem: 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);
}
Executar o código
Execute o aplicativo a partir do diretório do aplicativo com o dotnet run
comando.
dotnet run
Catálogo de Eventos
Eventos do roteador
Microsoft.Communication.RouterJobReceived
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelReference
string
❌
situação do emprego
enum
❌
Valores possíveis PendingClassification, Queued
Quando esse evento é enviado, o processo de classificação ainda não foi executado ou o trabalho foi criado com um queueId associado.
channelId
string
❌
classificaçãoPolicyId
string
✔️
null
quando queueId
é especificado para um trabalho
queueId
string
✔️
null
quando classificationPolicyId
é especificado para um trabalho
prioridade
int
✔️
Nulo quando classificationPolicyId
é especificado. Valor não nulo em caso de atribuição direta de fila.
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
requestedWorkerSelectors
List<WorkerSelector>
✔️
Com base na entrada do usuário
agendadoOn
DateTimeOffset
✔️
Com base na entrada do usuário
unavailableForMatching
bool
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterJobClassified
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
queueDetalhes
QueueDetails
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
classificaçãoPolicyId
string
❌
queueId
string
✔️
null
quando classificationPolicy
não é usado para seleção de fila
prioridade
int
✔️
null
quando classificationPolicy
não é usado para aplicar prioridade no trabalho
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
attachedWorkerSelectors
List<WorkerSelector>
✔️
Lista dos seletores de trabalhadores anexada por uma política de classificação
Microsoft.Communication.RouterJobQueued
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelReference
string
✔️
channelId
string
❌
queueId
string
❌
prioridade
int
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
requestedWorkerSelectors
List<WorkerSelector>
✔️
Com base na entrada do usuário durante a criação de trabalho
attachedWorkerSelectors
List<WorkerSelector>
✔️
Lista dos seletores de trabalhadores anexada por uma política de classificação
Microsoft.Communication.RouterJobClassificationFailed
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
erros
List<CommunicationError>
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
classificaçãoPolicyId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterJobCompleted
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
assignmentId
string
❌
trabalhadorId
string
❌
Microsoft.Communication.RouterJobClosed
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
dispositionCode
string
✔️
Com base na entrada do usuário
trabalhadorId
string
❌
assignmentId
string
❌
Microsoft.Communication.RouterJobCancelled
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
nota
string
✔️
Com base na entrada do usuário
dispositionCode
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
queueId
string
✔️
Microsoft.Communication.RouterJobExceptionTriggered
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
chave de regra
string
❌
exceptionRuleId
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterJobWorkerSelectorsExpired
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelReference
string
✔️
queueId
string
❌
channelId
string
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista dos seletores de trabalhadores anexada por uma política de classificação
Microsoft.Communication.RouterJobUnassigned
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
assignmentId
string
❌
trabalhadorId
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
quando classificationPolicyId
é especificado para um trabalho
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterJobWaitingForActivation
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
quando classificationPolicyId
é especificado para um trabalho
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista dos seletores de trabalhadores anexada por uma política de classificação
agendadoOn
DateTimeOffset
✔️
Com base na entrada do usuário durante a criação de um trabalho
unavailableForMatching
bool
✔️
Com base na entrada do usuário durante a criação de um trabalho
prioridade
int
❌
Com base na entrada do usuário durante a criação de um trabalho
Microsoft.Communication.RouterJobSchedulingFailed
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
jobId
string
❌
channelId
string
❌
channelReference
string
❌
queueId
string
✔️
null
quando classificationPolicyId
é especificado para um trabalho
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
requestedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Com base na entrada do usuário durante a criação de um trabalho
attachedWorkerSelectorsExpired
List<WorkerSelector>
✔️
Lista dos seletores de trabalhadores anexada por uma política de classificação
agendadoOn
DateTimeOffset
✔️
Com base na entrada do usuário durante a criação de um trabalho
falhaRazão
string
✔️
Sistema determinado
prioridade
int
❌
Com base na entrada do usuário durante a criação de um trabalho
Eventos do trabalhador
Microsoft.Communication.RouterWorkerOfferIssued
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
oferecidoOn
DateTimeOffset
❌
expira
DateTimeOffset
❌
jobPrioridade
int
❌
jobRótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
jobTags
Dictionary<string, object>
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterWorkerOfferAccepted
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
jobId
string
❌
jobPrioridade
int
❌
jobRótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
jobTags
Dictionary<string, object>
✔️
Com base na entrada do usuário
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
assignmentId
string
❌
Microsoft.Communication.RouterWorkerOfferDeclined
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
offerId
string
❌
Microsoft.Communication.RouterWorkerOfferRevoked
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
offerId
string
❌
trabalhadorId
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Microsoft.Communication.RouterWorkerOfferExpired
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
offerId
string
❌
jobId
string
❌
channelReference
string
❌
channelId
string
❌
queueId
string
❌
Microsoft.Communication.RouterWorkerRegistered
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
Capacidade total
int
❌
filaAtribuições
List<QueueDetails>
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
channelConfigurations
List<ChannelConfiguration>
❌
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
Microsoft.Communication.RouterWorkerUpdated
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
Capacidade total
int
❌
filaAtribuições
List<QueueDetails>
❌
rótulos
Dictionary<string, object>
✔️
Com base na entrada do usuário
channelConfigurations
List<ChannelConfiguration>
❌
etiquetas
Dictionary<string, object>
✔️
Com base na entrada do usuário
updatedWorkerProperties
List<UpdateWorkerProperty>
❌
Propriedades do trabalhador atualizadas, incluindo AvailableForOffers, QueueAssignments, ChannelConfigurations, TotalCapacity, Labels e Tags
Microsoft.Communication.RouterWorkerDeregistered
Voltar ao Catálogo de Eventos
{
"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 de atributos
Atributo
Type
Que podem ser nulos
Description
Notas
trabalhadorId
string
❌
Definições de modelo
QueueDetails
public class QueueDetails
{
public string Id { get; set; }
public string Name { get; set; }
public Dictionary<string, object>? Labels { get; set; }
}
Erro de comunicação
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; }
}
ChannelConfiguration
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,
}