#JWT生成
Vonage Voiceでは JWT認証 を使用します。
ユーザー作成やクライアントSDKのNexmoClientオブジェクトの初期化などで必要になります。
JSON Web Token (JWT) とは何?
##VonageのJWTはユーザー用とAdmin用が存在する
以下のようにクレームを使い分けます。
###ユーザー用クレーム
{
"iat": 1532093588,
"jti": "705b6f50-8c21-11e8-9bcb-595326422d60",
"sub": "user_name",
"exp": "1532179987",
"acl": {
"paths": {
"/**": {}
}
},
"application_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
###Admin 用クレーム
{
"iat": 1532093588,
"jti": "705b6f50-8c21-11e8-9bcb-595326422d60",
"exp": "1532179987",
"application_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab"
}
ユーザー用で存在していたsub(ユーザー名指定)と acl が不要となります。
JWTは JWT Generator をはじめ、Server SDK を使って生成できそうです。
作成したJWTはここでデコードして、期待したクレームが存在するか確認できます。
###参照記事
JWTの生成方法
Vonage API オンラインツールを使用して JWT を生成する
#データセンターの設定
##5つのデータセンターが存在する
Vonageでは、5つのデータセンターを利用できます。
ワシントンDC(WDC)/ダラス(DAL)/ロンドン(LON)/シンガポール(SNG)/アムステルダム(AMS)
ただし、適切に設定されていないと、WebRTCブラウザ等で着信に応答できないことがあります。
###補足
WebRTCで通話する公式チュートリアルが用意されています。
自身で公式チュートリアルを触って得たことも共有しています。
##あるはずの会話にAPIリクエストすると404が出た
こんな記事がありました。
サポートからの回答を要約すると
- 会話や通話は、発信地に応じて地理的なデータセンターに関連付けられる
- 米国のデータセンターに近い仮想番号への着信があった場合、会話は米国に存在する
- アウトバウンドのAPIリクエストがSNGのデータセンターに近ければ、会話はSNGに存在する
日本の電話番号からVonage番号に発信すると、会話はSNGに存在することになります。
クライアントSDKがSNG以外のデータセンターに設定されてるとWebRTCブラウザで応答しようとしても通話に接続できません。(2021年12月現在リージョン間の連携が取れてない)
WebRTCブラウザで応答する場合は、クライアントで使用するユーザーをSNGに作成し、クライアントSDKのNexmoClientオブジェクトにはエンドポイントをSNGに指定します。
###ユーザー作成(クライアントユーザー)
curl -X "POST" "https://api-sg-1.nexmo.com/beta/users" \
-H 'Authorization: Bearer '$JWT\
-H 'Content-Type: application/json' \
-d $'{
"name": "ユーザー名",
"display_name": "表示用のユーザー名"
}'
###NexmoClientオブジェクト初期化
const nexmoClient = new NexmoClient({
nexmo_api_url: "https://api-sg-1.nexmo.com",
url: "wss://ws-sg-1.nexmo.com",
ips_url: "https://api-sg-1.nexmo.com/v1/image"
});
Client SDK NexmoClient オブジェクトを作成し、URL (エンドポイント)を指定する