Twilio を使ってアクセス制限(Protected)をかけた MP3 ファイルを再生


はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。

今回は、Twilio を使ってアクセス制限をかけた MP3 ファイルを再生します。

従来の Twilio Assets の Private バージョンでは、最大10個までしかファイルが保存できないため、あまり実用的ではありませんでした。

Twilio Assets上にPrivateで登録したmp3ファイルをFunctionsを使って再生する

一方、Runtime API を使った Assets では、Protected バージョンが利用でき、かつ最大1,000個までのファイルがアップロードできます。

Protected バージョンで保存されたコンテンツは、アクセスする際に X-Twilio-Signature ヘッダが必要になります。

そこで今回は、この API バージョンを使って、アクセス制限がかかった MP3 ファイルを使ったサンプルプログラムをご紹介します。

準備

本記事を実施するにあたって、以下の環境が必要です。

  • Twilio アカウント : こちらから作成しましょう
  • Twilio CLI のセットアップ : こちらの記事を参考にしてください
  • Twilio CLI Serverless plugins : こちらの記事を参考にしてください
  • VSCodeなどのエディタ

インストール

適当なディレクトリに移動します。

$ git clone https://github.com/mobilebiz/protected-mp3.git
$ cd protected-mp3

環境の設定

.env.example.env にコピーして、API Key と API Secret を設定します。

API Key については、こちらで作成することができます。

音源の準備

assets フォルダに、再生したい MP3 ファイルを入れます。

このとき、ファイル名と拡張子(.mp3)の間に、.protected を入れてください。この設定により、MP3 ファイルが Protected バージョンとして保存されます。

再生用 TwiML の準備

今回はすでに、functions フォルダ内に play.protected.js を用意してあります。

こちらを開いて、3行目にある MP3 ファイルの名前を、上で準備した MP3 ファイルに置き換えます。このとき、.protected の指定は不要ですので、気をつけてください。

デプロイ

以下のコマンドを使って、Twilio 上にデプロイします。

$ twilio serverless:deploy --force

着信時の設定

ここまでの作業で、アクセス制限のかかった MP3 ファイルの再生準備が完了しました。

Twilio 管理コンソールにログインして、購入済み電話番号に先程デプロイした play Function を指定します。

テスト

設定した電話番号に電話をして、MP3 ファイルが再生されることを確認します。

また、MP3 ファイルや、再生用 Function をブラウザで直接開いても認証エラーになることを確認します。

Unauthorized - you are not authenticated to perform this request

まとめ

今回のプログラムでのポイントは、MP3 ファイルや Functions を保存するときに、ファイル名に .protected を挟むことです。

このようにすることで、Twilio 内部からの Webhook ではアクセスできますが、外部からのアクセスに対しては、 X-Twilio-Signature ヘッダが必要になります。

もし、外部のプログラムから Protected なファイルにアクセスしたい場合は、以下のサイトを参考にしてください。

Twilio Functionsを外部からセキュアに呼び出す

MP3の著作権について

本プログラムで使用している MP3 ファイルは、MusMusで公開されているものです。
利用規約については、こちらをご覧ください。


Twilio(トゥイリオ)とは

https://cloudapi.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

自己紹介  
高橋克己(Katsumi Takahashi) 自称「赤い芸人
グローバル・インターネット・ジャパン株式会社 代表取締役
株式会社KDDIウェブコミュニケーションズ Twilio事業部エバンジェリスト

2001年より大手通信事業者の法人サービスの教育に携わり、企業における電話のしくみや重要性を研究。2016年よりTwilio事業部にジョインし、Twilioを使ったスマートコミュニケーションの普及活動を精力的に行っている。
2019 Twilio Champions