Raspberry Pi 3でtwilioを使ってSMSメッセージの送信」でtwilioを使ってSMSメッセージを発信しましたが、今回は、Twilioの電話番号を購入します。また、購入したTwilioの電話番号を使って、PHP言語により発着信の処理を行います。

Twilioの電話番号の購入

Twilioで電話番号の購入するために、「Twilio for KDDI Web Communications」からログインして、「#電話番号」の「番号を購入」をクリックすると次の画面が表示され、購入する番号が設定できます。

購入する番号の設定

「COUNTRY」を「Japan」にして「機能」の「Voice」をクリックして検索ボタンを押すと次の画面が表示され、電話番号の一覧が表示されます。

電話番号の一覧

希望する電話番号の購入ボタンを押して購入すると、次の設定画面が表示されます。

電話設定画面

Twilio PHP Helper Libraryのインストール

PHP言語を使ってTwilioのAPIとやり取りするためには、Twilio PHP Helper Libraryが必要になります。作成したPHPコードと同じディレクトリーにSDKのダウンロードファイルを展開し、SDKに同梱された autoload ファイルをPHPコード内で require します。

Twilioの電話番号で電話を受けると音声メッセージを再生

購入したTwilioの電話番号に発信者がダイアルしたときに音声メッセージを再生するため、通話着信時のWebhookにより、Webアプリケーションにリクエストを送信するようその番号を設定します。 通話着信時のWebhookは、サイドメニューの電話番号を選択し、表示されたManageNumbersボタンを押すと、購入した電話番号が表示されるので、その電話番号をクリックすると次の画面が表示されます。この画面上の「通話着信時のWebhook」欄に、下記で作成するPHPコード「incom.php」のURLを設定します。

通話着信時のWebhook

次のようなPHPコード「incom.php」を作成すると、サーバに設置して上記で設定した通話着信時のWebhookのURLから呼び出されます。sayメソッドにより、着信時に流したい音声メッセージを記述します。

require '/xxxx/twilio-php-master/Twilio/autoload.php';
use Twilio\Twiml;

$response = new Twiml;
$response->say("トモソフトでございます", ['language' => 'ja-jp']);

echo $response;

固定電話もしくは携帯電話から、購入したTwilioの電話番号に電話を掛けると、音声「トモソフトでございます」が流れます。

Twilioの電話番号に着信した電話の転送

Twilioの電話番号に着信した電話を他の電話機に転送します。「通話着信時のWebhook」欄に、下記で作成するPHPスクリプト「forward.php」のURLを設定します(使用する画面については上記を参照してください)。

転送用のPHPコード「forward.php」を次に示します。dialメソッドのcallerIdに購入したTwilioの電話番号を設定し、numberメソッドに相手電話番号を設定します。なお、Twilioからのリクエスト中のすべての電話番号はE.164形式となります。たとえば、「080-1234-5678」は「+818012345678」となります。

<?php
require '/xxxxx/twilio-php-master/Twilio/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$dial = $response->dial(['callerId' => 'xxxx']);
$dial->number('xx');

echo $response;

固定電話もしくは携帯電話から、購入したTwilioの電話番号に電話を掛けると、登録された電話機に電話が転送されます。

Twilioの電話番号から電話を掛ける

Twilioで購入した電話番号からの他の電話機に電話をかけます。電話をかけるためのPHPコード「call.php」を次に示します。calls->createメソッドにより、呼び出し元、呼び出し先、音声メッセージを設定します。

require '/xxxx/twilio-php-master/Twilio/autoload.php';
use Twilio\Rest\Client;
 
$account_sid = 'ACxxxx';  
$auth_token = 'xx';  
$client = new Client($account_sid, $auth_token); 

$call_from = "xxx";
$call_to = "xxx";
$calls =  $client->calls->create( $call_to, $call_from, array( 
        'Url' => "http://demo.twilio.com/docs/voice.xml",                 
  ));

作成したPHPコード「call.php」をサーバにアップロードして、そのURLをブラウザからアクセスすると、PHPコード「call.php」で記述された相手電話機に着信し、受けると、「http://demo.twilio.com/docs/voice.xml」で設定された音声が相手電話機に流れます。