Twilio CLIのAssetsプラグインをリリースしました

July 01, 2021
レビュー担当者
Ruma Nair
Twilion

Assetsプラグインを発表 - Twilio CLIを使ってアセットをアップロード・管理

この記事はTwilio Developer AdvocateのPhil Nashこちらで公開した記事(英語)を日本語化したものです。

Twilio CLIは、Twilioの開発者にとって便利なツールです。 コマンドラインから手軽にTwilioのすべてのAPIにアクセスできるだけでなく、電話番号管理や、ローカル環境でWebhook URLにワンステップでアクセスできるコマンド、プラグインシステムなど数多くの機能を提供します。CLIプラグインはCLIのコア機能を拡張し、Flexプラグインの構築と管理アクセストークンの生成Twilio Functionsを使った構築、そして今回のAssetsプラグインによるTwilio Assetsサービスへのアセットのアップロードなどを可能にしてくれます。

この記事では、Assetsプラグインの使い方をご紹介した上で、このプラグインを作った経緯を詳しくお話しします。

Assetsプラグインとは?

Assetsプラグインでは、画像や音声ファイルなどのアセットの保管先として使用できるAssetsサービスを作成し、アセットのアップロードや管理が行えます。作成したAssetsサービスはTwilioのアプリケーションで使用できます。たとえば、音声ファイルをアップロードして、Twilio Voiceを利用した音声通話中に<Play>動詞で再生するファイルとして使用したり、MMSでユーザーに送信する画像WhatsAppメディアメッセージをアップロードしたりすることができます。

Assetsプラグインの使い方

AssetsプラグインはTwilio CLIプラグインなので、まずはTwilio CLIのインストールが必要です。Node.jsがインストール済みあれば、以下のコマンドでCLIをインストールしてください。

npm install -g twilio-cli

詳細や別のインストール方法については、Twilio CLI Quickstartを参照してください。

CLIのインストールが完了したら、Twilioアカウントにログインします。

twilio login

次にAssetsプラグインをインストールします。

twilio plugins:install @twilio-labs/plugin-assets

プラグインの初期化

Assetsプラグインには、inituploadlistの3つのコマンドがあります。まずはinitコマンドを実行します。

twilio assets:init

ターミナルの写真。コマンド twilio assets:init を実行した結果、サービスSID、環境SID、ドメイン名が表示される。

これにより、Functions & Assets APIを呼び出して新しいサービスを作成し、後ほど使用するためサービスに関する詳細を保存します。このサービスは、アセットをアップロードまたはアクセスできる保管先として、プラグインで使用されます。

アセットのアップロード

これでプラグインの初期化が完了しました。まず1つ目のアセットをアップロードしましょう。

twilio assets:upload path/to/file

ターミナルの写真。twilio assets:upload ~/Desktop/yay.gifコマンドを実行した結果、アセットのSID、パス、URL、可視性が表示されている。

アセットのアップロードが完了すると、アセットのURLを含む詳細が表示されます。そのURLをブラウザで開き、アセットを確認およびダウンロードできます。

Protectedアセットのアップロード

Twilio Voiceの通話中に使用できるが、ブラウザーなどからアクセスできないアセットを使用したい場合、Protectedアセットとしてアップロードできます。 Protectedアセットは、すべてのTwilio webhookが実装しているX-Twilio-Signatureヘッダーで署名されたリクエストにのみ応答します。このProtectedアセットをアップロードするには、--protected フラグを使用します。

twilio assets:upload path/to/file --protected

ターミナルの写真。twilio assets:upload ~/Desktop/protected.gif –protected`というコマンドを実行した結果、アセットのSID、パス、URL、可視性が表示され、保護されていることがわかる。

アセットをリストアップする

プラグインの今回のバージョンの最後のコマンドは、保管先にアップロードしたすべてのアセットをリストアップする方法です。

以下のコマンドを実行して下さい。

twilio assets:list

ターミナルの写真。twilio assets:listコマンドを実行した結果、アップロードされた2件のアセットが表示されている。

これまでにサービスにアップロードしたすべてのアセットのSID、URL、可視性などを示す一覧が表示されます。Twilio CLIプラグインが提供している機能ですので、任意のプロパティをコマンドに渡し情報を出力できます。

twilio assets:list --properties sid,url,date_created

また、すべてのプロパティをJSONで出力できます。

twilio assets:list -o json

プラグインの現状の機能については以上です。 ご意見ご要望などありましたら、Twilio Serverless ToolkitレポジトリにIssueをご投稿ください。またご自身で機能を作ってみたい方からのプルリクエストもお待ちしています。

なぜAssetsプラグインが必要なの?

Assetsプラグインは、Twilio Functions and Assets APIを抽象化して、静的なアセットを簡単にアップロードして利用できるようにするものです。

Twilio Functions and Assetsは、機能やアセットのコレクションを作成し、それらをまとめて完全なアプリケーションとしてデプロイする際に非常に便利です。Twilio Functions and Assets APIには以下の機能が含まれます。

  • 下記の全てのコンセプトを包括するService
  • テスト用と本番用で別々のサブドメインにアプリケーションを展開できるEnvironment
  • FunctionAssetリソース
  • 関数やアセットの詳細を含むFunction versionAsset version
  • 関数からアクセスできるVariable
  • 関数、アセット、変数、npm dependenciesのバンドルであるBuild
  • BuildとEnvironmentの組み合わせで、関数やアセットを特定の環境で実行するためのDeployment

上記の機能はTwilio Funtions and Assets上で構築するツールやインテグレーションのための基盤となります。しかしTwilioで一般的なアプリケーションを構築する際には、これらのAPIを直接使用することはないでしょう。 Twilio Serverless Toolkitは、これらのAPIの上に構築されており、Twilio Runtimeにアプリケーションを構築してデプロイしたい場合に使用を推奨します。Twilio Serverless Toolkitはコンテンツのアップロード、ビルドの作成、ビルド環境へのデプロイなどのプロセスを抽象化するコマンドを提供します。

Assetsプラグインはこれらをさらに抽象化して、Assetサービスをコンテンツの保管先として手軽に使用できる機能です。アセットをアップロードする際には、関数や変数は必要ありません。twilio assets:upload FILEコマンドが新しいアセットを作成し、コンテンツを新しいアセットバージョンにアップロードし、サービス内のすべてのアセットを新しいビルドに集め、そのビルドを環境にデプロイするため、開発者はこれらの作業を行う必要がありません。Assetsプラグインを使えば、これらの作業をすべて抽象化し、1つのコマンドでアセットをアップロード可能です。

Assetsプラグインを使用しない方が良い場合は?

Flexプラグインを作成する場合、Assetsプラグインを使用してプラグイン用のアセットをアップロードすることは推奨されません。代わりに、Flex Plugins CLIを使用してプラグインを使ってリリースする必要があります。

ぜひプラグインをお試しいただき、ご意見・ご感想をお寄せください。

新しいAssetsプラグインのご紹介は以上です。ぜひプラグインを使うことで、ターミナルからTwilioのインフラに静的アセットをアップロードしてみてください。またプラグインを利用してTwilioアプリケーションでアセットを使用したり、画像を共有してみてはいかがでしょうか。

Assetsプラグインはオープンソースとして開発されており、Twilio Serverless Toolkitの一部です。また、GitHubですべてのコードを確認することができます。バグレポートや機能要望がありましたら、Issueを作成、またはプルリクエストをお送りください。その他のフィードバックがありましたら、philnash@twilio.comまでご連絡ください。