LoginSignup
2
1

More than 1 year has passed since last update.

【Vonage】Voice API開発のJWTの生成とデータセンターの設定を学ぶ

Last updated at Posted at 2021-12-08

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 (エンドポイント)を指定する

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1