Cvičení – přidání kódu hlasového volání
V této lekci přidáme do webové aplikace vytvořené v předchozí lekci další kód. Tato aplikace nám umožní provádět hlasové hovory pomocí služeb Azure Communication Services.
Přidání vstupních elementů HTML
Abychom mohli zavolat, budeme potřebovat dvě důležité informace:
- Přístupový token uživatele služby Azure Communication Services pro uživatele, který volá. Tento token identifikuje a autorizuje uživatele, aby kontaktoval službu a zahájil hlasové volání.
- Kdo chce uživatel volat, ID uživatele služby Azure Communication Services.
K získání těchto informací od uživatele použijeme některé standardní vstupy formulářů HTML. Pojďme je tedy přidat do souboru index.html
:
Otevření textového editoru
index.html
Do textu souboru
Calling HTML here
HTML přidejte do komentáře následující kód HTML:<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;" />
První vstupní prvek bude pro token uživatele provádějícího volání. Tlačítko Odeslat se použije k vytvoření instance některých objektů Azure Communication Services po poskytnutí tokenu. Druhým vstupem bude zadání ID uživatele osoby, které chceme zavolat.
Přidání tlačítek základních akcí volání
Budeme také potřebovat některá tlačítka pro některé základní akce volání, které uživateli umožňují řídit volání:
- Zahájit hovor
- Zavěs
Pojďme tedy přidat tato tlačítka pod vstupy z předchozího kroku:
<button id="call-button" type="button" disabled="true">
Start Call
</button>
<button id="hang-up-button" type="button" disabled="true">
Hang Up
</button>
Testování kódu HTML
Se zadaným kódem HTML jsme dokončili většinu kódu HTML pro tuto aplikaci. Pokud spustíte aplikaci se stejným příkazem jako v předchozí lekci: npx parcel index.html
Pak aplikaci otevřete, měla by se v prohlížeči zobrazit následující aplikace:
Tato aplikace nemusí vypadat moc, ale všechny vizuální prvky, které potřebujeme k vytvoření aplikace pro hlasové volání. Teď už máme kód HTML naší aplikace. Zbytek kódu bude používat JavaScript.
Import některých závislostí
Prvním krokem v souboru app.js
je import závislostí pro volání služeb Azure Communication Services. Tyto závislosti pocházejí ze sad SDK, které jsme dříve nainstalovali s NPM. Pokud je chcete importovat, přidejte do app.js
souboru následující řádky:
import { CallClient } from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';
Prvním importem je , CallClient
který se použije později k skutečně volání. Zpracovává mikrofony, zvuk atd. vše za vás. Druhý import AzureCommunicationTokenCredential
se používá ke zpracování požadavků na ověřování pro službu Azure Communication Services. Ověřování zajišťuje, že víme, kdo je uživatel při volání.
Získání odkazů na kód HTML
Dříve jsme vytvořili elementy HTML, které budou uživatelé používat k řízení aplikace. Abychom mohli naslouchat uživatelům, kteří s nimi pracují, musíme na ně v JavaScriptu získat odkazy.
Kromě toho potřebujeme několik proměnných k uložení některých položek, které se používají v celém kódu. Pod importy přidejte následující kód app.js
.
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;
Zpracování ověřování
Teď jsme dokončili základní nastavení, můžeme začít vytvářet některé funkce. První věcí, kterou potřebujeme funkčně, je zpracování ověřování. Ověřování bude zpracováno uživatelem, který zadá token uživatele do vstupního prvku tokenu, který jsme vytvořili, a poté klikne na "Odeslat token". Abychom tento proces mohli zpracovat v kódu, musíme zaregistrovat obslužnou rutinu kliknutí na tlačítko odeslat token, které zpracuje token uživatele. Tento kód můžete přidat přímo pod proměnné z dříve.
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!");
}
})
Tento kód:
- Vytvoří klienta volání služeb Azure Communication Services.
- Načte token uživatele ze vstupního prvku tokenu a vytvoří s ním token
AzureCommunicationTokenCredential
. Tyto přihlašovací údaje slouží k provádění a zpracování všech volání. - Vytvoří ,
CallAgent
který používáme k volání a přijímání volání. - Zaregistruje obslužnou rutinu příchozího volání, kterou za chvíli napíšeme.
- Aktualizace některé z našich tlačítek, aby mohl uživatel pokračovat.
Volání
S ověřováním mimo způsob, jakým můžeme začít s některými skutečnými funkcemi, můžeme začít tím, že uživateli umožníte volat:
callButton.addEventListener("click", () => {
// start a call
const userToCall = calleeInput.value;
call = callAgent.startCall(
[{ id: userToCall }],
{}
);
// toggle button states
hangUpButton.disabled = false;
callButton.disabled = true;
});
Tento kód zaregistruje obslužnou rutinu kliknutí na tlačítku Zahájit volání. Načte volané ID z odpovídajícího vstupního elementu a pak pomocí agenta volání provede volání.
Zavěsit
Jakmile je hovor otevřený, musíme uživateli povolit, aby zavěsil.
hangUpButton.addEventListener("click", () => {
// end the current call
call.hangUp({ forEveryone: true });
// toggle button states
hangUpButton.disabled = true;
callButton.disabled = false;
});
Tento kód zaregistruje obslužnou rutinu kliknutí na tlačítko "Zavěsit" a pak zavolá volání, aby zavěsil.
Přijetí hovoru
Teď, když můžeme volat, musíme také zpracovat příjem hovoru. Abychom mohli zpracovat příjem volání, vytvoříme obslužnou rutinu příchozího volání, kterou jsme zmínili dříve.
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);
});
};
Testování
Dokončili jsme to, pokud aplikaci spustíte se stejným příkazem jako v předchozí lekci: npx parcel index.html
a pak aplikaci otevřete v prohlížeči. Budete mít funkční základní volající aplikaci.
Získání testovacích přihlašovacích údajů
K otestování skutečně volání budete potřebovat nějaké přihlašovací údaje. Přihlašovací údaje můžete získat z webu Azure Portal. Otevřete prostředek služby Azure Communication Services na webu Azure Portal a v nabídce vlevo klikněte na tlačítko Identities & User Access Tokens (Identityies & User Access Tokens):
Na stránce, která se zobrazí, můžete vygenerovat testovací přihlašovací údaje. Pro tuto aplikaci potřebujeme jenom oprávnění "Hlasové hovory a videohovory (VOIP)", takže zaškrtněte tuto možnost a stiskněte vygenerovat:
Získáte jednu identitu služby Azure Communication Services, která je vhodná pro testování. Nezapomeňte token a ID zkopírovat na bezpečné místo pro testování, například prázdný dokument poznámkového bloku.
Pokud chcete zkusit volat jiného uživatele, vygenerujte další sadu přihlašovacích údajů.
První se použije pro volajícího uživatele a druhý pro přijímajícího uživatele.
V reálné aplikaci byste měli k vytvoření a uložení těchto přihlašovacích údajů použít naše systémy identit a klientské knihovny. Tímto způsobem uživatel z reálného světa nemusí tyto položky kopírovat a zadávat ručně. Další informace o tomto konceptu najdete na odkazech na konci tohoto modulu.
Volání robota Echo
Služba Azure Communication Services má robota Echo, který můžete volat k otestování mikrofonu. Echo Bot je kompatibilní s touto aplikací. Volání robota Echo:
- Otevření aplikace v prohlížeči
- Vložte uložený token do vstupního prvku tokenu uživatele.
- Stiskněte tlačítko Odeslat.
- Zadejte ID uživatele Echo Bota.
8:echo123
- Stiskněte "Zahájit hovor"
Prohlížeč vás může vyzvat k některým dialogovým oknem oprávnění mikrofonu, abyste je přijali. Pokud všechno správně fungovalo, měli byste být na hovoru s Echo Botem. Umožní vám nahrát krátkou zprávu, kterou si pak přehrajete.
Volání jiného uživatele
Můžete také volat jinému uživateli s touto aplikací, budete potřebovat druhou sadu přihlašovacích údajů, kterou jste vygenerovali dříve:
- Otevření dvou kopií aplikace, více karet nebo oken by se mělo použít k simulaci volání jiného uživatele.
- V první kopii zadejte první uživatelský token uložený z generátoru přihlašovacích údajů a stiskněte tlačítko Odeslat.
- V druhé kopii zadejte druhý uživatelský token uložený z generátoru přihlašovacích údajů a stiskněte "Submit" (Odeslat).
- Z první kopie zadejte druhé ID uživatele do vstupního prvku "Kdo chcete volat?".
- Znovu z první kopie klikněte na Zahájit hovor.
Pokud jsou obě karty nebo okna na stejném zařízení, může volání obsahovat ozvěny, ale zobrazuje proces a volání pracující mezi dvěma kartami prohlížeče. Pokud nasadíte aplikaci na webový server, ke kterému má přístup více počítačů, budete moct bez odezvy mít skutečný hlasový hovor.