Compartir vía


Integración de Azure Functions

Introducción

En este tutorial se proporcionan instrucciones detalladas sobre cómo configurar Azure Functions para recibir información relacionada con el usuario. Se recomienda encarecidamente configurar Azure Functions. Ayuda a evitar la codificación de forma rígida de parámetros de aplicación en la aplicación Contoso (como el identificador de usuario y el token de usuario). Esta información es altamente confidencial. Lo más importante es actualizar los tokens de usuario periódicamente en el back-end. La codificación de forma rígida del identificador de usuario y la combinación de tokens requiere editar el valor después de cada actualización.

Requisitos previos

Antes de comenzar, compruebe lo siguiente:

Configuración de funciones

  1. Instale la extensión de Azure Functions en Visual Studio Code. Puede instalarlo desde el explorador de complementos de Visual Studio Code o siguiendo este vínculo
  2. Configure una aplicación de Azure Functions local siguiendo este vínculo. Es necesario crear una función local mediante la plantilla de desencadenador HTTP en JavaScript.
  3. Instalación de las bibliotecas de Azure Communication Services. Usaremos la biblioteca de identidades para generar tokens de acceso de usuario. Ejecute el comando npm install en el directorio de la aplicación de funciones de Azure local para instalar el SDK de identidad de Azure Communication Services para JavaScript.
    npm install @azure/communication-identity --save
  1. Modifique el archivo index.js para que quede como el código siguiente:
    const { CommunicationIdentityClient } = require('@azure/communication-identity');
    const connectionString = '<your_connection_string>'
    const acsEndpoint = "<your_ACS_endpoint>"
    
    module.exports = async function (context, req) {
        let tokenClient = new CommunicationIdentityClient(connectionString);
    
        const userIDHolder = await tokenClient.createUser();
        const userId = userIDHolder.communicationUserId
    
        const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
    
        context.res = {
            body: {
                acsEndpoint,
                userId,
                userToken
            }
        };
    }

Explicación del código anterior: la primera línea importa la interfaz para CommunicationIdentityClient. La cadena de conexión de la segunda línea se encuentra en su recurso Azure Communication Services en el portal Azure. ACSEndpoint es la dirección URL del recurso de Azure Communication Services que se creó.

  1. Abra la carpeta local de Azure Functions en Visual Studio Code. Abra index.js y ejecute la instancia local de Azure Functions. Se creará e imprimirá un punto de conexión local de Azure Functions en el terminal. El mensaje impreso tiene un aspecto similar al siguiente:
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1

Abra el vínculo en un explorador. El resultado será similar al siguiente ejemplo:

    {
      "acsEndpoint": "<Azure Function endpoint>",
      "userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
      "userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
    }
  1. Implementación de la función local en la nube. Se puede encontrar más información en esta documentación.

  2. Pruebe la instancia de Azure Functions implementada. En primer lugar, localice la instancia de Azure Functions en Azure Portal. A continuación, use el botón "Obtener dirección URL de la función" para obtener el punto de conexión de Azure Functions. El resultado que verá debe ser similar al que se mostró en el paso 5. El punto de conexión de Azure Functions se usará en la aplicación para inicializar los parámetros de la aplicación.

  3. Implementar UserTokenClient, que se utiliza para llamar al recurso Azure Function de destino y obtener el punto de conexión de Azure Communication Services, el Id. de usuario y el token de usuario del objeto JSON devuelto. Consulte la aplicación de ejemplo para conocer el uso.

Guía de solución de problemas

  1. Si la extensión de Azure Functions no pudo implementar la función local en la nube de Azure, es probable que se deba a la versión de Visual Studio Code y a que la extensión de Azure Functions que se está usando contiene un error. Se ha demostrado que esta combinación de versiones funciona: versión 1.68.1 de Visual Studio Code y versión 1.2.1 de la extensión de Azure Functions.
  2. El lugar para inicializar constantes de aplicación es complicado, pero importante. Vuelva a comprobar el inicio rápido de Android de chat. Más concretamente, la nota destacada de la sección "Configurar constantes de aplicación" y compárela con la aplicación de ejemplo de la versión que está consumiendo.

(Opcional) proteja el punto de conexión de Azure Functions

Con fines de demostración, este ejemplo usa un punto de conexión de acceso público de forma predeterminada para capturar un token de Azure Communication Services. En escenarios de producción, una opción es usar un punto de conexión propio protegido para aprovisionar los tokens.

Mediante configuración adicional, este ejemplo permite conectarse a un punto de conexión protegido de Microsoft Entra de manera que se solicite el inicio de sesión de usuario para que la aplicación capture un token de Azure Communication Services. Se pedirá al usuario que inicie sesión con la cuenta de Microsoft para acceder a la aplicación. Esta configuración aumenta el nivel de seguridad mientras los usuarios necesitan iniciar sesión. Decida si habilitarlo en función de los casos de uso.

Tenga en cuenta que actualmente no se admite Microsoft Entra ID en el código de ejemplo. Siga los vínculos siguientes para habilitarlo en la aplicación y en Azure Functions:

Registro de la aplicación en Microsoft Entra ID (con la configuración de la plataforma Android).

Configure la aplicación de App Service o Azure Functions para usar el registro de Microsoft Entra ID.