Megosztás a következőn keresztül:


Azure Communication közös ügyféloldali kódtár JavaScripthez – 2.4.0-s verzió

Ez a csomag közös kódot tartalmaz az Azure Communication Service kódtárakhoz.

Kezdő lépések

Előfeltételek

Telepítése

npm install @azure/communication-common
npm install @azure/identity

Böngésző támogatás

JavaScript-csomag

Ahhoz, hogy ezt az ügyfélkódtárat a böngészőben használhassa, először egy kötegelőt kell használnia. Ennek módjáról további információt a csomagküldő dokumentációbantalál.

Főbb fogalmak

CommunicationTokenCredential és AzureCommunicationTokenCredential

Ez CommunicationTokenCredential egy olyan felület, amely a felhasználó hitelesítésére szolgál a kommunikációs szolgáltatásokkal, például a csevegéssel vagy a hívással.

Ez AzureCommunicationTokenCredential kényelmes módot kínál az említett felületet megvalósító hitelesítő adatok létrehozására, és lehetővé teszi a beépített automatikus frissítési logika előnyeinek kihasználását.

A forgatókönyvtől függően érdemes lehet inicializálni a AzureCommunicationTokenCredential következővel:

  • statikus token (alkalmas rövid életű kliensek számára, pl. egyszeri csevegőüzenetek küldésére) vagy
  • visszahívási funkció, amely folyamatos hitelesítési állapotot biztosít a kommunikáció során (ideális pl. hosszú hívási munkamenetekhez).
  • egy Entra felhasználói jogkivonat beszerzésére alkalmas jogkivonat. A TokenCredential felület bármilyen implementációját biztosíthatja. Olyan forgatókönyvekhez alkalmas, ahol Entra felhasználói hozzáférési jogkivonatokra van szükség a Communication Services hitelesítéshez.

A konstruktoron vagy a jogkivonat-frissítő visszahívásán keresztül megadott AzureCommunicationTokenCredential jogkivonatok a Azure Communication Identity kódtár használatával szerezhetők be.

Példák

Hitelesítő adatok létrehozása statikus jogkivonattal

Rövid élettartamú ügyfelek esetén a jogkivonat lejáratkor történő frissítése nem szükséges, és statikus AzureCommunicationTokenCredential jogkivonattal példányosítható.

import { AzureCommunicationTokenCredential } from "@azure/communication-common";

const tokenCredential = new AzureCommunicationTokenCredential(
  "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
);

Hitelesítő adatok létrehozása visszahívással

Itt feltételezzük, hogy van egy függvényünk fetchTokenFromMyServerForUser , amely hálózati kérést küld egy JWT-jogkivonat karakterlánc lekérésére egy felhasználó számára. Átadjuk a hitelesítő adatoknak, hogy lekérjünk egy tokent Bob számára a saját szerverünkről. A kiszolgáló az Azure Communication Identity kódtárat használja a jogkivonatok kiadásához. A fetchTokenFromMyServerForUser függvénynek mindig érvényes jogkivonatot kell visszaadnia (a jövőben beállított lejárati dátummal).

import { AzureCommunicationTokenCredential } from "@azure/communication-common";

function fetchTokenFromMyServerForUser(user: string): Promise<string> {
  // Your custom implementation to fetch a token for the user
  return Promise.resolve("some-unique-token-for-" + user);
}

const tokenCredential = new AzureCommunicationTokenCredential({
  tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
});

Hitelesítő adatok létrehozása proaktív frissítéssel

Az igaz beállítás refreshProactively akkor hívja meg a függvényt tokenRefresher , amikor a jogkivonat közel van a lejárathoz.

import { AzureCommunicationTokenCredential } from "@azure/communication-common";

function fetchTokenFromMyServerForUser(user: string): Promise<string> {
  // Your custom implementation to fetch a token for the user
  return Promise.resolve("some-unique-token-for-" + user);
}

const tokenCredential = new AzureCommunicationTokenCredential({
  tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
  refreshProactively: true,
});

Hitelesítő adatok létrehozása proaktív frissítéssel és kezdeti jogkivonattal

Az átadás initialToken egy opcionális optimalizálás az első hívás tokenRefresherkihagyásához. Ezzel elválaszthatja a rendszerindítást az alkalmazástól a későbbi jogkivonat-frissítési ciklusoktól.

import { AzureCommunicationTokenCredential } from "@azure/communication-common";

function fetchTokenFromMyServerForUser(user: string): Promise<string> {
  // Your custom implementation to fetch a token for the user
  return Promise.resolve("some-unique-token-for-" + user);
}

const tokenCredential = new AzureCommunicationTokenCredential({
  tokenRefresher: async () => fetchTokenFromMyServerForUser("bob@contoso.com"),
  refreshProactively: true,
  token:
    "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
});

Hitelesítő adatok létrehozása egy Entra felhasználói jogkivonat beszerzésére alkalmas jogkivonat-hitelesítő adatokkal

Olyan forgatókönyvek esetén, amikor egy Entra-felhasználó használható a Communication Services, inicializálnia kell a TokenCredential felület bármely implementációját, és meg kell adnia a EntraCommunicationTokenCredentialOptions. Ezzel együtt meg kell adnia a Azure Communication Services erőforrás URI-ját és az Entra felhasználói jogkivonathoz szükséges hatóköröket. Ezek a hatókörök határozzák meg a jogkivonatnak megadott engedélyeket.

Ezt a megközelítést kell használni egy Teams-licenccel rendelkező Entra-felhasználó engedélyezéséhez a Teams telefonbővíthetőségi funkcióinak használatára a Azure Communication Services erőforráson keresztül. Ehhez meg kell adni a hatókört https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls .

import { InteractiveBrowserCredential } from "@azure/identity";
import {
  EntraCommunicationTokenCredentialOptions,
  AzureCommunicationTokenCredential,
} from "@azure/communication-common";

const options = {
  tenantId: "<your-tenant-id>",
  clientId: "<your-client-id>",
  redirectUri: "<your-redirect-uri>",
};
const entraTokenCredential = new InteractiveBrowserCredential(options);

const entraTokenCredentialOptions: EntraCommunicationTokenCredentialOptions = {
  resourceEndpoint: "https://<your-resource>.communication.azure.com",
  tokenCredential: entraTokenCredential,
  scopes: ["https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls"],
};

const credential = new AzureCommunicationTokenCredential(entraTokenCredentialOptions);

Az Entra-felhasználók számára az Azure Communication Services használatára vonatkozó egyéb forgatókönyvek jelenleg csak előzetes verziójú szakaszban vannak, és nem használhatók éles környezetben. Ezeknek a forgatókönyveknek a hatóköre a következő formátumot https://communication.azure.com/clients/<ACS Scope>követi: . Ha nincs megadva adott hatókör, az alapértelmezett hatókör a következőre https://communication.azure.com/clients/.defaultlesz állítva: .

import { InteractiveBrowserCredential } from "@azure/identity";
import {
  EntraCommunicationTokenCredentialOptions,
  AzureCommunicationTokenCredential,
} from "@azure/communication-common";

const options = {
  tenantId: "<your-tenant-id>",
  clientId: "<your-client-id>",
  redirectUri: "<your-redirect-uri>",
};
const entraTokenCredential = new InteractiveBrowserCredential(options);

const entraTokenCredentialOptions: EntraCommunicationTokenCredentialOptions = {
  resourceEndpoint: "https://<your-resource>.communication.azure.com",
  tokenCredential: entraTokenCredential,
  scopes: ["https://communication.azure.com/clients/VoIP"],
};

const credential = new AzureCommunicationTokenCredential(entraTokenCredentialOptions);

Hibaelhárítás

  • Érvénytelen jogkivonat megadva: Győződjön meg arról, hogy a AzureCommunicationTokenCredential konstruktornak vagy a tokenRefresher visszahívásnak átadott jogkivonat csupasz JWT-jogkivonat-sztring. Ha például a Azure Communication Identity kódtárat vagy a REST API-t használja a jogkivonat beszerzéséhez, győződjön meg arról, hogy csak a válaszobjektum részét adja át token .

Fakitermelés

A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL következőre info: . Alternatívaként a naplózás futásidőben is engedélyezhető a setLogLevel hívásával a @azure/logger.

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Következő lépések

Közreműködés

Ha hozzá szeretne járulni ehhez a kódtárhoz, 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.