Compartir vía


Compatibilidad de Azure Communication Services con identidades de Teams: casos de uso

Microsoft Teams proporciona identidades administradas por Microsoft Entra ID y experiencias de llamada controladas por el centro de administración de Teams y mediante directivas. Es posible que los usuarios tengan licencias asignadas para habilitar las llamadas telefónicas y las funcionalidades de llamada avanzadas del teléfono de Microsoft Teams. La compatibilidad de Azure Communication Services con identidades de Teams permite administrar llamadas de voz de Teams sobre IP (VoIP), llamadas telefónicas de Teams y unirse a reuniones de Teams. Los desarrolladores pueden ampliar Azure Communication Services con Graph API para proporcionar datos contextuales del ecosistema de Microsoft 365. Esta página proporciona inspiración sobre cómo usar las tecnologías de Microsoft existentes para proporcionar una experiencia completa en escenarios de llamadas con usuarios de Teams y los SDK de llamada de Azure Communication Services.

Caso de uso 1: Realización de una llamada RTC de Teams saliente

En este escenario se muestra un caso de uso multiinquilino, donde la empresa Contoso proporciona SaaS a la empresa Fabrikam. SaaS permite que los usuarios de Fabrikam hagan llamadas telefónicas de Teams través de un sitio web personalizado que toma la identidad del usuario de Teams y la configuración de la conectividad RTC asignada a ese usuario de Teams.

Diagrama que muestra la experiencia de usuario de Alice al hacer una llamada telefónica de Teams al cliente Megan.

En el diagrama de secuencia siguiente se muestran los pasos detallados de inicio de una llamada telefónica de Teams:

El diagrama de secuencias describe el conjunto de pasos detallados que se produce para iniciar una llamada telefónica de Teams mediante Azure Communication Services y Teams.

Pasos

  1. Autenticar a Alice de Fabrikam en la aplicación cliente de Contoso: Alice usa un explorador para abrir la página web de Fabrikam y se autentica. Puede encontrar más detalles sobre la autenticación con una identidad de Teams. Si la autenticación se realiza correctamente, se redirige a Alice a la página inicial.
  2. Cargar clientes y sus números RTC: Contoso proporciona lógica personalizada para recuperar la lista de clientes y sus números de teléfono asociados. Esta lista se representa en la página inicial para Alice.
  3. Iniciar una llamada a Megan: Alice selecciona un botón para iniciar una llamada RTC a Megan en la aplicación cliente de Contoso. La aplicación cliente usa el SDK de llamada de Azure Communication Services para proporcionar la funcionalidad de llamada. Primero, crea una instancia de callAgent, que contiene el token de acceso de Azure Communication Services adquirido durante el primer paso.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Luego, debe iniciar una llamada al número de teléfono de Megan.

const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
  1. Conectar la llamada RTC a Megan: la llamada se enruta mediante la conectividad telefónica de Teams asignada a Alice, llega a la red RTC y suena en el teléfono asociado al número de teléfono proporcionado. Megan ve una llamada entrante desde el número de teléfono asociado al usuario de Teams de Alice.
  2. Megan acepta la llamada: Megan acepta la llamada y se establece la conexión entre Alice y Megan.

Caso de uso 2: Recepción de llamadas telefónicas de Teams entrantes

En este escenario se muestra un caso de uso multiinquilino, donde la empresa Contoso proporciona SaaS a la empresa Fabrikam. SaaS permite a los usuarios de Fabrikam recibir una llamada telefónica de Teams a través de un sitio web personalizado que toma la identidad del usuario de Teams y la configuración de la conectividad RTC asignada a ese usuario de Teams.

Diagrama que muestra la experiencia de usuario de Alice al recibir una llamada telefónica de Teams del cliente Megan.

En el diagrama de secuencia siguiente se muestran los pasos detallados para aceptar llamadas telefónicas de Teams entrantes:

Diagrama de secuencias que describe el conjunto detallado de pasos que se produce para recibir una llamada telefónica de Teams mediante Azure Communication Services y Teams.

Pasos

  1. Autenticar a Alice de Fabrikam en la aplicación cliente de Contoso: Alice usa un explorador para abrir la página web de Fabrikam y se autentica. Puede encontrar más detalles sobre la autenticación con una identidad de Teams. Si la autenticación se realiza correctamente, se redirige a Alice a la página inicial.
  2. Suscribirse para recibir llamadas: la aplicación cliente usa el SDK de llamada de Azure Communication Services para proporcionar la funcionalidad de llamada. Primero, crea una instancia de callAgent, que contiene el token de acceso de Azure Communication Services adquirido durante el primer paso.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

A continuación, se suscribe al evento de llamada entrante.

const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
    
    const incomingCall = args.teamsIncomingCall;
    
    // Get information about caller
    var callerInfo = incomingCall.callerInfo
    
    showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);

El método showIncomingCall es un método personalizado de Contoso que representará una interfaz de usuario para indicar las llamadas entrantes y dos botones para aceptar y rechazar la llamada. Si selecciona el botón "aceptar", se usa el código siguiente:

// Accept the call
var call = await incomingCall.accept();

Si selecciona el botón "rechazar", se usa el código siguiente:

// Reject the call
incomingCall.reject();
  1. Megan inicia una llamada al número RTC asignado al usuario de Teams Alice: Megan usa su teléfono para llamar a Alice. La red del operador se conectará a la conectividad telefónica de Teams asignada a Alice y sonarán todos los puntos de conexión de Teams registrados para Alice. Incluye: clientes móviles, web y de escritorio de Teams y aplicaciones basadas en el SDK de llamada de Azure Communication Services.
  2. La aplicación cliente de Contoso muestra la llamada entrante de Megan: la aplicación cliente recibe una notificación de llamada entrante. El método showIncomingCall usaría la lógica personalizada de Contoso para traducir el número de teléfono al nombre del cliente (por ejemplo, una base de datos que almacena pares clave-valor que consta de un número de teléfono y un nombre de cliente). Cuando se recupera la información, la notificación se muestra a Alice en la aplicación cliente de Contoso.
  3. Alice acepta la llamada: Alice selecciona un botón para aceptar la llamada y se establece la conexión entre Alice y Megan.

Caso de uso 3: Realización de una llamada VoIP de Teams saliente

En este escenario se muestra un caso de uso multiinquilino, donde la empresa Contoso proporciona SaaS a la empresa Fabrikam. SaaS permite a los usuarios de Fabrikam realizar llamadas VoIP de Teams a través de un sitio web personalizado que toma la identidad del usuario de Teams.

Diagrama que muestra la experiencia de usuario de Alice al realizar una llamada de voz sobre IP de Teams a su colega Megan.

En el diagrama de secuencia siguiente se muestran los pasos detallados para iniciar una llamada VoIP de Teams:

Diagrama de secuencias que describe el conjunto de pasos detallados que se produce para iniciar una llamada de voz sobre IP de Teams mediante Azure Communication Services y Teams.

Pasos

  1. Autenticar a Alice de Fabrikam en la aplicación cliente de Contoso: Alice usa un explorador para abrir la página web de Fabrikam y se autentica. Puede encontrar más detalles sobre la autenticación con una identidad de Teams. Si la autenticación se realiza correctamente, se redirige a Alice a la página inicial.
  2. Cargar los usuarios de la organización de Fabrikam y sus identificadores: la aplicación cliente de Contoso usa Graph API para obtener una lista de usuarios del inquilino de Fabrikam. Para realizar esta acción, Alice o su administrador deben dar su consentimiento a Graph API. Puede encontrar más información sobre el comando Graph API en la documentación.
GET https://graph.microsoft.com/v1.0/users
Permissions: User.ReadBasic.All (delegated)
Response: response.body.value[1].displayName; // ”Megan Bowen”
	  response.body.value[1].id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"

La aplicación cliente de Contoso mostrará entonces la lista de usuarios y la posibilidad de iniciar una llamada a un usuario determinado.

  1. Iniciar una llamada a Megan: Alice selecciona un botón para iniciar una llamada VoIP de Teams a Megan en la aplicación cliente de Contoso. La aplicación cliente usa el SDK de llamada de Azure Communication Services para proporcionar la funcionalidad de llamada. Las llamadas de los clientes de Teams están asociadas al chat de Teams. En primer lugar, la aplicación solicita la creación de un chat dedicado para la llamada VoIP.
POST https://graph.microsoft.com/v1.0/chats
Body:
{
    "chatType": "oneOnOne",
    "members": [
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "roles": [
                "owner"
            ],
            "user@odata.bind": "https://graph.microsoft.com/v1.0/users('8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca')"
        },
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "roles": [
                "owner"
            ],
            "user@odata.bind": "https://graph.microsoft.com/v1.0/users('e8b753b5-4117-464e-9a08-713e1ff266b3')"
        }
    ]
}
Permissions: Chat.Create (delegated)
Response: response.body.value.id; // "19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces"

A continuación, la aplicación cliente crea una instancia de callAgent que contiene el token de acceso de Azure Communication Services adquirido durante el primer paso.

const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Seguidamente, inicia una llamada al identificador de Teams de Megan.

var teamsUser = { microsoftTeamsUserId: 'e8b753b5-4117-464e-9a08-713e1ff266b3'};
const oneToOneCall = callAgent.startCall([teamsUser], { threadId: '19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces' });
  1. Conectar la llamada VoIP a Megan: la llamada se enruta a través de Teams y suena en los clientes de Teams asociados con Megan. Megan ve una llamada entrante de Alice con el nombre definido en Microsoft Entra ID.
  2. Megan acepta la llamada: Megan acepta la llamada y se establece la conexión entre Alice y Megan.

Caso de uso 4: Recepción de llamadas VoIP de Teams entrantes

En este escenario se muestra un caso de uso multiinquilino, donde la empresa Contoso proporciona SaaS a la empresa Fabrikam. SaaS permite a los usuarios de Fabrikam recibir una llamada VoIP de Teams a través de un sitio web personalizado que toma la identidad del usuario de Teams y aplica las directivas de enrutamiento aplicadas al usuario de Teams.

Diagrama que muestra la experiencia de usuario de Alice al recibir una llamada de voz sobre IP de Teams del cliente Megan.

En el diagrama de secuencia siguiente se muestran los pasos detallados para aceptar las llamadas VoIP de Teams entrantes:

Diagrama de secuencias que describe el conjunto detallado de pasos que se produce para recibir una llamada de voz sobre IP de Teams mediante Azure Communication Services, Graph API y Teams.

Pasos

  1. Autenticar a Alice de Fabrikam en la aplicación cliente de Contoso: Alice usa un explorador para abrir la página web de Fabrikam y se autentica. Puede encontrar más detalles sobre la autenticación con una identidad de Teams. Si la autenticación se realiza correctamente, se redirige a Alice a la página inicial.
  2. Suscribirse para recibir llamadas: la aplicación cliente usa el SDK de llamada de Azure Communication Services para proporcionar la funcionalidad de llamada. Primero, crea una instancia de callAgent que contiene el token de acceso de Azure Communication Services adquirido durante el primer paso.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

A continuación, la aplicación se suscribe al evento de llamada entrante.

const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
    
    const incomingCall = args.teamsIncomingCall;
    
    // Get information about caller
    var callerInfo = incomingCall.callerInfo
    
    showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);

El método showIncomingCall es un método personalizado de Contoso que representará una interfaz de usuario para indicar las llamadas entrantes y dos botones para aceptar y rechazar la llamada. Si selecciona el botón "aceptar", se usa el código siguiente:

// Accept the call
var call = await incomingCall.accept();

Si selecciona el botón "rechazar", se usa el código siguiente:

// Reject the call
incomingCall.reject();
  1. Megan inicia una llamada VoIP al usuario de Teams Alice: Megan usa su cliente de escritorio de Teams para llamar a Alice. La infraestructura de Teams llamará a todos los puntos de conexión asociados con Alice. Incluye: clientes móviles, web y de escritorio de Teams y aplicaciones basadas en el SDK de llamada de Azure Communication Services.
  2. La aplicación cliente de Contoso muestra la llamada entrante de Megan: la aplicación cliente recibe una notificación de llamada entrante. El método showIncomingCall usaría Graph API para traducir el identificador de usuarios de Teams de usuario al nombre para mostrar.
GET https://graph.microsoft.com/v1.0/users/e8b753b5-4117-464e-9a08-713e1ff266b3
Permissions: User.Read (delegated)
Response: response.body.value.displayName; // ”Megan Bowen”
	  response.body.value.id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"

Cuando se recupera la información, la notificación se muestra a Alice en la aplicación cliente de Contoso.

  1. Alice acepta la llamada: Alice selecciona un botón para aceptar la llamada y se establece la conexión entre Alice y Megan.

Caso de uso 5: Unirse a una reunión de Teams

En este escenario se muestra un caso de uso multiinquilino, donde la empresa Contoso proporciona SaaS a la empresa Fabrikam. SaaS permite a los usuarios de Fabrikam unirse a reuniones de Teams a través de un sitio web personalizado que toma la identidad del usuario de Teams.

Diagrama que muestra la experiencia de usuario de Alice al unirse a la reunión de Teams.

En el diagrama de secuencia siguiente se muestran los pasos detallados para unirse a una reunión de Teams:

Diagrama de secuencias que describe el conjunto de pasos detallados que se produce al unirse a una reunión de Teams mediante Azure Communication Services, Graph API y Teams.

Pasos

  1. Autenticar a Alice de Fabrikam en la aplicación cliente de Contoso: Alice usa un explorador para abrir la página web de Fabrikam y se autentica. Puede encontrar más detalles sobre la autenticación con una identidad de Teams. Si la autenticación se realiza correctamente, se redirige a Alice a la página inicial.
  2. Cargar las reuniones de Teams y sus identificadores: la aplicación cliente de Contoso usa Graph API para obtener una lista de reuniones de Teams para usuarios de Fabrikam. Para realizar esta acción, Alice o su administrador deben dar su consentimiento a Graph API. Puede encontrar más información sobre el comando Graph API en la documentación.
GET https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
Permissions: Calendars.Read (delegated)
Response: response.body.value[0].subject; // ”Project Tailspin”
	  response.body.value[0].onlineMeeting.joinUrl; // "https://teams.microsoft.com/l/meetup-join/..."
	  response.body.value[0].start.dateTime;
	  response.body.value[0].end.dateTime;
	  response.body.value[0].location.displayName;

La aplicación cliente de Contoso mostrará entonces la lista de reuniones de Teams y la posibilidad de unirse a ellas.

  1. Unirse a la reunión de Teams "Project Tailspin": Alice selecciona un botón para unirse a la reunión de Teams "Project Tailspin" en la aplicación cliente de Contoso. La aplicación cliente usa el SDK de llamada de Azure Communication Services para proporcionar la funcionalidad de llamada. Las aplicaciones cliente crean una instancia de callAgent que contiene el token de acceso de Azure Communication Services adquirido durante el primer paso.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

A continuación, la aplicación se une a una reunión a través del objeto joinUrl recibido.

var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());

Alice se une entonces a la reunión de Teams.

  1. Otros participantes que se unen a la reunión de Teams: la experiencia proporcionada es una reunión de Teams estándar. En función de la configuración y las invitaciones, se puede unir a la reunión de Teams un usuario de Teams, un usuario anónimo de Teams mediante el cliente web de Teams, un cliente de escritorio de Teams, un cliente móvil de Teams, un usuario de Azure Communication Services través de aplicaciones basadas en el SDK de llamada de Communication Services o usuarios con teléfonos.

Pasos siguientes

Los siguientes artículos pueden ser de su interés: