Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym ćwiczeniu dowiesz się, jak dynamicznie pobierać tożsamość użytkownika i wartości tokenów z usług Azure Communication Services przy użyciu usługi Azure Functions. Po pobraniu wartości zostaną przekazane do modułowego interfejsu użytkownika usługi ACS, aby umożliwić wykonanie połączenia przez klienta.
Otwórz local.settings.json i zaktualizuj
ACS_CONNECTION_STRING
wartość przy użyciu parametrów połączenia ACS zapisanych we wcześniejszym ćwiczeniu.Otwórz Startup.cs w programie Visual Studio i zapoznaj się z drugim
AddSingleton()
wywołaniemConfigureServices()
metody .var host = new HostBuilder() .ConfigureFunctionsWebApplication() .ConfigureServices(services => { ... services.AddSingleton(static p => { var config = p.GetRequiredService<IConfiguration>(); var connectionString = config.GetValue<string>("ACS_CONNECTION_STRING"); return new CommunicationIdentityClient(connectionString); }); ... }) .Build(); }
Wywołanie
AddSingleton()
tworzyCommunicationIdentityClient
obiekt przy użyciuACS_CONNECTION_STRING
wartości z local.settings.json.Otwórz ACSTokenFunction.cs i znajdź definicje konstruktora i pola.
Zdefiniowane jest pole o nazwie
Scopes
, które zawieraCommunicationTokenScope.VoIP
zakres. Ten zakres służy do tworzenia tokenu dostępu dla wideorozmowy.private static readonly CommunicationTokenScope[] Scopes = [ CommunicationTokenScope.VoIP, ];
Pojedyncze wystąpienie
CommunicationIdentityClient
, utworzone w Startup.cs, jest wstrzykiwane do konstruktora i przypisywane do pola_tokenClient
.private readonly CommunicationIdentityClient _tokenClient; public ACSTokenFunction(CommunicationIdentityClient tokenClient) { _tokenClient = tokenClient; }
Zapoznaj się z
Run()
metodą w ACSTokenFunction.cs:[Function("HttpTriggerAcsToken")] public async Task<HttpResponseData> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequestData req, ILogger log) { var user = await _tokenClient.CreateUserAsync(); var userToken = await _tokenClient.GetTokenAsync(user, Scopes); var response = req.CreateResponse(HttpStatusCode.OK); await response.WriteAsJsonAsync( new { userId = user.Value.Id, userToken.Value.Token, userToken.Value.ExpiresOn } ); return response; }
- Definiuje funkcję o nazwie
HttpTriggerAcsToken
, którą można wywołać za pomocą żądania HTTP GET. - Nowy użytkownik usługi ACS jest tworzony przez wywołanie
_tokenClient.CreateUserAsync()
metody . - Token dostępu używany do wywołań wideo jest tworzony przez wywołanie
_tokenClient. GetTokenAsync()
metody . - Identyfikator użytkownika i token są zwracane z funkcji jako obiekt JSON.
- Definiuje funkcję o nazwie
Uruchom program, naciskając F5 w programie Visual Studio lub wybierając pozycję Debuguj —> Rozpocznij debugowanie z menu. To spowoduje uruchomienie projektu usługi Azure Functions i udostępnienie do wywołania
ACSTokenFunction
.Uwaga / Notatka
Jeśli używasz programu VS Code, możesz otworzyć okno terminalu w folderze GraphACSFunctions i uruchomić polecenie
func start
. Przyjęto założenie, że na maszynie zainstalowano narzędzia Azure Functions Core Tools .Teraz, gdy usługa Azure Functions działa lokalnie, klient musi mieć możliwość wywołania ich w celu uzyskania tożsamości użytkownika i wartości tokenu usługi ACS.
Otwórz plik samples/acs-to-teams-meeting/client/react/App.tsx w edytorze.
Zlokalizuj zmienne stanu
userId
itoken
w komponencie. Usuń zakodowane na stałe wartości i zastąp je pustymi cudzysłowami:const [userId, setUserId] = useState<string>(''); const [token, setToken] = useState<string>('');
useEffect
Znajdź funkcję i zmień ją tak, aby wyglądała następująco, aby umożliwić wywoływanie funkcji platformy Azure w celu pobrania tożsamości użytkownika i tokenu usługi ACS:useEffect(() => { const init = async () => { setMessage('Getting ACS user'); //Call Azure Function to get the ACS user identity and token let res = await fetch(process.env.REACT_APP_ACS_USER_FUNCTION as string); let user = await res.json(); setUserId(user.userId); setToken(user.token); setMessage('Getting Teams meeting link...'); //Call Azure Function to get the meeting link res = await fetch(process.env.REACT_APP_TEAMS_MEETING_FUNCTION as string); let link = await res.text(); setTeamsMeetingLink(link); setMessage(''); console.log('Teams meeting link', link); } init(); }, []);
Zapisz plik przed kontynuowaniem.
Otwórz okno terminalu i uruchom polecenie
npm start
w folderzereact
. Po utworzeniu i załadowaniu powinien zostać wyświetlony interfejs użytkownika wywołujący usługę ACS. Możesz wywołać spotkanie usługi Teams, które zostało dynamicznie utworzone przez program Microsoft Graph.Zatrzymaj aplikację React, naciskając Ctrl + C w oknie terminalu.
Zatrzymaj projekt usługi Azure Functions.
Zatwierdź zmiany git i wypchnij je do repozytorium GitHub przy użyciu programu Visual Studio Code:
- Wybierz ikonę Kontrola źródła (trzeci w dół na pasku narzędzi programu Visual Studio Code).
- Wprowadź komunikat zatwierdzenia i wybierz pozycję Zatwierdź.
- Wybierz pozycję Synchronizuj zmiany.