Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a csomag tartalmazza a Azure Communication Services (ACS) feladat útválasztó szolgáltatásához tartozó JavaScript SDK-t.
Első lépések
Fő fogalmak
A feladat útválasztója alapfogalmait ismertető dokumentációban jobban megismerheti a feladat-útválasztót.
Előfeltételek
- Egy Azure-előfizetés.
- Egy Azure Communication Services (ACS) erőforrás.
- Ha ACS-erőforrást kell létrehoznia, használhatja az Azure Portalt, a Azure PowerShell vagy az Azure CLI-t.
Telepítés
npm install @azure/communication-job-router
Böngészőtámogatás
Ha azure SDK-kódtárakat szeretne használni egy webhelyen, konvertálnia kell a kódot úgy, hogy a böngészőben működjön. Ezt egy kötegelő nevű eszközzel teheti meg. A kötegelés jobb megértéséhez tekintse meg a csomagkontraszt dokumentációját .
Oktatóanyag: Feladatok átirányítása feldolgozókhoz a Azure Communication Services (ACS) feladat útválasztójának SDK-jának használatával
Az oktatóanyag során a következőket fogja elsajátítani:
- Üzenetsor létrehozása.
- Feldolgozók létrehozása és üzenetsorhoz rendelése.
- Feladatok átirányítása a feldolgozókhoz.
- A feladat-útválasztó eseményeire való feliratkozás és azok kezelése.
- Feladatok befejezése és bezárása.
Beállítása
(Nem kötelező) IDE telepítése
Telepítsen egy IDE-t, például a VSCode-ot vagy a Webstormot.
A NodeJS telepítése
Telepítse a NodeJS-t.
NodeJS Express-kiszolgáló indítása
Egy rendszerhéjban (cmd, PowerShell, Bash stb.) hozzon létre egy nevű RouterQuickStart mappát, és a mappán belül hajtsa végre a következőt npx express-generator: . Ez létrehoz egy egyszerű Express-projektet, amely figyeli a következőt port 3000: .
Példa
mkdir RouterQuickStart
cd RouterQuickStart
npx express-generator
npm install
DEBUG=routerquickstart:* npm start
ACS-erőforrással rendelkezik
Hozzon létre egy ACS-erőforrást az Azure Portalon , vagy használjon egy meglévő erőforrást.
Az Azure ACS-feladat útválasztójának SDK telepítése
RouterQuickStart A mappában telepítse az ACS-feladat útválasztójának SDK-ját a következő végrehajtásávalnpm install @azure/communication-job-router --save: .
Útválasztási feladatok
Feladatát útválasztó-ügyfelek létrehozása
Először létre kell hoznunk egy jobRouterAdministrationClient és egy elemet jobRouterClient.
jobRouterAdministrationClientmetódusokat biztosít a besorolási szabályzatokhoz, a terjesztési szabályzatokhoz, a kivételszabályzatokhoz és az üzenetsorokhoz.jobRouterClientmetódusokat biztosít a feladatokhoz és a dolgozókhoz.
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);
Terjesztési szabályzat létrehozása
Ez a szabályzat határozza meg, hogy mely feldolgozók kapnak állásajánlatokat, mivel a feladatok ki vannak osztva az üzenetsoraikból.
const distributionPolicy = await jobRouterAdministrationClient.createDistributionPolicy(
"default-distribution-policy-id",
{
name: "Default Distribution Policy",
offerExpiresAfterSeconds: 30,
mode: {
objectType: "longest-idle",
minConcurrentOffers: 1,
maxConcurrentOffers: 3,
},
}
);
Besorolási szabályzat létrehozása
Ez a szabályzat a létrehozáskor osztályozza a feladatokat.
- A rangsorolási szabályok jobb megértéséhez tekintse meg a szabálydokumentációnkat .
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)"
}
});
Üzenetsor létrehozása
Ez az üzenetsor a korábban létrehozott terjesztési szabályzatnak megfelelően kínál feladatokat a feldolgozóknak.
const salesQueueResponse = await jobRouterAdministrationClient.createQueue("sales-queue-id", {
name: "Sales",
distributionPolicyId: distributionPolicy.Id,
labels: {
department: "xbox",
},
});
Feldolgozók létrehozása
Ezek a feldolgozók a korábban létrehozott "Sales" üzenetsorhoz vannak rendelve, és vannak címkéik.
- beállítás
availableForOffersazt jelenti, hogytrueezek a munkavállalók készen állnak az állásajánlatok elfogadására. - A címkék és címkeválasztók jobb megértéséhez tekintse meg a címkék dokumentációját .
// 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
});
Feladat életciklusa
A feladatok életciklusának jobb megismeréséhez tekintse meg a feladat életciklusával kapcsolatos dokumentációnkat .
Feladat létrehozása
Ez a feladat a korábban létrehozott "Sales" üzenetsorba kerül.
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,
});
(Nem kötelező) Feladat létrehozása besorolási szabályzattal
Ez a feladat a korábban létrehozott besorolási szabályzattal lesz besorolva. Emellett címkével is rendelkezik.
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",
},
});
esemény
A feladat-útválasztó eseményei Azure Event Grid keresztül érkeznek. A Azure Event Grid jobb megértéséhez tekintse meg a Azure Event Grid dokumentációját.
Az előző példában:
- A feladat a "Sales" (Értékesítések) üzenetsorba kerül.
- A rendszer kiválaszt egy feldolgozót a feladat kezeléséhez, egy állásajánlatot ad ki az adott feldolgozónak, és egy
RouterWorkerOfferIssuedeseményt küld Azure Event Grid keresztül.
Példa RouterWorkerOfferIssued JSON-alakzatra:
{
"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"
}
Feliratkozás eseményekre
Az ACS-feladat útválasztói eseményeire való feliratkozás egyik módja az Azure Portal.
- Lépjen az ACS-erőforráshoz az Azure Portalon, és nyissa meg az "Események" panelt.
- Adjon hozzá egy esemény-előfizetést a "RouterWorkerOfferIssued" eseményhez.
- Válasszon ki egy megfelelő eszközt az esemény fogadásához (pl. Webhook, Azure Functions, Service Bus).
Tekintse meg a "feliratkozás feladat-útválasztó eseményekre" dokumentációt , hogy jobban megértse a feladat útválasztói eseményekre való feliratkozást.
Az eseményeket fogadó NodeJS-alkalmazás útvonala az alábbihoz hasonló lehet:
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 ...
});
...
});
A feladatajánlat elfogadása vagy elutasítása
Miután kapott egy eseményt RouterWorkerOfferIssued , elfogadhatja vagy elutasíthatja az állásajánlatot.
workerid– A munkaajánlatot elfogadó feldolgozó azonosítója.offerId– Az elfogadandó vagy elutasított ajánlat azonosítója.
const acceptResponse = await jobRouterClient.acceptJobOffer(workerId, offerId);
// or
const declineResponse = await jobRouterClient.declineJobOffer(workerId, offerId);
A feladat befejezése
A assignmentId feladat elvégzéséhez az előző lépés válaszából kapott válaszra van szükség.
await jobRouterClient.completeJob(jobId, assignmentId);
A feladat bezárása
Miután a feldolgozó befejezte a feladat burkoló fázisát, a jobRouterClient bezárhatja a feladatot, és a későbbi referencia érdekében csatolhat hozzá egy elhelyezési kódot.
await jobRouterClient.closeJob(jobId, assignmentId, { dispositionCode: "Resolved" });
Következő lépések
Az SDK használatának további részletes példáiért tekintse meg a mintakönyvtárat .
Közreműködés
Ha hozzá szeretne járulni ehhez az SDK-hoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Kapcsolódó projektek
Azure SDK for JavaScript