PHP向けProgrammable Voiceクイックスタート
必要なものはコード数行のみ。Twilio Programmable Voiceを使用し、PHP webアプリケーションから通話の発着信を行うことができます。
このPHP Voiceクイックスタートでは、TwilioのVoice REST API、Twilio PHPヘルパーライブラリー、ビルトインPHP開発Webサーバー、ngrokを使用し、ローカルサーバーをTwilioに公開することにより、発着信を行う方法について説明します。
Composerパッケージマネージャーにより依存関係を管理します(Composerを使用しない場合はComposerを使用しないPHP Voiceクイックスタートをお試しください)。
このクイックスタートでは、以下について説明します。
- Twilioにサインアップし、音声対応のTwilioの電話番号を初めて取得する
- Composerを使用し、PHPの前提条件を確認しインストールする
- 通話を発信し、MP3を再生する
- 通話の着信・応答時に、Text to Speechを使用し発信側に対しメッセージを読み上げる
ビデオもご用意しています。PHPにより通話の発着信を行う方法(YouTube)をご覧ください。
Twilioにサインアップし電話番号を取得する
Twilioアカウント、音声対応のTwilio電話番号をすでにお持ちの場合には、ログインし、次のステップに進んでください。
無料のTwilioトライアルアカウントには、こちらからサインアップできます。
- サインアップの際に、お客様個人の電話番号を確認させていただきます。これにより、Twilioはお客様の本人確認を行うことができ、お客様はトライアルモード中にTwilioアカウントからご自身の電話に発信することもできます。
- 電話番号が認証されると、プロジェクトの作成を求められます。このチュートリアルでは、"Learn and Explore"(学びながら探検)テンプレートを使用します。プロジェクトに名前を付けるか、"skip remaining steps"(残りのステップを省略)をクリックし、デフォルト値で続行します。
- プロジェクト作成フローを終えると、Twilio Consoleにプロジェクトダッシュボードが表示されます。このダッシュボードを使用し、アカウントSID、認証トークン、Twilio電話番号などにアクセスできます。
Voice機能付きのTwilio電話番号をまだお持ちではない場合には、ご購入いただく必要があります。[Buy a Number](番号を購入する)ページに移動し、["Voice"]ボックスをチェックし、["Search."](検索)をクリックします。
使用可能な電話番号とその機能のリストが表示されます。好みの番号を探し、["Buy"](購入)をクリックしアカウントに追加します。
PHPとTwilio PHPヘルパーライブラリーをインストールする
作業用ディレクトリに、すでにPHPとTwilio PHPヘルパーライブラリーがインストールされている場合、このステップは必要ありません。このステップを省略し、最初のテキストメッセージ送信に移動してください。
初めての音声通話発信のために、PHPが設定されていること、TwilioのPHPヘルパーライブラリーをインストールできることを確認します。
PHPを使用しWeb開発を行う場合、パッケージ管理にComposerを使用することを強くお勧めします。このクイックスタートでは、PHPヘルパーライブラリーのインストールにComposerを使用します。(Composerを使用しない場合は、PHPヘルパーライブラリーのページにある手動のTwilio PHPインストール手順をご覧ください)。
PHPをインストールする
MacまたはUnix系のマシンの場合、PHPがすでにインストールされている可能性があります。ターミナルで以下を実行します。
php --version
PHPがインストールされていない場合は、PHPインストール手順に従います。
Windowsマシンの場合は、PHPインストールの公式のPHPチュートリアルに従います。
このクイックスタートでは、PHP 7.xバージョンの多くが機能しますが、サポートされているPHPリリースにご注意ください。Web開発を行う際、PHPバージョンを、セキュリティアップデートが適用されるバージョンに必ず更新してください。
パッケージ管理のためにComposerをインストールする
Composerは、PHP Web開発におけるデファクトスタンダードのパッケージマネージャーです。このチュートリアルでは、Composerが必要になります。Composerをインストールしない場合は、Composerを使用しないPHP Voiceクイックスタートをお試しください。
Twilio PHPヘルパーライブラリーをインストールする
ここでTwilio PHPヘルパーライブラリーをインストールする必要があります。
まず、このクイックスタートを実行するディレクトリに移動し、以下のいずれかの方法によりヘルパーライブラリーをインストールします。
ターミナルから、以下のコマンドを実行します。
composer require twilio/sdk
または、composer.json
という名前のファイルを代わりに作成できます。そのファイルに以下を追加します。
{
"require": {
"twilio/sdk": "^5.0"
}
}
次に以下を実行します。
composer install
Composerは最新の5.xバージョンのTwilio PHPヘルパーライブラリーを取得します。
PHPを使用し通話を発信する
PHPとPHPヘルパーライブラリーがインストールされたため、1回のAPIリクエストにより通話を発信できるようになりました。make_call.php
という新しいファイルを作成し、このコードサンプルを入力または貼り付けします。
コードを実行すると、引数として渡された2つの番号の間で通話が開始されます。「From」と「To」の番号を示すための2つの引数を追加しました。これらは以下のようにマッピングされます。
- (From)/
twilio_number
: お客様が購入したTwilioの電話番号 - (To)/
to_number
: 通話する番号(ご自身の携帯電話番号でも可)
アレイ内のurl
引数はTwiMLを指します。TwiMLは、Twilioが内部的に使用する言語です。音声通話のシーケンスなど、アクションの開始や応答に使用されます。この特定のTwiMLは、音声合成機能によりTwilioにメッセージを読ませ、その後「To」のto_number
の番号に向けてMP3を再生します。
このコードを実行する前に、アカウントに固有のいくつかの値で置き換える必要があります。
プレースホルダの認証情報を自分のものに置き換える
account_sid
とauth_token
のプレースホルダ値を、ご自身のTwilioアカウントの認証情報に置き換えます。
これらを探すには、https://www.twilio.com/consoleにアクセスし、ログインします。このページでは、お客様固有のAccount SID
とAuth Token
を確認できます。「目」のアイコンをクリックすると、Auth Token
が表示されます。
make_call.php
を開き、account_sid
とauth_token
の値をご自身固有の値に置き換えます。
twilio_number電話番号を置き換える
ここまでの間に、音声対応の電話番号を購入するか、お手持ちの番号をご用意されたはずです。その番号を、E.164形式を使用し、twilio_number
変数に貼り付けます。
[+][国コード][エリアコードを含む電話番号]
例: +18005551212
。
to_number電話番号を置き換える
再度E.164形式を使用し、着信側の電話番号に置き換えます。コードを実行した後、通話を受け、コードの結果を聞くことができるよう、ここではご自身の電話番号を使用してください。
Twilioのトライアルアカウントをご使用の場合には、Twilioにより確認された番号のみに通話を発信できます。電話番号は、Twilio Consoleの認証済み発信者IDにより認証できます。トライアルアカウントのすべての制限については無料のTwilioトライアルアカウントでの作業方法に関するガイドを参照してください。
スクリプトを保存し、起動させ、通話の発信をテストします。OSXとUNIX系では、以下のようになります。
php make_call.php
すべての置き換えが正しければ、すぐにメッセージと歌が聞こえるはずです。そうでなくても、決してあきらめずに、コンソールのプロンプトに従いましょう。
PHPを使用し、音声通話を受けて応答する
誰かがお客様のTwilio電話番号に発信すると、Twilioは、お客様のサーバーに対してHTTPリクエストを実行し、通話をどのように処理するかを尋ねます。このクイックスタートでは、送信者に応答し、TwilioのText To Speech機能を使用し通話のお礼を伝えることにします。
このステップでも、Twilio PHPライブラリーを使用します。PHPのビルトイン開発Webサーバーとngrokを組み合わせて使用し、Twilioに通話の処理方法を指示します。
make_call.php
と同じディレクトリに、answer_call.php
という新しいファイルを作成します。次に、以下のコードをコピーし貼り付けるか、入力します。
(注意: 最初の通話を作成した際のディレクトリと同じディレクトリを使用しない場合には、上記のPHPヘルパーライブラリーのインストール手順に従います)
answer_call.php
を保存し、次に以下のコードを使用し、ローカルのPHP開発サーバーを起動します。
php -S localhost:8000
ブラウザーのタブでURL http://localhost:8000/answer_call.phpを開きます。
何も問題がなければ、受信通話に対して読み上げるメッセージと共にXMLがブラウザーに表示されます。必要なコードはこれだけです。完了まであと数ステップです。
次に、このエンドポイントをTwilioに公開します。
TwilioをPHPアプリケーションと通信させる
着信通話にどのように対応するかをTwilioに指示する前に、まずサーバーを外部のネットワークに公開する必要があります。ローカルの開発サーバーは、多くの場合、ローカルネットワークからしかアクセスできません。しかし心配は不要です。サーバーをテストする簡単な方法をご紹介します。
多くのTwilio製品とサービスは、Webhookを使用することによりアプリケーションとやり取りします。たとえば、Twilioが着信通話を受信する際、Twilioは提供された特定のURLにアクセスし、応答の処理方法の手順を探します。answer_call.php
にある小さなコードは、発信者への「応答」に使用する手順の例です。ただし、サーバーを実行する際はローカルのみで公開され、外部のネットワークには公開されません。これを修正する方法を見つけ出す必要があります。
このコードを公開する方法は多数ありますが(コードをホストにデプロイするなど)、Twilioではngrokというツールの使用をお勧めします。ngrokを開始すると、ngrok.ioドメインの一意のURLが提供され、受信リクエストがローカルの開発環境に転送されます。
アーキテクチャは以下のようになります。
まだngrokをご利用でない場合には、ダウンロードページを参照し、お使いのオペレーティングシステムにインストールしてください。
MacまたはLinuxをお使いの場合は、これで必要な作業は完了です。Windowsをご使用の場合は、Windowsにngrokをインストールし、設定する方法についてのガイドを参照してください。ngrokの詳細(と素晴らしいヒント)については、こちらのngrokブログ記事をご覧ください。
ngrokをダウンロードしインストールした後、新しいターミナルタブまたはウィンドウを開き(開発サーバーを実行させたまま)、このコマンドを使用しngrokを起動します。
./ngrok http 8000
次のような出力が表示されるはずです。
この出力から公開URLをコピーし、それをブラウザーに貼り付け、answer_call.php
を追加します。以前と同じXMLが表示されますが、今はインターネットにアクセスできる場所であればどこからでもここにアクセスできるようになりました。
これでサーバーが公開されたため、Twilioにその場所を伝えます。
Webhook URLを設定する
これでサーバーが一般公開されたため、Twilioの電話番号を設定し、新しい着信通話の際に、Webhook URLにアクセスするようにします。
- [Console's Numbers](Consoleの番号)ページに移動します。
- 音声対応の電話番号をクリックします。
- [Voice & Fax](音声とファックス)セクションを探します。[Accept Incoming](着信受け付け)選択項目が[Voice Calls](音声通話)に設定されていることを確認します。デフォルトの[Configure With](設定方法)選択項目には、[Webhooks]、[TwiML]など、必要なものを設定します。
- [A Call Comes In](次で通話を受信)セクションでは、[Webhook]を選択し、使用するURLを貼り付け、
/answer_call.php
を追加します。
変更内容を保存すると、準備完了です。
アプリケーションをテストする
ローカル開発サーバーがまだ稼働中、さらにngrokを実行中であれば、テストを開始できます。
ご自分のTwilio電話番号に通話を発信します。以下が順に実行され、音声が聞こえます。
- ngrokコンソールにHTTPリクエストが表示されます
- 開発サーバーは、コンソールにメッセージを出力します
- 通話が接続されると、メッセージが聞こえます
これで完了です。PHPを使用した通話の発着信を処理できるようになりました。
次のステップ
PHPを使用した通話の発着信に関する基本が理解できました。
このPHPアプリでは、TwiML動詞<Say>のみを使用し、音声合成機能により発信者に向けてメッセージを読み上げました。別のTwiML動詞を使用すると、他のパワフルな構成や通話フローを作成できます。<Record>、<Gather>、<Conference>など、いくつか試してみてください。
詳細については、以下のページをご覧ください。
- PHPを使用し、キーパッド(DTMFトーン)を介しユーザーの入力を収集する
- PHPを使用し、発着信したTwilio Voiceの通話を録音する方法
- PHPを使用し、電話会議を作成する
- Twilio Programmable VoiceのAPIリファレンスドキュメントを読む
- PHPを使用し、進行中の通話を変更する方法を学ぶ
- Twilio Clientを使用し、高品質のVoIP通話機能を、Webアプリやモバイルアプリと連携させる
- PHPを使用し、Twilioアカウントから進行中または完了した通話に関する情報を取得する
- PHPとLaravelを使用し、オペレーター間の通話転送方法をサンプルアプリケーションチュートリアルにより確認する
コミュニケーションの未来を構築。
サポートが必要ですか?
コーディングに関するご質問、ご不明点等ございましたら、お問い合わせからご連絡いただくか、TwilioのStack Overflow Collectiveにアクセスいただくか、Stack OverflowサイトでTwilioタグを検索してください。