Twilio Assets上にPrivateで登録したmp3ファイルをFunctionsを使って再生する
はじめに
みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。
今回は、タイトルにある通り、Twilio Assets上にプライベート属性で保存したmp3ファイルを、Functionsから呼び出す方法をご紹介します。
プライベートなAssetsとは
Twilio Assetsは、Twilioが提供しているストレージサービスで、mp3ファイルに限らず、様々なファイルをアップロードしておくことができます。
Assets上のファイルはTwilio上に保存されているため、Twilioからの呼び出しが早いというメリットがありますが、一方で通常の保存方法では、URLさえわかってしまうと外部から自由にアクセスできてしまうというデメリットがあります。
これを解決するために、Assets上にプライベート属性でファイルを保存することができます。
アップロード時に、MAKE PRIVATEにチェックを入れるとプライベート属性として保存されます。
プライベート属性として保存したファイルについては、Twilio Functionsから呼び出すことができますが、今回はmp3ファイルを呼び出して、再生するためのFunctionをご紹介します。
コーディング
さっそくコードをご紹介します。
const fs = require('fs');
exports.handler = function(context, event, callback) {
const assets = Runtime.getAssets();
const mp3AssetPath = assets['levelup.mp3'].path; // Assets上に保存したファイル名を指定
const stat = fs.statSync(mp3AssetPath);
const response = new Twilio.Response();
response.setStatusCode(200);
response.appendHeader('Content-Type', 'audio/mpeg');
response.appendHeader('Content-Length', stat.size);
response.setBody(fs.readFileSync(mp3AssetPath));
callback(null, response);
};
4行目にプライベート属性として保存したmp3ファイル名を指定してください(この例では、levelup.mp3
)。
このコードを使って、Functionsを作成します。
もしTwilio StudioなどのTwilio内部から呼び出すのであれば、ACCESS CONTROLにチェックを入れておくことで、外部から直接呼び出されないようにできます。
たとえば、Studioから呼び出すときは、Say/Playウィジェットなどを使って、Play a Messageを選択、URL OF AUDIO FILEに先程のFunctionsのURLを指定すればOKです。
まとめ
プライベート属性のAssetsが、外部からのアクセスをできなくする目的には向いていますが、一方で登録できるファイルが10個までという制限があります。
と、ここまで記事にしてから気がついた。
本家のドキュメントに今回の記事と全く同じ内容が載っていた・・。
https://jp.twilio.com/docs/runtime/assets
Twilio(トゥイリオ)とは
https://cloudapi.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。
Author And Source
この問題について(Twilio Assets上にPrivateで登録したmp3ファイルをFunctionsを使って再生する), 我々は、より多くの情報をここで見つけました https://qiita.com/mobilebiz/items/7958a0e2fa6c05c35eb9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .