https://a.storyblok.com/f/270183/1368x665/151c17611e/26mar_dev-blog_cc-php-von-1.jpg

PHP と Vonage Voice API で電話会議を構築する

最終更新日 March 18, 2026

所要時間:2 分

はじめに

このチュートリアルでは、PHP と Vonage Voice API を使って電話会議アプリケーションを作成する方法を学びます。このチュートリアルでは、PHP と Vonage Voice API を使って電話会議アプリケーションを作成する方法を学びます。最後には、複数の参加者が同じライブ会話に参加できる電話番号を作成します。

Vonageアプリケーションを設定し、コール・コントロール・オブジェクト(NCCO)で着信コールを処理し、シンプルなPHPエンドポイントからダイナミック・レスポンスを返します。このプロジェクトは、チームのミーティング・ライン、イベント・ホットライン、またはコラボレーティブなボイス・エクスペリエンスを構築するための実用的な出発点です。

このチュートリアルの完全なソースコードは Vonage コミュニティ GitHub リポジトリで公開されていますので、そちらを参考にしてください。

前提条件

PHPで着信に応答する

この例では、ユーザーがVonageのバーチャル番号に電話をかけ、アプリケーションコードがその着信に応答します。Vonageは、コール・コントロール・オブジェクト、つまり NCCO.

まず、音声合成(TTS)による挨拶があり、次にユーザーが電話会議に参加する。

そのために answer.phpファイルを public/ディレクトリ(私たちのウェブルート)にファイルを追加し、NCCOを返すようにします。NCCOはJSONなので、PHPは適切な Content-Typeヘッダを含める必要がある:

<?php

$ncco = [
    [
        "action" => "talk",
        "text" => "Thank you for joining the call today. You will now be added to the conference.",
        "language" => "en-GB",
        "style" => 0,
        "premium" => true
    ],
    [
        "action" => "conversation",
        "name" => "weekly-team-meeting"
    ]
];

header("Content-Type: application/json");
echo json_encode($ncco);

この $ncco変数は、Vonageのサーバーに着信の処理方法を指示するために返すNCCOを保持する。この例では、ユーザーに挨拶する "talk "アクションの後に、ユーザーを電話会議に追加する "conversation "アクションを記述している。このコードでは header()ヘッダーをPHPに送信させるために Content-TypeヘッダをPHPに送信させ、その後にJSONを送信します。

NCCOで他にどんなことができるのか気になる方は NCCOリファレンス・ドキュメントをご覧ください。

レスポンスに奉仕する

この時点で、アプリケーションの可動部分のテストを開始できます。PHPのWebサーバーを public/ディレクトリから起動します:

cd public/
php -S localhost:8080

にリクエストしたときに、アプリケーションが正しくNCCOを返すかチェックしてください。 http://localhost:8080/answer.phpにリクエストしたときに、アプリケーションがNCCOを正しく返すかどうか確認してください。

コードを公開する

Vonageがあなたのアプリケーションに着信を通知するには、そのアプリケーションに到達できる必要があるので、このコードは一般に公開されていなければならない。サーバーにデプロイするという方法もあるが、開発目的では ngrokを使ってローカルの開発環境を公開する。ウェブサーバーを起動したら(私の場合はポート8080)、ngrokを次のように実行する:

ngrok http 8080

ダッシュボードには、ウェブインターフェースへのリンク(とても便利なのでクリックしてください)、トンネルのhttps URL(これをコピーしてください。

を ngrok https URL に置き換えることができます。 http://localhost:8080をあなたの ngrok https URL に置き換えることができます。 /answer.phpにリクエストしてみてください。

電話番号の設定

Vonage番号の購入

バーチャル電話番号を購入するには APIダッシュボードにアクセスし、以下の手順に従ってください。

Steps on how to purchase a phone number from the dashboard, from selecting the number and confirming the selection.Purchase a phone number

  1. あなたの APIダッシュボード

  2. BUILD & MANAGE > Numbers > Buy Numbersを開きます。

  3. 必要な属性を選択し、検索をクリックします。

  4. ご希望の番号の横にある購入ボタンをクリックし、購入を確定する。

  5. バーチャルナンバーを購入したことを確認するには、左側のナビゲーションメニューの「BUILD & MANAGE」から「Numbers」、「Your Numbers」の順にクリックします。

Voice対応Vonageアプリケーションの作成

通話設定を保持し、使用する番号にリンクすることができます。この分離は、異なる地域の番号を同じ電話会議に参加させたい場合に非常に便利です。

Vonageアプリケーションは公開鍵/秘密鍵を使用する。この例では、単に着信を受けるだけなので、今のところ秘密鍵は必要ありません。しかし、作業ディレクトリに private.keyファイルを作業ディレクトリに保存しておくとよいだろう。

アプリケーションを作成するには、名前を付け、いくつかの重要なWebhookエンドポイントを設定する必要があります:

  • 回答URLは、すでに作成した answer.phpエンドポイントになります。

  • イベントのURLを event.php.このファイルは次のセクションで作成する。

  • アプリケーションを作成するには アプリケーションの作成ページでアプリケーションの名前を定義します。

  • Webhooksを使用するAPIを使用する場合は、秘密鍵が必要です。Generate public and private key "をクリックすると、自動的にダウンロードが始まります。この鍵は紛失すると再ダウンロードできません。この鍵は紛失しても再ダウンロードできません。 private_<あなたのアプリID>.key.この鍵はAPIコールの認証に使用できます。 注意:アプリケーションを保存するまで、キーは機能しません。

  • 必要な機能(Voice、Messages、RTCなど)を選択し、必要なWebhook(イベントURL、応答URL、受信メッセージURLなど)を提供します。これらはチュートリアルで説明します。

  • 保存してデプロイするには、"Generate new application "をクリックして設定を確定します。これでアプリケーションはVonage APIで使用する準備が整いました。

アプリケーションをVonage番号にリンクする

Vonageアプリケーションが作成され、利用可能なバーチャルナンバーが画面の下に表示されます。

このチュートリアルで使用する番号を選択し、次のボタンをクリックします。 リンクボタンをクリックして、バーチャル番号とVonageアプリケーションをリンクさせます。

その結果、バーチャル番号に電話をかけると、Vonageは次のように指定したURLでコールフローの指示を探します。 応答URLにイベントウェブフックを送信します。 イベントURLにイベントウェブフックを送信します。

次に、ここまでにやったことがすべて機能しているか確認してみましょう。その番号に電話して、挨拶が聞こえるかどうか確認してください。もし聞こえるなら、他の人に電話してもらい、おしゃべりを楽しんでください。

最初はうまくいかなくても心配しないでください。次のステップは、何が起こっているのかを確認できるようにイベント処理を構築することです。

コールイベントの処理

物事を単純にするために、アプリケーションはそのイベントURLを/event.php-そして、もしあなたがすでにこれをテストしたのであれば、失敗したリクエストがそこに到着するのを見たでしょう。

単純なイベント・ハンドラを作成するには、ファイル public/event.phpを作成し、以下のコードを追加する:

<?php

$post_params = json_decode(file_get_contents("php://input"), true);
$input_params = $_GET;

if (is_array($post_params)) {
    $input_params = array_merge($input_params, $post_params);
}

if (isset($input_params['status'])) {
    error_log("Status: " . $input_params['status']);
}
error_log("Event data: " . json_encode($input_params));

イベントURLには GETまたは POSTリクエストを使用するようにイベントURLを設定することが可能です!非常にシンプルで、データを error_logこの例で行ったようにローカルの PHP ウェブサーバを使用している場合は、 ウェブサーバプロセスの出力にイベントが表示されます。実際のアプリケーションでは、イベントのURLをもっと正式なものにリンクすることができます。

パーティーの電話会議を始める

まだ試していない方は、Vonageの番号に電話してみてください。そして、お友達やご家族、同僚にも同じようにお誘いください。通話中のイベントが表示されます。 event.phpに届き、様々な通話が応答され、リクエストが answer.php.

次の一手は?

次にやりたいことがいくつかあるだろう:

  • NCCOのドキュメント NCCOドキュメント通話を録音したり、保留音楽を再生したり、特定のモデレーターを割り当てたりする方法については、NCCOのマニュアルを参照してください。

  • このプロジェクトのコードを見る GitHub.

結論

このチュートリアルでは、Vonage Voice API を使って PHP による電話会議を作成しました。Voice アプリケーションを設定し、着信コールの webhook を処理し、複数の発信者を同じ会話に参加させるために NCCO を返しました。

ここから、通話録音、司会者の割り当て、保留音楽の再生、会議室名の動的生成などを追加して、このプロジェクトを拡張することができます。このワークフローを メッセージAPIと組み合わせてリマインダーを送ったり 認証を統合することもできる。

ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。

最新の開発者向けニュース、ヒント、イベント情報をお届けします。

シェア:

https://a.storyblok.com/f/270183/372x373/36054b72d0/julia-biro.png
Julia Biroデベロッパー・アドボケイト

Juliaは、チュートリアル、ガイド、実用的なリソースを作成することで、仲間の開発者に力を与えることに尽力しています。アウトリーチと教育のバックグラウンドを持つ彼女は、テクノロジーをより身近なものにし、開発者の経験全体を向上させることを目指しています。地域のコミュニティイベントでもよく見かける。