Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este paquete contiene código común para las bibliotecas de Azure Communication Service.
Cómo empezar
Prerrequisitos
- Una suscripción de Azure.
- Un recurso de Communication Services existente. Si necesita crear el recurso, puede usar el de Azure Portal de, el azure PowerShello la CLI de Azure .
- Tener el @azure/identity paquete instalado.
Instalar
npm install @azure/communication-common
npm install @azure/identity
Compatibilidad con navegadores
Paquete de JavaScript
Para usar esta biblioteca cliente en el explorador, primero debe usar un agrupador. Para obtener más información sobre cómo hacerlo, consulte nuestra documentación de agrupación de .
Conceptos clave
CommunicationTokenCredential y AzureCommunicationTokenCredential
Es CommunicationTokenCredential
una interfaz que se utiliza para autenticar a un usuario con servicios de comunicación, como chat o llamadas.
Ofrece AzureCommunicationTokenCredential
una forma conveniente de crear una credencial implementando dicha interfaz y le permite aprovechar la lógica de actualización automática incorporada.
En función de su escenario, es posible que desee inicializar el AzureCommunicationTokenCredential
archivo con:
- un token estático (adecuado para clientes de corta duración utilizados, por ejemplo, para enviar mensajes de chat únicos) o
- una función de devolución de llamada que garantiza un estado de autenticación continuo durante las comunicaciones (ideal, por ejemplo, para sesiones de llamadas largas).
- una credencial de token capaz de obtener un token de usuario de Entra. Puede proporcionar cualquier implementación de la interfaz TokenCredential. Es adecuado para escenarios en los que se necesitan tokens de acceso de usuario de Entra para autenticarse con Communication Services.
Los tokens proporcionados a través AzureCommunicationTokenCredential
del constructor o a través de la devolución de llamada del actualizador de tokens se pueden obtener mediante la biblioteca de Azure Communication Identity.
Ejemplos
Creación de una credencial con un token estático
Para los clientes de corta duración, no es necesario actualizar el token al vencimiento y AzureCommunicationTokenCredential
se puede crear una instancia con un token estático.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
const tokenCredential = new AzureCommunicationTokenCredential(
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjM2MDB9.adM-ddBZZlQ1WlN3pdPBOF5G4Wh9iZpxNP_fSvpF4cWs",
);
Creación de una credencial con una devolución de llamada
Aquí suponemos que tenemos una función fetchTokenFromMyServerForUser
que realiza una solicitud de red para recuperar una cadena de token JWT para un usuario. Lo pasamos a la credencial para obtener un token para Bob desde nuestro propio servidor. Nuestro servidor usaría la biblioteca de identidad de comunicación de Azure para emitir tokens. Es necesario que la fetchTokenFromMyServerForUser
función devuelva un token válido (con una fecha de caducidad establecida en el futuro) en todo momento.
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"),
});
Creación de una credencial con actualización proactiva
Si se establece refreshProactively
en true, se llamará a la tokenRefresher
función cuando el token esté a punto de caducar.
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,
});
Creación de una credencial con actualización proactiva y un token inicial
Pasar initialToken
es una optimización opcional para omitir la primera llamada a tokenRefresher
. Puede usar esto para separar el arranque de la aplicación de los ciclos de actualización de tokens posteriores.
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",
});
Cree una credencial con una credencial de token capaz de obtener un token de usuario de Entra
En escenarios en los que se puede usar un usuario de Entra con Communication Services, debe inicializar cualquier implementación de la interfaz TokenCredential y proporcionarla EntraCommunicationTokenCredentialOptions
al archivo .
Junto con esto, debe proporcionar el URI del recurso de Azure Communication Services y los ámbitos necesarios para el token de usuario de Entra. Estos ámbitos determinan los permisos concedidos al token.
Este enfoque debe usarse para autorizar a un usuario de Entra con una licencia de Teams a usar las características de extensibilidad del teléfono de Teams a través del recurso de Azure Communication Services.
Para ello, es necesario proporcionar el https://auth.msft.communication.azure.com/TeamsExtension.ManageCalls
alcance.
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);
Otros escenarios para que los usuarios de Entra usen Azure Communication Services solo se encuentran actualmente en la fase de versión preliminar y no se deben usar en producción.
Los ámbitos de estos escenarios siguen el formato https://communication.azure.com/clients/<ACS Scope>
. Si no se proporcionan ámbitos específicos, los ámbitos predeterminados se establecerán en https://communication.azure.com/clients/.default
.
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);
Solución de problemas
-
Token no válido especificado: asegúrese de que el token que está pasando al
AzureCommunicationTokenCredential
constructor o a la devolución detokenRefresher
llamada es una cadena de token JWT desnuda. Por ejemplo, si usa la biblioteca de Azure Communication Identity o la API de REST para obtener el token, asegúrese de pasar solo latoken
parte del objeto de respuesta.
Registro
Habilitar el registro puede ayudar a descubrir información útil sobre errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL
en info
. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel
en el @azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Pasos siguientes
Contribución
Si desea contribuir a esta biblioteca, lea la guía de contribución de para obtener más información sobre cómo compilar y probar el código.
Proyectos relacionados
Azure SDK for JavaScript