Twilio CLI（API操作編）

:::note alert
2023年5月1日を持ちまして、株式会社KDDIウェブコミュニケーションズのTwilioリセール事業が終了したため、本記事に記載されている内容は正確ではないことを予めご了承ください。
:::

# はじめに

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

前回の「[Twilio CLI（セットアップ編）](https://qiita.com/mobilebiz/items/456ce8b455f6aa84cc1e)」では、Twilio CLIのインストールについて説明をしました。
今回は、CLIを使うと比較的便利な以下の操作をご紹介します。

- 電話番号の購入
- 電話の発信

## 準備

前回の[記事](https://qiita.com/mobilebiz/items/456ce8b455f6aa84cc1e)を参考に、Twilio CLIのセットアップが終了していることを確認してください。


# 電話番号の購入

Twilioでの電話番号の購入は意外と面倒で、現在は Bundles と呼ばれる身分証明情報の登録が必須となっています。
そのため、Twilio CLI を使ったとしても事前に Bundles の登録が必要となります。

## BundleSid の取得

Bundles の登録は以下の記事を参考にしてください。

[TwilioでBundles（本人認証）の設定を行う（法人編）](https://qiita.com/mobilebiz/items/4d09a15a355ae5df3d24)
[API経由でBundleSidを登録する（法人編）](https://qiita.com/mobilebiz/items/b2d8eb3d724210545aad)
[TwilioでBundles（本人認証）の設定を行う（個人編）](https://qiita.com/mobilebiz/items/579d1920a8b0bca96459)
[API経由でBundleSidを登録する（個人編）](https://qiita.com/mobilebiz/items/7bb6e9d94d4995a6c196)

上記のいずれかから取得した BundleSid （BUから始まる文字列）が必要となります。
なお、BundleSid の取得には数日かかります。


## 電話番号を購入する

以下のコマンドをメモ帳などにコピーしておきます。

```sh
twilio phone-numbers:buy:local \
    --country-code JP \
    --bundle-sid BUxxxxxxxxxxxxxxxxxxxxxx
```

bundle-sid パラメータに、先程取得した BU から始まる文字列を置き換えます。もし BU から始まる文字列がわからない場合は、以下のコマンドを使うと一覧が表示されます。
``` twilio api:numbers:v2:regulatory-compliance:bundles:list```

BU から始まる文字列を書き換えたら、コマンドプロンプトを開いてコマンドを実行してみましょう。

<img width="596" alt="スクリーンショット 2019-12-01 10.08.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/e3ca09e7-bed0-da11-ba64-12a60cc9d5af.png">

現在購入が可能な050番号の一覧が表示されますので、カーソルを移動して欲しい番号を選択します。
欲しい番号が見つかったら、その番号が選択されている状態でエンターキーを押します。

<img width="782" alt="スクリーンショット 2019-12-01 10.11.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/cb44f3db-1e86-f9ed-a194-5d784b371055.png">

この番号を購入するかどうかを確認されますので、購入する場合は**y**を入力します。

<img width="746" alt="スクリーンショット 2019-12-01 10.13.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/8abc790f-52b3-1c1e-0b75-b30e7a31ec55.png">

以上で、番号の購入は完了です。
購入した電話番号は、このあとも利用するのでメモ帳に控えておいてください。

もし購入済みの番号をリリースする場合は、最後に表示されたPNから始まる文字列を使って、以下のようなコマンドを入力することで削除することができます。

```sh
twilio api:core:incoming-phone-numbers:remove \
    --sid PN6fa975994939ee56305a944077a6b85b
```

# 電話の発信

では、先程購入した番号を使ってTwilio CLI経由で電話をかけてみたいと思います。

以下のコマンドをメモ帳などにコピーしてください。

```sh
twilio api:core:calls:create \
    --to +8190XXXXXXXX \
    --from +8150XXXXXXXX \
    --url https://demo.twilio.com/welcome/voice/ja/
```

toパラメータを、電話をかけたい相手の電話番号に置き換えます。このとき、相手側の電話番号はE.164形式で指定する必要があります。たとえば、相手先の電話番号が**09012345678**だった場合、指定する番号は**+819012345678となります。
次にfromパラメータを先程購入した050番号に置き換えます。こちらの番号もE.164形式で指定する必要があります。
urlパラメータは、実際に相手が電話に出たあとに流すメッセージをTwiMLで返すURLになります。上記のURLでは、女性の声でガイダンスが流れるようになっています。
もちろん、ここを話したい内容のTwiMLを返すようにすることもできます。

では、上記コマンドをコマンドプロンプト上で実行してみましょう。
電話がかかってくれば成功です。

# まとめ

今回はTwilio CLIを使って、管理コンソールに入らなくてもできるいろいろな作業をご紹介してきました。
次回はいよいよサーバーレスの開発（FunctionsやAssets）をCLI経由で実現する方法をご紹介します。

---
### Twilio（トゥイリオ）とは

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

自己紹介|　
:--|:--
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/b51a8b88-abd5-ce5e-195a-de3564ba2ae6.png" height='200' width='150'/>|高橋克己（Katsumi Takahashi） 自称「<font color='red'>赤い芸人</font>」<br />グローバル・インターネット・ジャパン株式会社　代表取締役<br />株式会社KDDIウェブコミュニケーションズ　Twilio事業部エバンジェリスト<br /><br />2001年より大手通信事業者の法人サービスの教育に携わり、企業における電話のしくみや重要性を研究。2016年よりTwilio事業部にジョインし、Twilioを使ったスマートコミュニケーションの普及活動を精力的に行っている。<br />2015 Hall of Doers<br />2019 Twilio Champions