Azure Communication Services (ACS) taakrouter SDK voor JavaScript
Dit pakket bevat de JavaScript SDK voor de Azure Communication Services (ACS)-taakrouterservice.
Aan de slag
Belangrijkste concepten
Raadpleeg onze documentatie over de belangrijkste concepten van taakrouters om meer inzicht te krijgen in taakrouter.
Vereisten
- Een Azure-abonnement.
- Een acs-resource (Azure Communication Services).
- Als u een ACS-resource wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken.
Installeren
npm install @azure/communication-job-router
Browserondersteuning
Als u Azure SDK-bibliotheken op een website wilt gebruiken, moet u uw code converteren om in de browser te werken. U doet dit met behulp van een hulpprogramma dat een bundler wordt genoemd. Raadpleeg onze documentatie over bundeling voor meer informatie over bundeling.
Zelfstudie: Taken routeren naar werkrollen met behulp van de AZURE COMMUNICATION SERVICES (ACS) Job Router SDK
In deze zelfstudie leert u het volgende:
- Een wachtrij maken.
- Werkrollen maken en deze toewijzen aan een wachtrij.
- Taken doorsturen naar werkrollen.
- Hoe u zich kunt abonneren op taakrouter-gebeurtenissen en deze afhandelen.
- Taken voltooien en sluiten.
Instellen
(Optioneel) Een IDE installeren
Installeer een IDE zoals VSCode of Webstorm.
NodeJS installeren
Installeer NodeJS.
Een NodeJS Express-server starten
Maak in een shell (cmd, PowerShell, Bash, enzovoort) een map met de naam RouterQuickStart
en voer in deze map uit npx express-generator
. Hiermee wordt een eenvoudig Express-project gegenereerd dat luistert op port 3000
.
Voorbeeld
mkdir RouterQuickStart
cd RouterQuickStart
npx express-generator
npm install
DEBUG=routerquickstart:* npm start
Een ACS-resource hebben
Maak een ACS-resource in Azure Portal of gebruik een bestaande resource.
De Azure ACS-taakrouter-SDK installeren
Installeer in de RouterQuickStart
map de ACS Job Router SDK door uit te npm install @azure/communication-job-router --save
voeren.
Routeringstaken
Taakrouterclients maken
Eerst moeten we een jobRouterAdministrationClient
en een jobRouterClient
maken.
jobRouterAdministrationClient
biedt methoden voor classificatiebeleid, distributiebeleid, uitzonderingsbeleid en wachtrijen.jobRouterClient
biedt methoden voor Taken en Werkrollen.
const {
JobRouterClient,
JobRouterAdministrationClient,
} = require("@azure/communication-job-router");
const acsConnectionString =
"endpoint=https://<YOUR_ACS>.communication.azure.com/;accesskey=<YOUR_ACCESS_KEY>";
const jobRouterClient = new JobRouterClient(acsConnectionString);
const jobRouterAdministrationClient = new JobRouterAdministrationClient(acsConnectionString);
Een distributiebeleid maken
Met dit beleid wordt bepaald welke werknemers jobaanbiedingen ontvangen wanneer taken buiten hun wachtrijen worden verdeeld.
const distributionPolicy = await jobRouterAdministrationClient.createDistributionPolicy(
"default-distribution-policy-id",
{
name: "Default Distribution Policy",
offerExpiresAfterSeconds: 30,
mode: {
objectType: "longest-idle",
minConcurrentOffers: 1,
maxConcurrentOffers: 3,
},
}
);
Een classificatiebeleid maken
Dit beleid classificeert taken bij het maken.
- Raadpleeg onze documentatie over regels voor meer informatie over prioriteitsregels.
const classificationPolicy = await jobRouterAdministrationClient.createClassificationPolicy("default-classification-policy-id", {
name: "Default Classification Policy",
fallbackQueueId: salesQueueResponse.Id,
queueSelectors: [{
kind: "static",
labelSelector: { key: "department", labelOperator: "equal", value: "xbox" }
}],
workerSelectors: [{
kind: "static",
labelSelector: { key: "english", labelOperator: "greaterThan", value: 5 }
}],
prioritizationRule: {
kind: "expression-rule",
language: "powerFx";
expression: "If(job.department = \"xbox\", 2, 1)"
}
});
Een wachtrij maken
Deze wachtrij biedt taken aan werknemers volgens ons eerder gemaakte distributiebeleid.
const salesQueueResponse = await jobRouterAdministrationClient.createQueue("sales-queue-id", {
name: "Sales",
distributionPolicyId: distributionPolicy.Id,
labels: {
department: "xbox",
},
});
Werkrollen maken
Deze werknemers worden toegewezen aan de eerder gemaakte wachtrij 'Verkoop' en hebben enkele labels.
- ingesteld op
availableForOffers
betekenttrue
dat deze werknemers klaar zijn om vacatures te accepteren. - raadpleeg onze documentatie over labels voor een beter begrip van labels en labelkiezers.
// Create worker "Alice".
const workerAliceId = "773accfb-476e-42f9-a202-b211b41a4ea4";
const workerAliceResponse = await jobRouterClient.createWorker(workerAliceId, {
totalCapacity: 120,
labels: {
Xbox: 5,
german: 4
name: "Alice",
},
queueAssignments: { [salesQueueResponse.Id]: {} },
availableForOffers: true
});
// Create worker "Bob".
const workerBobId = "21837c88-6967-4078-86b9-1207821a8392";
const workerBobResponse = await jobRouterClient.createWorker(workerBobId, {
totalCapacity: 100,
labels: {
xbox: 5,
english: 3
name: "Bob"
},
queueAssignments: { [salesQueueResponse]: {} },
availableForOffers: true
});
Taaklevenscyclus
Raadpleeg onze documentatie over de levenscyclus van een taak voor meer inzicht in de levenscyclus van een taak.
Een taak maken
Deze taak is toegevoegd aan de eerder gemaakte wachtrij 'Verkoop'.
const job = await jobRouterClient.createJob("job-id", {
// e.g. callId or chat threadId
channelReference: "66e4362e-aad5-4d71-bb51-448672ebf492",
channelId: "voice",
priority: 2,
queueId: salesQueueResponse.Id,
});
(Optioneel) Taak maken met een classificatiebeleid
Deze taak wordt geclassificeerd met het eerder gemaakte classificatiebeleid. Het heeft ook een label.
const classificationJob = await JobRouterClient.createJob("classification-job-id", {
// e.g. callId or chat threadId
channelReference: "66e4362e-aad5-4d71-bb51-448672ebf492",
channelId: "voice",
classificationPolicyId: classificationPolicy.Id,
labels: {
department: "xbox",
},
});
gebeurtenis
Taakrouter-gebeurtenissen worden geleverd via Azure Event Grid. Raadpleeg onze Azure Event Grid documentatie voor meer informatie over Azure Event Grid.
In het vorige voorbeeld:
- De taak wordt verzonden naar de wachtrij 'Verkoop'.
- Er wordt een werkrol geselecteerd om de taak af te handelen, er wordt een jobaanbieding aan die werknemer uitgegeven en er wordt een
RouterWorkerOfferIssued
gebeurtenis verzonden via Azure Event Grid.
Voorbeeld van RouterWorkerOfferIssued
JSON-shape:
{
"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",
"offerTimeUtc": "2023-08-17T02:43:30.3847144Z",
"expiryTimeUtc": "2023-08-17T02: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": "2023-08-17T00:55:25.1736293Z"
}
Abonneren op gebeurtenissen
Een manier om u te abonneren op acs-taakrouter-gebeurtenissen is via de Azure-portal.
- Navigeer naar uw ACS-resource in Azure Portal en open de blade Gebeurtenissen.
- Voeg een gebeurtenisabonnement toe voor de gebeurtenis RouterWorkerOfferIssued.
- Selecteer een geschikte methode om de gebeurtenis te ontvangen (bijvoorbeeld Webhook, Azure Functions, Service Bus).
Raadpleeg onze documentatie 'abonneren op taakrouter-gebeurtenissen' voor meer informatie over het abonneren op taakrouter-gebeurtenissen.
De route in uw NodeJS-toepassing die gebeurtenissen ontvangt, kan er ongeveer als volgt uitzien:
app.post('/event', (req, res) => {
req.body.forEach(eventGridEvent => {
// Deserialize the event data into the appropriate type
if (eventGridEvent.eventType === "Microsoft.EventGrid.SubscriptionValidationEvent") {
res.send({ validationResponse: eventGridEvent.data.validationCode };
} else if (eventGridEvent.eventType === "Microsoft.Azure.CommunicationServices.RouterWorkerOfferIssued") {
// RouterWorkerOfferIssued handling logic;
} else if ...
});
...
});
De jobaanbieding accepteren of weigeren
Zodra u een RouterWorkerOfferIssued
gebeurtenis hebt ontvangen, kunt u de jobaanbieding accepteren of weigeren.
workerid
- De id van de werknemer die de jobaanbieding accepteert.offerId
- De id van de aanbieding die wordt geaccepteerd of geweigerd.
const acceptResponse = await jobRouterClient.acceptJobOffer(workerId, offerId);
// or
const declineResponse = await jobRouterClient.declineJobOffer(workerId, offerId);
De taak voltooien
De assignmentId
ontvangen van het antwoord van de vorige stap is vereist om de taak te voltooien.
await jobRouterClient.completeJob(jobId, assignmentId);
De taak sluiten
Zodra de werkrol de afrondingsfase van de taak heeft voltooid, kan de jobRouterClient
taak worden gesloten en een verwijderingscode aan de taak worden toegevoegd voor toekomstig gebruik.
await jobRouterClient.closeJob(jobId, assignmentId, { dispositionCode: "Resolved" });
Volgende stappen
Bekijk de map met voorbeelden voor aanvullende gedetailleerde voorbeelden van het gebruik van deze SDK.
Bijdragen
Als u wilt bijdragen aan deze SDK, leest u de handleiding voor bijdragen voor meer informatie over het bouwen en testen van de code.
Verwante projecten
Azure SDK for JavaScript