Ćwiczenie — dodawanie kodu połączeń głosowych
W tej lekcji dodamy więcej kodu do aplikacji internetowej utworzonej w poprzedniej lekcji. Ta aplikacja umożliwi nam wykonywanie połączeń głosowych za pomocą usług Azure Communication Services.
Dodawanie wejściowych elementów HTML
Aby wykonać połączenie, potrzebujemy dwóch ważnych informacji:
- Token dostępu użytkownika usług Azure Communication Services dla użytkownika wykonującego wywołanie. Ten token identyfikuje i autoryzuje użytkownika do kontaktowania się z usługą i inicjowania połączeń głosowych.
- KtoTo użytkownik chce wywołać identyfikator użytkownika usług Azure Communication Services.
Aby uzyskać te informacje od użytkownika, użyjemy standardowych danych wejściowych formularza HTML. Dodajmy je do naszego index.html
pliku:
Otwórz plik
index.html
w edytorze tekstówDodaj następujący kod HTML do treści pliku HTML w komentarzu
Calling HTML here
:<input id="token-input" type="text" placeholder="Your User access token" /> <button id="token-submit" type="button"> Submit </button> <br /><br /> <input id="callee-id-input" type="text" placeholder="Who would you like to call?" style="margin-bottom:1em; width: 200px; display: block;" />
Pierwszym elementem wejściowym będzie token użytkownika wykonującego wywołanie. Przycisk przesyłania będzie używany do tworzenia wystąpień niektórych obiektów usług Azure Communication Services po podaniu tokenu. Drugie dane wejściowe będą dotyczyć wprowadzania identyfikatora użytkownika osoby, którą chcemy wywołać.
Dodawanie przycisków akcji wywołania podstawowego
Potrzebujemy również przycisków dla niektórych podstawowych akcji wywołania, które umożliwiają użytkownikowi sterowanie wywołaniem:
- Rozpocznij połączenie
- Rozłącz się
Dodajmy również te przyciski pod danymi wejściowymi z poprzedniego kroku:
<button id="call-button" type="button" disabled="true">
Start Call
</button>
<button id="hang-up-button" type="button" disabled="true">
Hang Up
</button>
Testowanie kodu HTML
Po wprowadzeniu kodu HTML wykonaliśmy większość kodu HTML dla tej aplikacji. Jeśli uruchomisz aplikację przy użyciu tego samego polecenia co w poprzedniej lekcji: npx parcel index.html
a następnie otworzysz aplikację, w przeglądarce powinna zostać wyświetlona następująca aplikacja:
Ta aplikacja może nie wyglądać jak wiele, ale to wszystko, czego potrzebujemy, aby utworzyć aplikację do wywoływania głosowego. Teraz skończyliśmy z kodem HTML naszej aplikacji. Pozostała część kodu będzie używać języka JavaScript.
Importowanie niektórych zależności
Pierwszym krokiem w naszym app.js
pliku jest zaimportowanie zależności do wykonywania wywołań usług Azure Communication Services. Te zależności pochodzą z zestawów SDK zainstalowanych wcześniej z użyciem narzędzia NPM. Aby je zaimportować, dodaj następujące wiersze do app.js
pliku:
import { CallClient } from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';
Pierwszy import to CallClient
element , który będzie używany później do faktycznego nawiązywania połączeń. Obsługuje mikrofony, dźwięk itp. dla Ciebie. Drugi import AzureCommunicationTokenCredential
służy do obsługi wymagań dotyczących uwierzytelniania dla usług Azure Communication Services. Uwierzytelnianie gwarantuje, że wiemy, kto jest użytkownikiem podczas umieszczenia wywołania.
Pobieranie odwołań do naszego kodu HTML
Wcześniej utworzyliśmy elementy HTML, których użytkownicy będą używać do kontrolowania aplikacji. Aby nasłuchiwać użytkownika korzystającego z nich, musimy uzyskać odwołania do nich w języku JavaScript.
Ponadto potrzebujemy kilku zmiennych do przechowywania niektórych elementów, które są używane w całym kodzie. Dodaj następujący kod, aby app.js
pod importem.
const userToken = document.getElementById("token-input");
const submitToken = document.getElementById("token-submit");
const calleeInput = document.getElementById("callee-id-input");
const callButton = document.getElementById("call-button");
const hangUpButton = document.getElementById("hang-up-button");
let call;
let callAgent;
let tokenCredential;
Obsługa uwierzytelniania
Teraz skończymy z podstawową konfiguracją, możemy rozpocząć tworzenie niektórych funkcji. Pierwszą rzeczą, której potrzebujemy funkcjonalnie, jest obsługa uwierzytelniania. Uwierzytelnianie będzie obsługiwane przez użytkownika wprowadzającego token użytkownika do utworzonego przez nas elementu wejściowego tokenu, a następnie klikając pozycję "Prześlij token". Aby obsłużyć ten proces w naszym kodzie, musimy zarejestrować procedurę obsługi kliknięć w tym przycisku przesyłania tokenu, który będzie przetwarzać token użytkownika. Ten kod można dodać bezpośrednio pod naszymi zmiennymi przed.
submitToken.addEventListener("click", async () => {
const callClient = new CallClient();
const userTokenCredential = userToken.value;
try {
tokenCredential = new AzureCommunicationTokenCredential(userTokenCredential);
callAgent = await callClient.createCallAgent(tokenCredential);
callAgent.on('incomingCall', incomingCallHandler);
callButton.disabled = false;
submitToken.disabled = true;
} catch(error) {
window.alert("Please submit a valid token!");
}
})
Ten kod:
- Tworzy klienta wywołania usług Azure Communication Services.
- Pobiera token użytkownika z elementu wejściowego tokenu i tworzy go
AzureCommunicationTokenCredential
za pomocą. To poświadczenie służy do tworzenia i obsługi wszystkich wywołań. - Tworzy obiekt
CallAgent
, którego używamy do tworzenia i odbierania wywołań. - Rejestruje program obsługi wywołań przychodzących, który wkrótce napiszemy.
- Aktualizacje niektóre z naszych przycisków, aby użytkownik mógł kontynuować.
Wykonywanie połączeń
Dzięki uwierzytelnieniu możemy zacząć od niektórych rzeczywistych funkcji, zacznijmy od umożliwienia użytkownikowi wykonania wywołania:
callButton.addEventListener("click", () => {
// start a call
const userToCall = calleeInput.value;
call = callAgent.startCall(
[{ id: userToCall }],
{}
);
// toggle button states
hangUpButton.disabled = false;
callButton.disabled = true;
});
Ten kod rejestruje procedurę obsługi kliknięć na przycisku "Rozpocznij wywołanie". Pobiera identyfikator wywoływany z pasującego elementu wejściowego, a następnie używa agenta wywołania do wywołania.
Wiszące
Po otwarciu połączenia musimy zezwolić użytkownikowi na zawieszanie się.
hangUpButton.addEventListener("click", () => {
// end the current call
call.hangUp({ forEveryone: true });
// toggle button states
hangUpButton.disabled = true;
callButton.disabled = false;
});
Ten kod rejestruje procedurę obsługi kliknięć na przycisku "Zawieszaj się", a następnie po prostu instruuje wywołanie, aby zawiesiło się.
Odbieranie połączenia
Teraz, gdy możemy wykonać połączenie, musimy również obsługiwać odbieranie połączenia. Aby obsłużyć odbieranie wywołania, utworzymy procedurę obsługi wywołań przychodzących, o której wspomniano wcześniej.
const incomingCallHandler = async (args) => {
const incomingCall = args.incomingCall;
// Accept the call
await incomingCall.accept();
// Subscribe to callEnded event and get the call end reason
incomingCall.on('callEnded', args => {
console.log(args.callEndReason);
});
};
Testowanie
Skończymy, jeśli uruchomisz aplikację przy użyciu tego samego polecenia co poprzednia lekcja: npx parcel index.html
a następnie otwórz aplikację w przeglądarce. Będziesz mieć funkcjonalną podstawową aplikację wywołującą!
Uzyskiwanie poświadczeń testowych
Aby przetestować faktycznie wywołanie, potrzebne są pewne poświadczenia. Poświadczenia można uzyskać w witrynie Azure Portal. Otwórz zasób usług Azure Communication Services w witrynie Azure Portal i kliknij przycisk "Tożsamości i tokeny dostępu użytkowników" w menu po lewej stronie:
Na wyświetlonej stronie można wygenerować poświadczenia testowe. W przypadku tej aplikacji potrzebujemy tylko uprawnienia "Voice and video calling (VOIP)", aby sprawdzić tę opcję i nacisnąć przycisk generuj:
Uzyskasz pojedynczą tożsamość usług Azure Communication Services, która jest odpowiednia do testowania. Pamiętaj, aby skopiować token i identyfikator do bezpiecznego miejsca na potrzeby testowania, na przykład pusty dokument notatnika.
Jeśli chcesz spróbować wywołać innego użytkownika, wygeneruj dodatkowy zestaw poświadczeń.
Pierwszy będzie używany dla użytkownika wywołującego, a drugi dla odbierającego użytkownika.
W rzeczywistej aplikacji należy używać naszych systemów tożsamości i bibliotek klienckich do tworzenia i przechowywania tych poświadczeń. W ten sposób użytkownik rzeczywisty nie musi ręcznie kopiować i wprowadzać tych elementów. Aby uzyskać więcej informacji na temat tej koncepcji, zapoznaj się z linkami na końcu tego modułu.
Wywoływanie bota echo
Usługa Azure Communication Services ma bota echo, który można wywołać w celu przetestowania mikrofonu. Echo Bot jest zgodny z tą aplikacją. Aby wywołać bota echo:
- Otwieranie aplikacji w przeglądarce
- Wklej zapisany token do elementu wejściowego tokenu użytkownika.
- Naciśnij przycisk "Prześlij"
- Wprowadź identyfikator użytkownika echo bota
8:echo123
- Naciśnij pozycję "Rozpocznij połączenie"
Przeglądarka może wyświetlić monit z niektórymi oknami dialogowymi uprawnień mikrofonu, aby upewnić się, że je zaakceptujesz. Jeśli wszystko działa prawidłowo, należy wykonać połączenie z botem Echo. Umożliwi to zarejestrowanie krótkiej wiadomości, która następnie będzie odtwarzana.
Wywoływanie innego użytkownika
Możesz również wywołać innego użytkownika z tą aplikacją. Będziesz potrzebować drugiego zestawu poświadczeń, które wygenerowano wcześniej:
- Otwórz dwie kopie aplikacji, wiele kart lub okien powinno służyć do symulowania wywoływania innego użytkownika.
- W pierwszej kopii wprowadź pierwszy token użytkownika zapisany z generatora poświadczeń i naciśnij klawisz "Submit"
- W drugiej kopii wprowadź drugi token użytkownika zapisany z generatora poświadczeń i naciśnij klawisz "Submit"
- W pierwszej kopii wprowadź drugi identyfikator użytkownika w elemecie wejściowym "KtoTo chcesz wywołać?"
- Ponownie z pierwszej kopii kliknij przycisk "Rozpocznij połączenie".
Jeśli obie karty/okna znajdują się na tym samym urządzeniu, wywołanie może mieć echo, ale wyświetla proces i wywołuje działanie między dwiema kartami przeglądarki. Jeśli wdrożysz aplikację na serwerze internetowym, do którego może uzyskiwać dostęp wiele maszyn, będziesz mieć prawdziwe połączenie głosowe bez echa.