LoginSignup
27
27

More than 5 years have passed since last update.

最大40人まで同時通話が可能なシステム開発 - Twilioを使えばたった7行で実現可能

Posted at

最大40人まで同時通話が可能なシステムの開発、Twilioのカンファレンスコールを使えばたった7行(XML)で開発が可能になります。

もちろん RubyやPHPなどみなさんが好きなプログラミング言語で開発すればみなさんの希望に近いアプリケーションやシステムの開発が可能になります。

まずはカンファレンスコールの仕組

① カンファレンスコール参加希望者がTwilioの電話番号(050-xxxx-xxxx)に電話を掛けます。
② 電話番号に設定されているTwiMLが呼ばれカンファレンスルームが開設されます。
③ 二人以上の人が①の電話をかけるとカンファレンスが開始されます。
④ ①〜③の流れ、つまり参加希望者が同じ番号に電話をかけるとどんどん参加され最大40人まで参加可。

早速、Twilioを使ってカンファレンスコールを作ってみましょう。

下のように、たった7行!のコードを書くだけで同時通話アプリの開発は完了です。
次はカンファレンス用の電話番号(Twilioから取得した電話番号)のRequest URLにTwiMLのURLを設定するだけです。

Twilioの各動詞には名詞の指定が可能です。名詞の属性を使えばより細かい操作ができます。
例えば、カンファレンスコールの作成で待機音を変更したい場合は「waitUrl」を指定することで実現可能になります。(ソースコードの 5行目)

◎ コードの動き
ユーザーから電話がかかってくると最初「Twilioカンファレンスへようこそ!」が流されます。
その後、カンファレンスコールが始まります。

twilio-conference.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Response>
    <Say language="ja-jp">Twilioカンファレンスへようこそ!</Say>
    <Dial>
        <Conference waitUrl="https://api.twilio.com/Cowbwell.mp3">twilioConferenceRoom</Conference>
    </Dial>
</Response>

カンファレンスルームの振り分け

下のように特定の電話番号を取得し、それぞれ違うカンファレンスルームの生成ができます。

conference-sort-telNo.php
<?php
    header('Content-type: text/xml');
    echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<Response>
    <Dial>
    <?php
        if ($_REQUEST['From'] == '+8180xxxxxxxx')
        {
            echo '<Conference>appleRoom</Conference>';
        }
        else {
            echo '<Conference>orangeRoom</Conference>';
        }
    ?>
    <Dial>
</Response>

カンファレンスルームの指定(携帯番号(数字)入力)

プッシュ音によるカンファレンスコールの生成も可能。
例えば、ユーザーグループが作られていてそのグループ番号をメンバー各自電話器の数字ボタンを押します。そうすると押された番号ごとにルームを生成し、同じグループのメンバー間通話が可能になります。

◎ 番号の入力(プッシュ音認識)
Twilioの「Gather」という動詞を使えば、ユーザーがどの数字を押したかをわかります。
下のコードをご覧ください。
下のファイルではGather動詞を使って番号の入力をもらいます。入力された数字情報を「action」に乗せ、「conference-input-roomNo.php」に渡します。

conference-input-roomNo.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Response>
    <Gather action="conference-input-roomNo.php" numDigits="4">
        <Say language="ja-jp">ルーム番号を4桁で入力してください。</Say>
    </Gather>
</Response>

上の「」から番号が渡されるファイルです。「$key = $_REQUEST['Digits'];」部分で渡されたパラメータを取得し、続きの処理を行います。

ここでは入力された番号ごとにカンファレンスルームが選択されるようになっています。

conference-input-roomNo.php
<?php
    header('Content-type: text/xml');
    echo '<?xml version="1.0" encoding="UTF-8" ?>';

    $key = $_REQUEST['Digits'];
?>
<Response>
    <?php
        if ($key == '1234')
        {
            echo '<Dial>';
            echo '<Conference>appleRoom</Conference>';
            echo '</Dial>';
        }
        else {
        // ルーム番号を間違って入力したら案内メッセージを再生し、リトライする。
            echo '<Say language="ja-jp">ルーム番号を確認し、もう一回入力してください。</Say>';
            echo '<Redirect>conference-incoming-gather.xml</Redirect>';
        }
    ?>
</Response>

いかがでしょうか?
今まで!はこのようなシステムを開発するためにはいろんな人が複雑な仕様に基づき長い期間開発を進んで来たと思いますが、Twilioを使えばこのようにたった7行で同時通話アプリの開発が可能です。
なおかつ各プログラミング元号を使えばより細かい処理をさせることも可能。

Twilio for KDDI Web Communications 公式ページ

27
27
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
27
27