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

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

最終更新日 March 18, 2026

所要時間:1 分

今日の記事では、Nexmoを使って電話会議を設定する方法をご紹介します。電話番号を配布し、その電話番号に電話をかけた人全員が同じ電話会議に接続されます。定期的なチームミーティングやその他の電話会議には理想的な機能です。コード例にはPHPを使用し、特定のフレームワークは使用しません。 GitHub.

依存関係を準備する

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.

新しいPHPプロジェクトを開始し Nexmo PHP ライブラリを依存関係として追加します。

composer require nexmo/client

PHPで着信に応答する

この例では、ユーザがNexmo番号に電話をかけ、アプリケーションコードがその着信に応答します。Nexmoは、Nexmo Call Control Object(NCCO)を使用してこれを行います。まず、音声合成による挨拶があり、次にユーザーが電話会議に参加します。

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

<?php

// return an NCCO to greet users and connect them into the conference call

$json = '[
    {
        "action": "talk",
        "text": "Thank you for joining the call today. You will now be added to the conference.",
        "voiceName": "Nicole"
    },
    {
        "action": "conversation",
        "name": "weekly-team-meeting"
    }
]
';

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

この $json変数には、Nexmoのサーバーに返す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を正しく返すかどうか確認してください(cURL、Postman、あるいはブラウザーを使うのもいいでしょう)。

コードを公開する

Nexmoがあなたのアプリケーションに着信を知らせるには、そのアプリケーションに到達できる必要があるので、このコードは一般に公開する必要がある。どこかのサーバーにデプロイするという方法もあるが、開発目的では Ngrokを使ってローカルの開発プラットフォームを公開することを好む。ウェブサーバーを起動したら(私の場合はポート8080)、ngrokを次のように実行する:

ngrok http 8080

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

新しいトンネルを試すには、そのトンネルを経由してアプリケーションを呼び出すことを確認します。 http://localhost:8080をあなたの ngrok https URL に置き換えて、もう一度 /answer.phpにリクエストしてみてください。

電話番号の設定

このセクションでは、CLIツールを使った番号の購入と設定について説明する。お望みであれば、これらの手順を アカウント・ダッシュボード.

まず、電話番号が必要だ。私はイギリスにいるので、国番号として GBを国番号として検索する:

nexmo number:search GB

このコマンドは利用可能な Numbers のリストを返すので、必要なものをコピーして次のコマンドにペーストする:

nexmo number:buy [number]

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

アプリケーションは公開鍵/秘密鍵を使う。この例では単に着信を受けるだけなので、秘密鍵は使わないが、この例では、秘密鍵を private.keyこの例では単に着信を受けるだけなので、秘密鍵は使用されませんが、この例ではそれをどのように保存するかを示しています!アプリケーションを作成するには、名前を付け、いくつかの重要なウェブフック・エンドポイントを設定する必要があります:

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

  • イベントのURLは......次のセクションで作成しよう。 event.phpと呼び、次のセクションで作成しましょうか?

以下はアプリケーションを作成するコマンドで、実行する前にNgrokのURLを置き換えてください!

nexmo app:create PHPConfCall [ngrok_url]/answer.php [ngrok_url]/event.php --keyfile private.key

このコマンドは、作成したアプリケーションのUUIDを出力する。ここでの最後のステップは、このアプリケーションを購入した番号にリンクさせることだ。そのためのコマンドは以下のようになる(ここでもプレースホルダーを適宜置き換えてください)。

nexmo link:app [number] [application UUID]

....うまくいったと思うよ!もしそうなら、他の人に電話してもらい、おしゃべりを楽しんでください :)

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

コールイベントの処理

物事を本当にシンプルにするために、アプリケーションはイベント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リクエストを使用するように設定することが可能です!とてもシンプルで、error_logにデータを書き込むので、この例で行ったようにローカルのPHPウェブサーバーを使用している場合は、ウェブサーバープロセスの出力にイベントが表示されます。実際のアプリケーションでは、イベントの URL をもっと正式なものにリンクすることができます。 音声イベントロガープロジェクトを試してみてください。

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

もしまだ試していないのなら、ネクスモの番号に電話してみてください。そして、友人や家族、同僚を同じように招待してください。に到着した通話中のイベントや、様々な通話に応答した通話が表示されます。 event.phpまた、さまざまな通話が answer.php.

次の一手は?

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

シェア:

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

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