https://a.storyblok.com/f/270183/72172/8f07f41861/record-a-phone-message.png

PHPで電話メッセージを録音する

最終更新日 April 19, 2021

所要時間:5 分

電話のメッセージを録音することは、本格的なボイスメールシステムを構築するための重要な第一歩です。このチュートリアルでは、PHPとNexmoコマンドラインインターフェイスを使って、着信を録音できる電話番号をセットアップするのに必要な手順を説明します。

このチュートリアルのコードは PHP ビルディングブロックセクションにあります。

前提条件

必要なものは以下の通り:

あなたが作成するコードは、PHP 5.6以上のバージョンで動作することが期待されています。

Nexmoを管理する観点から、私たちが推奨する方法は、コマンドラインツールを使用することです、 Nexmo-CLI.

ローカル・マシン上のコードを外部からアクセスできるようにするため、ここでは ngrokを使うので、これもインストールしておいてほしい。

電話メッセージの受信と録音

Slimをまだインストールしていない場合は、作業フォルダにインストールすることから始めます。

composer require slim/slim "^3.9"

この例で必要なPHPファイルは1つだけです。 index.phpという名前の PHP ファイルを作成し、お好みのエディタで開いてください。

以下のコードを index.php:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

$app = new \Slim\App;

$app->get('/webhooks/answer', function (Request $request, Response $response) {
  $uri = $request->getUri();
  $ncco = [
      [
          'action' => 'talk',
          'text' => 'Please leave a message after the tone, then press #. We will get back to you as soon as we can'
      ],
      [
          'action' => 'record',
          'eventUrl' => [
              $uri->getScheme().'://'.$uri->getHost().'/webhooks/recording'
          ],
          'endOnSilence' => '3',
          'endOnKey' => '#',
          'beepOnStart' => true
      ],
      [
          'action' => 'talk',
          'text' => 'Thank you for your message. Goodbye'
      ],

  ];

  return $response->withJson($ncco);
});

?>

ここで何が起こっているのかを見ていこう:

  1. 着信コールは /webhooks/answerその後、NCCOが引き継ぐ。

  2. NCCOが発信者にメッセージを読み上げる。

  3. その後、発信者のメッセージが録音される。

  4. 記録データは新しい eventUrlに渡される。 /webhooks/recording.

  5. メッセージを受け取ったことを知らせるメッセージが流れ、NCCOは電話を切る。

この関数でほとんどの処理を行うのは $ncco配列であることに気づくだろう。

NCCOはNexmo Call Control Objectの略で、Voice APIコールのフローを制御するために使用するJSON配列です。

NCCOの機能をより深く掘り下げ、アプリの機能を拡張する方法については リファレンス・ドキュメント.

録音メッセージを扱う

上のコードでは、NCCOはレコード・アクションに eventUrlが設定されている。 /webhooks/recording.ここに、録画されたファイルの場所など、録画に関するすべてのデータが送られる。

しかし、今は存在しない。 /webhooks/answerルートの下、そして $app->run();この新しいコードを追加する:

$app->post('/webhooks/recording', function (Request $request, Response $response) {
    $params = $request->getParsedBody();
    error_log($params['recording_url']);
    return $response->withStatus(204);
});

このルートとその機能について説明しよう:

  1. 録画に関するあらゆる情報を含むJSONオブジェクトを含むPOSTリクエストを受け取る。

  2. 録画されたURLを記録する。

  3. ステータス204で応答するので、NCCOは何度も何度も送信しようとしない。

コードの実行

これでセットアップが完了し、コードを実行する準備ができた。ターミナルで以下のコマンドを入力すれば実行できる:

php -t . -S localhost:3000

これによりサーバーが起動し、トラフィックはすべて http://localhost:3000へのトラフィックを index.phpファイルにルーティングします。

ngrokでアプリを公開する

このコードを正しくテストし、Nexmoがあなたのアプリにリクエストできるようにするには、ローカルマシンで動いているコードを世界に公開する必要がある。

ngrokはそのための我々の選択したツールである。 ツールの紹介を用意しましたので、使ったことのない方はそちらをお読みください。

ngrokをインストールしたら、以下を実行する。 ngrok http 3000を実行し、アプリケーションをインターネットに公開する。生成された ngrok次のステップでNexmoに提供する必要があるので、生成されたURLをメモしておいてください。 http://45hfh5.ngrok.io).

番号を購入し、アプリを接続する

コードが完成し、アプリが世界中に公開されたら、今度は自分で電話番号を取得し、アプリをそれにリンクさせる必要がある。

Nexmo CLIで番号を購入することから始めます:

nexmo number:buy --country_code GB

別の国番号を使用することもできます。次のステップで必要になりますので、購入した番号をメモしておいてください。

次に、Nexmo CLIを使ってアプリケーションを作成します。 <your_ngrok_url>をngrokが新しく生成したURLに置き換えてください:

nexmo app:create "RecordMessage" /webhooks/answer /webhooks/events

返ってくるレスポンスには、巨大な秘密鍵の出力と、その上の アプリケーションID.

アプリケーションIDをメモしておいてください: e7b25242-77a1-42cd-a32e-09fbbcb375f4をメモしておき、このコマンドを使って新しい番号にリンクさせる:

nexmo link:app

これでコードが番号に接続されました!購入した番号にダイヤルし、電話の向こうで魔法のように話しかけられる手順に従って、試してみてください!

メッセージの録音が終わったら、コンソールの出力を確認してください。そこには recording_url.これをダウンロードしたい場合は 録音をダウンロードするビルディングブロックを見て、あなたのアプリにコードを追加してください。

結論

メッセージを録音する方法がわかったら、このコードをもっと本格的なボイスメールシステムに拡張することができます。 recording_urlをデータベースに書き込み、ユーザーがメッセージを聞けるようにする簡単なフロントエンドを追加することで、このコードをより本格的なボイスメールシステムに拡張することができます。

また、アプリを拡張して、新しいメッセージが録音されたときに誰かにSMSメッセージで通知を送ったり、録音をあらかじめ設定したEメールアドレスにEメールで送信したりすることもできる。

これまで同様、これは始まりに過ぎません。質問をしたり、あなたが作ったものを共有したりするのは自由です。 NexmoコミュニティSlackチャンネルまたは直接 devrel@nexmo.com.

シェア:

https://a.storyblok.com/f/270183/250x250/d0444194cd/martyn.png
Martyn Daviesヴォネージの卒業生

元Vonage開発者教育ディレクター。クリエイティブ・デベロッパー、プロダクト・マネージャー、ハック・デイ・オーガナイザーの経歴を持つマーティンは、放送局や大手レコード会社での勤務を経て、2012年よりテクノロジー・アドボケイトとして活動している。世界中の開発者を教育し、力を与えている。