Twilio CLI 使ってみた

こんにちは、@24guchiaです。

TwilioはAPIでいろいろな機能が提供されていますが、
実はCLI(Comman Line Interface)が下記Githubで目下実装中です。
https://github.com/twilio/twilio-cli

今回はTwilio CLIを試してみました。
先に結論から書くと、かなり便利で気に入りました。
tabキーによるオートコンプリート機能、
統一されたコマンドとオプション書式、
わかりやすいhelpオプション、shellファイルに組み込みやすい点など
こういうのがほしかったという所感です。

なお、Twilio CLIは現在プレリリース版で正式版ではないので、
プロダクトに組み込むかどうかは各自でご判断ください。
また、コマンドの結果などは、執筆したときの内容です。

やりたいこと

APIの戻り値の実物を見たいときに、
毎回TwilioのAPIで検索して(意外と検索しても該当のページに辿り着きづらい・・・)、
curlコマンドをコピーして、アカウント情報を管理コンソールから探して、
コピペしてと手順がかなり面倒で、消耗していました。
そういえば、Twilio CLIあったなと思い、試してみることにしました。

今回はあるCall Sidを元にCLIで検索をしてみます。

インストール

READMEに書いてあるので、コピペします。

brewだと、1回目にzipのダウンロードに失敗したけど、
もう一回実行したらインストールできました。
npmだと、1回で問題なくインストールできました。

インストール後やること

ログインする

twilio loginを実行すると、
プロジェクト名、アカウントSID、Auth Tokenが求められるので、入力します。

オートコンプリートを有効にする

twilio autocompleteを実行すると、
オートコンプリート情報をbash profileに設定するためのコマンドが表示されます。
表示されたコマンドをコピペして、実行します。

twilioと入力して、tabキーを2回押すと使えるコマンドが
バーっと出ますが、1000以上あるので、もう少し絞れるように調べます。

ざっくりできることを調べる

twilioと入力すると、下記が出ます。

apiを探す

今回はCall Sidを元に、callの検索をしたいので、callのコマンドを探します。
ちょっと分かりづらいのですが、callのコマンドは
api:core:callsの下にいます。

twilio api:core:callsと入力し、tabキーを押すと、
オートコンプリートされるので、使っていて感触が良いです。

fetchがあるので、これを使って探してみます。

Call Sidを元に通話を探す

fetchで探せそうだけど、Call Sidの渡し方がわからないので、
helpを出してみます。各コマンドに—-helpをつけると
説明が見れるので、付けてみましょう。

--sidをつければ良さそうです。

取れました!けっこう見やすいです。
ただこれだと、curlで取得した結果より情報が少ないです。
https://www.twilio.com/docs/voice/api/call?code-sample=code-fetch-a-call&code-language=curl&code-sdk-version=json

しかし、その問題もアウトプット形式をjson形式に変えると
curlと同様の結果が返ってきます。
アウトプット形式をjson形式に変えるのは、-o jsonとつければOKです。
実際にやってみると下記のような結果が返ってきます。

完璧ですね。

curlとの違い

結果同じなら、curlコマンドでもよくね?となりますが、
Twilio CLIを使うメリットは下記だと考えています。

  1. セキュリティがcurlより強固
  2. コマンドがcurlより短い

セキュリティがcurlより強固

CLIはloginコマンドでAuth Tokenを一度入力し、
クレデンシャルを作った後、廃棄されます。
そのため、Auto Tokenを見せたくないメンバーに伝える必要がなく、
サーバに侵入されたとしてもAuth Tokenは保持されないため、
漏洩のリスクが少なくできます。

curlコマンドだと平文で使うことになり、
historyで辿られたり、shellファイルなどに残ってしまうため、
Account SidとAuth Token両方漏洩のリスクがあります。
この2つを取られてしまうと、勝手に電話やSMSを送られるなど、
相当なリスクになってしまいます。

APIを実行結果と、各種Linuxコマンドを組み合わせて
shellファイルなどを作る場合はCLIのほうがおすすめです。

コマンドがcurlより短い

CLIだと、Account SidもAuth Tokenも不要です。
そのため、入力するコマンドが短くできます。
比較すると下記の様になります。

まずは、CLIでcallをfetchするコマンドです。
twilio api:core:calls:fetch --sid CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

次に、curlでcallをfetchするコマンドです。
curl -X GET 'https://api.twilio.com/2010-04-01/Accounts/ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/Calls/CAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.json' -u ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:your_auth_token

CLIのほうがかなり短いですね。
毎回Account SidやAuth Tokenを入力しなくていいだけで、
かなり楽になります。

まとめ

触ってみた所感、かなり好感触。
Linuxコマンドなので、パイプでTwilio以外のいろんなコマンドと
連携しやすいのが非常に魅力的です。

これを使って何を作るかは皆さまのアイデア次第です。
皆さまが何を開発されるのか、目にするのが待ちきれません!