Vonage Client SDKへの移行

Nexmo Client SDKをお使いの場合、Vonage Client SDKに移行する際に考慮すべき変更点があります。

クライアントのインスタンス化

AndroidとiOSでは、SDK Clientはもはやシングルトンではありません。

// Nexmo SDK
let client = new NexmoClient()

// Vonage SDK

// If loaded with a <script> tag:
const client = new vonageClientSDK.VonageClient();

// If loaded via import:
const client = new VonageClient();

セッション管理

以前は、AndroidとiOSのNexmo Client SDKでは、次のように呼び出していました。 login/createSession そして、リスナーを介してあなたの最初のセッションの作成に関する最新情報を受け取ります。

JavaScript Vonage Client SDKでは、アプリオブジェクトを受け取らなくなり、代わりにセッションIDを受け取ります。

Vonage Client SDKには、最初のセッション作成が成功したかどうかを知るためのコールバックがあります。再接続を含む更なるセッションの更新は、リスナー/デリゲートメソッドで利用可能です。

// Nexmo SDK
client.createSession(token)
  .then(app => {
    ...
  })
  .catch(error => {
    ...
  });

// Vonage SDK
client.createSession(token)
  .then(sessionId => {
    ...
  })
  .catch(error => {
    ...
  });

電話番号

Vonage Client SDKでは、サーバーコールが唯一のコールタイプです。 inApp コールタイプは廃止されました。これは、すべてのコールフローでNCCOウェブフック・サーバーが必須となったことを意味します。

サーバーコールを行うためのパラメータが変更され、以前のtoとcontextフィールドが1つのパラメータになりました。既存の NCCO ウェブフックとの後方互換性のため、次のように指定できます。 to をコンテキスト・オブジェクトの一部とすることで、前と同じようにウェブフックに転送されます。

そうでない場合は、コンテキストパラメータを使用して、カスタムデータを answer_url ウェブフック

// Nexmo SDK
application.callServer("PHONE_NUMBER")
    .then(nxmCall => {
        ...
    })
    .catch(error => {
        ...
    });

// Vonage SDK
client.serverCall({ to: "PHONE_NUMBER" })
    .then(callId => {
        ...
    })
    .catch(error => {
        ...
    });

通話/チャット・アクション

また、Vonage Client SDKには、通話終了、通話ミュート、メッセージ送信などのアクションを実行するためのオブジェクト上のメソッドがなくなりました。これらのアクションはすべてクライアント上のメソッドとして利用できます。これらのアクションを実行するには、アクションを実行したいコールまたは会話IDを保存する必要があります。

例えば、通話をミュートする:

// Nexmo SDK
conversation.me.mute(true);

// Vonage SDK
client.mute(callId)
    .then(() => {
        // Mute successful
    })
    .catch(error => {
        // Handle muting error
    });

あるいはメッセージを送る:

// Nexmo SDK
conversation.sendMessage({
    "message_type": "text",
    "text": "Hello world!"
}).then((event) => {
    ...
}).catch((error)=>{
    ...
});


// Vonage SDK
client.sendMessageTextEvent("CONV_ID", "Hello world!")
    .then(timestamp => {
        ...
    }).catch(error => {
        ...
    });