Azure-functie integreren
Inleiding
Deze zelfstudie bevat gedetailleerde richtlijnen voor het instellen van een Azure-functie voor het ontvangen van gebruikersgerelateerde informatie. Het instellen van een Azure-functie wordt ten zeerste aanbevolen. Het helpt bij het voorkomen van hardcodering van toepassingsparameters in de Contoso-app (zoals gebruikers-id en gebruikerstoken). Deze informatie is zeer vertrouwelijk. Belangrijker is dat we gebruikerstokens periodiek vernieuwen op de back-end. Als u de combinatie van de gebruikers-id en het token hard codeert, moet u de waarde na elke vernieuwing bewerken.
Vereisten
Voordat u aan de slag gaat, moet u het volgende doen:
- Maak een Azure-account met een actief abonnement. Zie Gratis een account maken voor meer informatie.
- Installeer Visual Studio Code.
Functies instellen
- Installeer de Azure Function-extensie in Visual Studio Code. U kunt deze installeren vanuit de browser van de invoegtoepassing van Visual Studio Code of door deze koppeling te volgen
- Stel een lokale Azure Function-app in door deze koppeling te volgen. We moeten een lokale functie maken met behulp van de HTTP-triggersjabloon in JavaScript.
- Installeer Azure Communication Services-bibliotheken. We gebruiken de identiteitsbibliotheek om tokens voor gebruikerstoegang te genereren. Voer de npm-installatieopdracht uit in de map van uw lokale Azure Function-app om de Azure Communication Services Identity SDK voor JavaScript te installeren.
npm install @azure/communication-identity --save
- Wijzig het
index.js
bestand zodat het eruitziet als de onderstaande code:
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
}
};
}
Uitleg bij code hierboven: De eerste regel importeert de interface voor de CommunicationIdentityClient
. De verbindingsreeks in de tweede regel vindt u in uw Azure Communication Services-resource in Azure Portal. Dit ACSEndpoint
is de URL van de Azure Communication Services-resource die is gemaakt.
- Open de lokale map Azure Function in Visual Studio Code. Open de
index.js
lokale Azure-functie en voer deze uit. Er wordt een lokaal Azure Function-eindpunt gemaakt en afgedrukt in de terminal. Het afgedrukte bericht ziet er ongeveer als volgt uit:
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1
Open de koppeling in een browser. Het resultaat is vergelijkbaar met dit voorbeeld:
{
"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"
}
Implementeer de lokale functie in de cloud. Meer informatie vindt u in deze documentatie.
Test de geïmplementeerde Azure-functie. Zoek eerst uw Azure-functie in Azure Portal. Gebruik vervolgens de knop Functie-URL ophalen om het Azure Function-eindpunt op te halen. Het resultaat dat u ziet, moet vergelijkbaar zijn met wat in stap 5 is weergegeven. Het Azure Function-eindpunt wordt gebruikt in de app voor het initialiseren van toepassingsparameters.
Implementeer
UserTokenClient
, dat wordt gebruikt om de Azure Function-doelresource aan te roepen en het Azure Communication Services-eindpunt, de gebruikers-id en het gebruikerstoken te verkrijgen van het geretourneerde JSON-object. Raadpleeg de voorbeeld-app voor gebruik.
Guide voor probleemoplossing
- Als de Azure Function-extensie de lokale functie niet kan implementeren in de Azure-cloud, is dit waarschijnlijk het gevolg van de versie van Visual Studio Code en de Azure Function-extensie die wordt gebruikt met een bug. Deze versiecombinatie is getest om te werken: Visual Studio Code-versie
1.68.1
en Versie van Azure Function-extensie1.2.1
. - De plaats om toepassingsconstanten te initialiseren is lastig maar belangrijk. Controleer de snelstartgids voor Android voor chat. De markeringsnotitie in de sectie Toepassingsconstanten instellen en vergelijken met de voorbeeld-app van de versie die u gebruikt.
(Optioneel) het Azure Function-eindpunt beveiligen
Voor demonstratiedoeleinden gebruikt dit voorbeeld standaard een openbaar toegankelijk eindpunt om een Azure Communication Services-token op te halen. Voor productiescenario's kunt u uw eigen beveiligde eindpunt gebruiken om uw eigen tokens in te richten.
Met extra configuratie biedt dit voorbeeld ondersteuning voor het maken van verbinding met een met Microsoft Entra beveiligd eindpunt, zodat gebruikerslogboek vereist is voor de app om een Azure Communication Services-token op te halen. De gebruiker moet zich aanmelden met een Microsoft-account om toegang te krijgen tot de app. Met deze instelling wordt het beveiligingsniveau verhoogd terwijl gebruikers zich moeten aanmelden. Bepaal of u deze wilt inschakelen op basis van de use cases.
Houd er rekening mee dat microsoft Entra-id momenteel niet wordt ondersteund in voorbeeldcode. Volg de onderstaande koppelingen om deze in te schakelen in uw app en Azure Function:
Registreer uw app onder Microsoft Entra ID (met android-platforminstellingen).