JavaScript
クライアント側アプリケーションの作成
という名前のHTMLファイルを作成する。 client_js.html.以下のコードを追加しますが、先のステップでユーザー用に生成したJWTを token 一定している:
<!DOCTYPE html>
<html lang="en">
<head>
<script src="./node_modules/@vonage/client-sdk/dist/vonageClientSDK.min.js"></script>
<style>
input, button {
font-size: 1rem;
}
#answer, #reject, #hangup {
display: none;
}
</style>
</head>
<body>
<h1>Inbound PSTN phone call</h1>
<p id="notification">Lines are open for calls...</p>
<br />
<button type="button" id="answer">Answer</button>
<button type="button" id="reject">Reject</button>
<button type="button" id="hangup">Hang Up</button>
<script>
const answerButton = document.getElementById("answer");
const rejectButton = document.getElementById("reject");
const hangUpButton = document.getElementById("hangup");
const notification = document.getElementById("notification");
const token = 'ALICE_JWT';
const client = new vonageClientSDK.VonageClient();
let callId = null;
client.createSession(token)
.then(sessionId => {
console.log("Id of created session: ", sessionId);
})
.catch(error => {
console.error("Error creating session: ", error);
});
client.on('callInvite', (_callId) => {
callId = _callId;
notification.textContent = "You are receiving a call";
answerButton.style.display = "inline";
rejectButton.style.display = "inline";
});
client.on('legStatusUpdate', (_callId, legId, status) => {
notification.textContent = `Caller Leg Status is: ${status}`;
});
client.on("callHangup", (_callId, callQuality, reason) => {
console.log(`Call ${_callId} has hung up, callQuality:${callQuality}, reason:${reason}`);
callId = null;
notification.textContent = "Lines are open for calls...";
answerButton.style.display = "none";
rejectButton.style.display = "none";
hangUpButton.style.display = "none";
});
// Answer the call.
answerButton.addEventListener("click", () => {
client.answer(callId)
.then(() => {
console.log("Success answering call.");
notification.textContent = "You are on a call";
answerButton.style.display = "none";
rejectButton.style.display = "none";
hangUpButton.style.display = "inline";
})
.catch(error => {
console.error("Error answering call: ", error);
});
});
// Reject the call
rejectButton.addEventListener("click", () => {
client.reject(callId)
.then(() => {
console.log("Success rejecting call.");
notification.textContent = "You rejected the call";
answerButton.style.display = "none";
rejectButton.style.display = "none";
})
.catch(error => {
console.error("Error rejecting call: ", error);
});
});
// Hang up the call
hangUpButton.addEventListener("click", () => {
client.hangup(callId)
.then(() => {
console.log("Success hanging up call.");
notification.textContent = "You ended the call";
answerButton.style.display = "none";
rejectButton.style.display = "none";
hangUpButton.style.display = "none";
})
.catch(error => {
console.error("Error hanging up call: ", error);
});
});
</script>
</body>
</html>
Client SDKを使用して着信コールを受け付けるWebアプリケーションです。
このコードの主な特徴は以下の通りである:
- 通話状況を更新できる通知ボックス。
- 着信に応答するためのボタン。
- 着信を拒否するボタン。
- 着信コールを切るためのボタン。
- このコードは、先に生成されたJWTを使ってセッションを作成する。
- このコードでは、2つのメインイベントハンドラを設定している。
- 最初のイベントは、着信コールの招待で発生する。これは、Client SDKのメソッドを使用して、着信コールに応答、拒否、切断する3つのクリックボタンイベントハンドラを設定します。
answer,rejectそしてhangupそれぞれだ。 - 2番目は、コールレッグステータスの更新を受信し、通知ボックスのテキストを着信コールのステータスに設定する。
- 最初のイベントは、着信コールの招待で発生する。これは、Client SDKのメソッドを使用して、着信コールに応答、拒否、切断する3つのクリックボタンイベントハンドラを設定します。