Skip to content

Commit

Permalink
[ACS JobRouter] DPG Models (#38868)
Browse files Browse the repository at this point in the history
* missing usage of Azure.Etag in RouterQueueItem

* add tsp-location

* dpg models initial commit

* update commit

* all Serialize methods added

* auth policy modified to new generated code

* fix errors and update readme

* fix tests

* Update with more fixes

* more fixess

* update assets

* update assests.json

* update api def

* more fixes
  • Loading branch information
sarkar-rajarshi authored Oct 16, 2023
1 parent 4f13739 commit cc687f6
Show file tree
Hide file tree
Showing 368 changed files with 24,502 additions and 11,674 deletions.
7 changes: 3 additions & 4 deletions sdk/communication/Azure.Communication.JobRouter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ To create a new Communication Service, you can use the [Azure Portal][communicat
### Using statements
```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

### Create a JobRouter Client
Expand Down Expand Up @@ -98,7 +97,7 @@ Response<DistributionPolicy> distributionPolicy = await routerAdministrationClie
### Queue
Next, we can create the queue.
```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_CreateQueue_Async
Response<Models.RouterQueue> queue = await routerAdministrationClient.CreateQueueAsync(
Response<RouterQueue> queue = await routerAdministrationClient.CreateQueueAsync(
new CreateQueueOptions(
queueId: "queue-1",
distributionPolicyId: distributionPolicy.Value.Id)
Expand Down Expand Up @@ -175,7 +174,7 @@ foreach (EventGridEvent egEvent in egEvents)
However, we could also wait a few seconds and then query the worker directly against the JobRouter API to see if an offer was issued to it.
```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_QueryWorker_Async
Response<RouterWorker> result = await routerClient.GetWorkerAsync(worker.Value.Id);
foreach (Models.RouterJobOffer? offer in result.Value.Offers)
foreach (RouterJobOffer? offer in result.Value.Offers)
{
Console.WriteLine($"Worker {worker.Value.Id} has an active offer for job {offer.JobId}");
}
Expand All @@ -185,7 +184,7 @@ foreach (Models.RouterJobOffer? offer in result.Value.Offers)
Once a worker receives an offer, it can take two possible actions: accept or decline. We are going to accept the offer.
```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_AcceptOffer_Async
// fetching the offer id
Models.RouterJobOffer jobOffer = result.Value.Offers.First<RouterJobOffer>(x => x.JobId == job.Value.Id);
RouterJobOffer jobOffer = result.Value.Offers.First<RouterJobOffer>(x => x.JobId == job.Value.Id);

string offerId = jobOffer.OfferId; // `OfferId` can be retrieved directly from consuming event from Event grid
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"AssetsRepo": "Azure/azure-sdk-assets",
"AssetsRepoPrefixPath": "net",
"TagPrefix": "net/communication/Azure.Communication.JobRouter",
"Tag": "net/communication/Azure.Communication.JobRouter_b53dd17d6a"
"Tag": "net/communication/Azure.Communication.JobRouter_33a06c6ea8"
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -82,17 +81,6 @@ Console.WriteLine($"Classification policy successfully update with new prioritiz

*NOTE: It is not possible to update a single QueueSelectorAttachment or WorkerSelectorAttachment. In order to add QueueSelectorAttachment to an already existing set of QueueSelectorAttachment(s), either specify all the QueueSelectorAttachment(s) again OR perform a Get operation first to retrieve the current value of the classification policy (preferred).

## Remove from classification policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateClassificationPolicyRemoveProp
Response updatedClassificationPolicyWithoutName = routerAdministrationClient.UpdateClassificationPolicy(classificationPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<ClassificationPolicy> queriedClassificationPolicyWithoutName = routerAdministrationClient.GetClassificationPolicy(classificationPolicyId);

Console.WriteLine($"Classification policy successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedClassificationPolicyWithoutName.Value.Name)}");
```

## List classification policies

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetClassificationPolicies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -82,16 +81,6 @@ Console.WriteLine($"Classification policy successfully update with new prioritiz

*NOTE: It is not possible to update a single QueueSelectorAttachment or WorkerSelectorAttachment. In order to add QueueSelectorAttachment to an already existing set of QueueSelectorAttachment(s), either specify all the QueueSelectorAttachment(s) again OR perform a Get operation first to retrieve the current value of the classification policy (preferred).

## Remove from classification policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateClassificationPolicyRemoveProp_Async
Response updatedClassificationPolicyWithoutName = await routerAdministrationClient.UpdateClassificationPolicyAsync(classificationPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<ClassificationPolicy> queriedClassificationPolicyWithoutName = await routerAdministrationClient.GetClassificationPolicyAsync(classificationPolicyId);

Console.WriteLine($"Classification policy successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedClassificationPolicyWithoutName.Value.Name)}");
```

## List classification policies

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -55,17 +54,6 @@ Response<DistributionPolicy> updatedDistributionPolicy = routerAdministrationCli
Console.WriteLine($"Distribution policy successfully update with new distribution mode. Mode Type: {updatedDistributionPolicy.Value.Mode.Kind}");
```

## Remove from distribution policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateDistributionPolicyRemoveProp
Response updatedDistributionPolicyWithoutName = routerAdministrationClient.UpdateDistributionPolicy(distributionPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<DistributionPolicy> queriedDistributionPolicyWithoutName = routerAdministrationClient.GetDistributionPolicy(distributionPolicyId);

Console.WriteLine($"Distribution policy successfully updated: 'Name' has been removed. Status: Status: {string.IsNullOrWhiteSpace(queriedDistributionPolicyWithoutName.Value.Name)}");
```

## List distribution policies

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetDistributionPolicies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -55,17 +54,6 @@ Response<DistributionPolicy> updatedDistributionPolicy = await routerAdministrat
Console.WriteLine($"Distribution policy successfully update with new distribution mode. Mode Type: {updatedDistributionPolicy.Value.Mode.Kind}");
```

## Remove from distribution policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateDistributionPolicyRemoveProp_Async
Response updatedDistributionPolicyWithoutName = await routerAdministrationClient.UpdateDistributionPolicyAsync(distributionPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<DistributionPolicy> queriedDistributionPolicyWithoutName = await routerAdministrationClient.GetDistributionPolicyAsync(distributionPolicyId);

Console.WriteLine($"Distribution policy successfully updated: 'Name' has been removed. Status: Status: {string.IsNullOrWhiteSpace(queriedDistributionPolicyWithoutName.Value.Name)}");
```

## List distribution policies

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetDistributionPolicies_Async
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -143,18 +142,6 @@ Console.WriteLine($"`EscalateJobOnWaitTimeExceededTrigger` rule has been success
Console.WriteLine($"`EscalateJobOnWaitTimeExceededTrigger2Min` rule has been successfully added: {updateExceptionPolicy.Value.ExceptionRules.ContainsKey("EscalateJobOnWaitTimeExceededTrigger2Min")}");
```

## Remove from exception policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateExceptionPolicyRemoveProp
// we are going to remove Name
Response updateExceptionPolicyWithoutName = routerClient.UpdateExceptionPolicy(exceptionPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<ExceptionPolicy> queriedExceptionPolicyWithoutName = routerClient.GetExceptionPolicy(exceptionPolicyId);

Console.WriteLine($"Exception policy successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedExceptionPolicyWithoutName.Value.Name)}");
```

## List exception policies

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetExceptionPolicies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand Down Expand Up @@ -143,18 +142,6 @@ Console.WriteLine($"`EscalateJobOnWaitTimeExceededTrigger` rule has been success
Console.WriteLine($"`EscalateJobOnWaitTimeExceededTrigger2Min` rule has been successfully added: {updateExceptionPolicy.Value.ExceptionRules.ContainsKey("EscalateJobOnWaitTimeExceededTrigger2Min")}");
```

## Remove from exception policy

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateExceptionPolicyRemoveProp_Async
// we are going to remove Name
Response updateExceptionPolicyWithoutName = await routerClient.UpdateExceptionPolicyAsync(exceptionPolicyId,
RequestContent.Create(new { Name = (string?)null }));

Response<ExceptionPolicy> queriedExceptionPolicyWithoutName = await routerClient.GetExceptionPolicyAsync(exceptionPolicyId);

Console.WriteLine($"Exception policy successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedExceptionPolicyWithoutName.Value.Name)}");
```

## List exception policies

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetExceptionPolicies_Async
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand All @@ -22,7 +21,7 @@ JobRouterAdministrationClient routerAdministrationClient = new JobRouterAdminist
// set `distributionPolicyId` to an existing distribution policy
string jobQueueId = "job-queue-id";

Response<Models.RouterQueue> jobQueue = routerAdministrationClient.CreateQueue(
Response<RouterQueue> jobQueue = routerAdministrationClient.CreateQueue(
options: new CreateQueueOptions(jobQueueId, distributionPolicyId) // this is optional
{
Name = "My job queue"
Expand All @@ -34,47 +33,36 @@ Console.WriteLine($"Job queue successfully create with id: {jobQueue.Value.Id}")
## Get a job queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueue
Response<Models.RouterQueue> queriedJobQueue = routerAdministrationClient.GetQueue(jobQueueId);
Response<RouterQueue> queriedJobQueue = routerAdministrationClient.GetQueue(jobQueueId);

Console.WriteLine($"Successfully fetched queue with id: {queriedJobQueue.Value.Id}");
```

## Get queue statistics

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueueStat
Response<RouterQueueStatistics> queueStatistics = routerClient.GetQueueStatistics(queueId: jobQueueId);
Response<RouterQueueStatistics> queueStatistics = routerClient.GetQueueStatistics(jobQueueId);

Console.WriteLine($"Queue statistics successfully retrieved for queue: {JsonSerializer.Serialize(queueStatistics.Value)}");
```

## Update a job queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateGetJobQueue
Response<Models.RouterQueue> updatedJobQueue = routerAdministrationClient.UpdateQueue(
Response<RouterQueue> updatedJobQueue = routerAdministrationClient.UpdateQueue(
options: new UpdateQueueOptions(jobQueueId)
{
Labels = { ["Additional-Queue-Label"] = new LabelValue("ChatQueue") }
});
```

## Remove from queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateQueueRemoveProp
Response updatedJobQueueWithoutName = routerAdministrationClient.UpdateQueue(jobQueueId,
RequestContent.Create(new { Name = (string?)null }));

Response<Models.RouterQueue> queriedJobQueueWithoutName = routerAdministrationClient.GetQueue(jobQueueId);

Console.WriteLine($"Queue successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedJobQueueWithoutName.Value.Name)}");
```

## List job queues

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueues
Pageable<Models.RouterQueueItem> jobQueues = routerAdministrationClient.GetQueues();
foreach (Page<Models.RouterQueueItem> asPage in jobQueues.AsPages(pageSizeHint: 10))
Pageable<RouterQueueItem> jobQueues = routerAdministrationClient.GetQueues();
foreach (Page<RouterQueueItem> asPage in jobQueues.AsPages(pageSizeHint: 10))
{
foreach (Models.RouterQueueItem? policy in asPage.Values)
foreach (RouterQueueItem? policy in asPage.Values)
{
Console.WriteLine($"Listing job queue with id: {policy.Queue.Id}");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand All @@ -22,7 +21,7 @@ JobRouterAdministrationClient routerAdministrationClient = new JobRouterAdminist
// set `distributionPolicyId` to an existing distribution policy
string jobQueueId = "job-queue-id";

Response<Models.RouterQueue> jobQueue = await routerAdministrationClient.CreateQueueAsync(
Response<RouterQueue> jobQueue = await routerAdministrationClient.CreateQueueAsync(
options: new CreateQueueOptions(jobQueueId, distributionPolicyId)
{
Name = "My job queue"
Expand All @@ -34,15 +33,15 @@ Console.WriteLine($"Job queue successfully create with id: {jobQueue.Value.Id}")
## Get a job queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueue_Async
Response<Models.RouterQueue> queriedJobQueue = await routerAdministrationClient.GetQueueAsync(jobQueueId);
Response<RouterQueue> queriedJobQueue = await routerAdministrationClient.GetQueueAsync(jobQueueId);

Console.WriteLine($"Successfully fetched queue with id: {queriedJobQueue.Value.Id}");
```

## Get queue statistics

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueueStat_Async
Response<RouterQueueStatistics> queueStatistics = await routerClient.GetQueueStatisticsAsync(queueId: jobQueueId);
Response<RouterQueueStatistics> queueStatistics = await routerClient.GetQueueStatisticsAsync(jobQueueId);

Console.WriteLine($"Queue statistics successfully retrieved for queue: {JsonSerializer.Serialize(queueStatistics.Value)}");
```
Expand All @@ -51,31 +50,20 @@ Console.WriteLine($"Queue statistics successfully retrieved for queue: {JsonSeri
## Update a job queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateGetJobQueue_Async
Response<Models.RouterQueue> updatedJobQueue = await routerAdministrationClient.UpdateQueueAsync(
Response<RouterQueue> updatedJobQueue = await routerAdministrationClient.UpdateQueueAsync(
options: new UpdateQueueOptions(jobQueueId)
{
Labels = { ["Additional-Queue-Label"] = new LabelValue("ChatQueue") }
});
```

## Remove from queue

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateQueueRemoveProp_Async
Response updatedJobQueueWithoutName = await routerAdministrationClient.UpdateQueueAsync(jobQueueId,
RequestContent.Create(new { Name = (string?)null }));

Response<Models.RouterQueue> queriedJobQueueWithoutName = await routerAdministrationClient.GetQueueAsync(jobQueueId);

Console.WriteLine($"Queue successfully updated: 'Name' has been removed. Status: {string.IsNullOrWhiteSpace(queriedJobQueueWithoutName.Value.Name)}");
```

## List job queues

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetJobQueues_Async
AsyncPageable<Models.RouterQueueItem> jobQueues = routerAdministrationClient.GetQueuesAsync();
await foreach (Page<Models.RouterQueueItem> asPage in jobQueues.AsPages(pageSizeHint: 10))
AsyncPageable<RouterQueueItem> jobQueues = routerAdministrationClient.GetQueuesAsync();
await foreach (Page<RouterQueueItem> asPage in jobQueues.AsPages(pageSizeHint: 10))
{
foreach (Models.RouterQueueItem? policy in asPage.Values)
foreach (RouterQueueItem? policy in asPage.Values)
{
Console.WriteLine($"Listing job queue with id: {policy.Queue.Id}");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_UsingStatements
using Azure.Communication.JobRouter;
using Azure.Communication.JobRouter.Models;
```

## Create a client
Expand All @@ -24,7 +23,7 @@ JobRouterAdministrationClient routerAdministrationClient = new JobRouterAdminist
Response<DistributionPolicy> distributionPolicy =
routerAdministrationClient.CreateDistributionPolicy(new CreateDistributionPolicyOptions("distribution-policy-id", TimeSpan.FromMinutes(5), new LongestIdleMode()));

Response<Models.RouterQueue> jobQueue = routerAdministrationClient.CreateQueue(new CreateQueueOptions("job-queue-id", distributionPolicy.Value.Id));
Response<RouterQueue> jobQueue = routerAdministrationClient.CreateQueue(new CreateQueueOptions("job-queue-id", distributionPolicy.Value.Id));

string jobId = "router-job-id";

Expand Down Expand Up @@ -78,7 +77,7 @@ Console.WriteLine($"Successfully retrieved job with id: {queriedJob.Value.Id}");
## Get a job position

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_GetRouterJobPosition
Response<Models.RouterJobPositionDetails> jobPositionDetails = routerClient.GetQueuePosition(jobId);
Response<RouterJobPositionDetails> jobPositionDetails = routerClient.GetQueuePosition(jobId);

Console.WriteLine($"Job position for id `{jobPositionDetails.Value.JobId}` successfully retrieved. JobPosition: {jobPositionDetails.Value.Position}");
```
Expand All @@ -96,21 +95,10 @@ Response<RouterJob> updatedJob = routerClient.UpdateJob(
Console.WriteLine($"Job has been successfully updated. Current value of channelReference: {updatedJob.Value.ChannelReference}"); // "45678"
```

## Remove from job

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_UpdateJobRemoveProp
Response updatedJobWithoutChannelReference = routerClient.UpdateJob(jobId,
RequestContent.Create(new { ChannelReference = (string?)null }));

Response<RouterJob> queriedJobWithoutChannelReference = routerClient.GetJob(jobId);

Console.WriteLine($"Job has been successfully updated. 'ChannelReference' has been removed: {string.IsNullOrWhiteSpace(queriedJobWithoutChannelReference.Value.ChannelReference)}");
```

## Reclassify a job

```C# Snippet:Azure_Communication_JobRouter_Tests_Samples_Crud_ReclassifyRouterJob
Response reclassifyJob = routerClient.ReclassifyJob(jobWithCpId);
Response reclassifyJob = routerClient.ReclassifyJob(jobWithCpId, CancellationToken.None);
```

## Accept a job offer
Expand All @@ -135,7 +123,7 @@ while (routerClient.GetWorker(worker.Value.Id).Value.Offers.All(offer => offer.J

Response<RouterWorker> queriedWorker = routerClient.GetWorker(worker.Value.Id);

Models.RouterJobOffer? issuedOffer = queriedWorker.Value.Offers.First<RouterJobOffer>(offer => offer.JobId == jobId);
RouterJobOffer? issuedOffer = queriedWorker.Value.Offers.First<RouterJobOffer>(offer => offer.JobId == jobId);

Console.WriteLine($"Worker has been successfully issued to worker with offerId: {issuedOffer.OfferId} and offer expiry time: {issuedOffer.ExpiresAt}");

Expand Down
Loading

0 comments on commit cc687f6

Please sign in to comment.