Article

ブログ

2016/07/15

Twilio Client の presence を IP メッセージングで置き換える

こんにちは、本間です。ご無沙汰してます。

今回は Twilio の最新情報と合わせて現在までの CallConenct の遷移についてご紹介します。

Twilio Client 1.3 のバージョンアップ

半年ほど前に Twilio Client 側でバージョン1.2 から 1.3 へと大きなアップデートがありました。Twilio Client 1.3 からは MS Edge のサポートや、DSCP サポートなどより最新の技術に合わせたバージョンとなっていて、通話の安定性も向上されます。

その他に、Client機能の開発に特化するために Twilio Client 1.2 ではあった presence 機能が廃止されました。この presence 機能は、現在誰に電話をかけることのできるのか(オンラインなのか)をリアルタイムで取得してくれる機能でした。これは電話機能の根本から外れるため、1.3 からはサポートされなくなってしまいました。

そして私たちはこの presence 機能を愛用しており、その機能がサービスの根幹であったため、Twilio Client 1.3 へのアップデートは長い間見送っていました。

Twilio Client 1.3 の詳細は以下の記事がよくまとまっています。(英語 https://www.twilio.com/blog/2016/02/twilio-client-1-3-adds-ortc-support-for-microsoft-edge-call-quality-improvements-and-more.html)

IP メッセージングの新機能の登場

先日の IP メッセージング SDK のアップデートにより、 Reachability 機能が実現されました。これはチャットルームにログインしているメンバーが現在オンラインかどうかを示すことのできる機能です。 Slack も名前の左側に丸マークがありますね。よりチャットで一体感を出す上で大事な機能です。

大元の US Twilio 側では意図的ではなかったようでしたが、これはまさに Twilio Client 1.3 で失われた presence 機能の代替です。私たちのサービスの場合は すでに別の部分で IP メッセージングを使っていたため、簡単に代替することが可能でした。

Reachability の利用

先ほどのリンク先で Reachability 機能の利用方法は書いていますが、 presence の代替としてのサンプルとして本記事に載せておきます。

まず IP メッセージング Service の ReachabilityEnabled を有効にしなければなりません。 REST API 経由で ON にしてあげる必要があります。

curl -X POST https://ip-messaging.twilio.com/v1/Services/{service sid} \ -d 'ReachabilityEnabled=true' \ -u '{twilio account sid}:{twilio auth token}'

そのあと、JavaScript SDK の IP Messaging Client にて新しくイベント “userInfoUpdated” を定義するとユーザーログイン情報のイベントをキャッチすることができます。

      messagingClient.on('userInfoUpdated', function(user) {
        console.log(user);
        var identity = user.identity;
        if (user.online) {
           presencePeople[user.identity] = "online";
        } else {
           delete presencePeople[user.identity];
        }
        genInternalSelect(); 
        // presencePeople にログイン済みユーザーが入る
      });

あとは JavaScript を通じて UI の更新をすればいいだけですので、この部分は省略します。たったこれだけで Twilio Client の presence 機能の代替を実現することができます。

終わりに

今から Twilio Client を利用する場合はすでに 1.3 ですのであまり気にする必要はないかもしれません。ただ IP メッセージングと Twilio Client を組み合わせると他にも色々と面白いことができます。

もし Twilio Client 1.2 で presence 機能を利用している方がいたら参考になれば幸いです。