Twilio の SMS サービスでメッセージを送ってみる

#目的
Amazon SMS でのメッセージ送信を GCP のサービスで代用できないか調査したところ、Twilio というサードパーティサービスを Google が推奨していたので試しに使ってみました。

・[Twilio による SMS サービスおよび音声サービスの使用](https://cloud.google.com/appengine/docs/flexible/nodejs/using-sms-and-voice-services-via-twilio?hl=ja)

#Twilio について
Twilio がどんなものか知らない方も多いと思います。
簡単に言うと音声通話、SMS、チャット、ビデオなどの機能を持つクラウド API サービスです。
特徴として**プログラムで電話、SMS、FAX などを制御可能**なので、アプリやシステムと絡めたサービスを作りたいときに検討してみるのがいいかと思います。

Twilio のパートナーである KDDI が詳しい情報をウェブに公開しているので気になる方はどうぞ。
https://twilio.kddi-web.com/

#Twilio アカウント作成
Twilio の利用にはまずアカウントを作成する必要があります。

https://twilio.kddi-web.com/

上記リンクの無料サインアップからアカウント登録を行います。
サイトの説明に従ってアカウント作成を完了させてください。一般的な手順なので特に難しくはないと思います。

#アメリカの電話番号を取得
Twilio アカウントで利用する電話番号を取得します。
注意点として、SMS を使いたい場合国番号1から始まる**アメリカの電話番号**を取得する必要があります（日本の電話番号が SMS 未対応の為）。

以下が電話番号取得手順
###１.ログイン後のホーム画面から、画面左の#タブを選択し、Get Started をクリック
![スクリーンショット 2019-11-27 10.10.31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/6a838e30-1578-7b8e-2e1c-a4531ddc50be.jpeg)

###２.最初の Twilio 電話番号を取得をクリック
<img width="1436" alt="スクリーンショット 2019-11-27 10.23.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/ddd5d3c8-2204-3c63-973c-2ed317be794d.png">

###3.デフォルトでアメリカの電話番号が割り当てられているのでそのまま「この番号を選択」をクリック
※デフォルトの番号が+８１から始まる日本の電話番号だった場合は、「Search for a different number」のリンクからアメリカの番号を取得してください。
![スクリーンショット 2019-11-27 11.28.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/17c204e3-c8a3-d3a5-8a6c-7347421ed650.png)

これで電話番号の取得が完了し、SMSを使用できる状態になりました。

#SMSでメッセージを送ってみよう！！#
それでは実際に Twilio の Programmable SMS というサービスを使ってメッセージを送ってみます。
以下のサイト（英語）が参考になりました。
https://www.twilio.com/docs/sms/quickstart

<img width="1436" alt="スクリーンショット 2019-11-27 14.41.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/1c38a2e3-dbdc-3b98-a75c-4af0f5cc78f3.png">

画像のようにプログラミング言語ごとに内容がまとめられているので、自分の好みにあった言語を参考にすればいいかと思います。
今回は **Python** でやってみます。

###1. Python 環境の準備
python をローカル環境にインストールしていない場合下記のコマンドでインストールできます。

```python:
pip install python;
```

###2. Twilio ライブラリーのインストール
下記のコマンドでライブラリーをインストールします。

```python:
pip install twilio;
```

<font color="red">pip: command not found </font>が表示された場合は、下記のコマンドを実行してください。

```python:
easy_install twilio
```

参考 URL：https://jp.twilio.com/docs/libraries/python

###3. Twilio アカウントに対して SMS をリクエストするための Python ファイルを作成
下のリンクで ACCOUNT SID と AUTH TOKEN を確認しておきます。
https://jp.twilio.com/console/project/settings

下記のコードをエディタやメモ帳にコピーします。

```python:sms_message.py

# Download the helper library from https://www.twilio.com/docs/python/install
from twilio.rest import Client


# Your Account Sid and Auth Token from twilio.com/console
# DANGER! This is insecure. See http://twil.io/secure
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
client = Client(account_sid, auth_token)

message = client.messages \
                .create(
                     body="Hello from Python!",
                     from_='+発信元電話番号（国番号含む）',
                     to='+メッセージ送り先の電話番号（国番号含む）'
                 )

print(message.sid)
```
1. account_sid と auth_token の部分に確認しておいた情報を入力 
2. body に送りたいメッセージ、from に Twilio の登録した電話番号、to にメッセージを送りたい端末の電話番号を入力 
3. send_sms.py の名前で保存

###4. コマンドでファイルを叩き、メッセージを送信
コマンドで、先ほど作成した Python ファイルを叩くとメッセージが送信されます。

```
python send_sms.py
```
###5. 端末が受信した SMS
![IMG_0365.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505753/c6d7486c-0013-286a-00a6-bfb852c194ac.jpeg)

無事メッセージが確認できました。

#終わりに#
以上が SMS を送るまでの一覧の流れになります。
料金体系やSMS以外の Twilioサービスについては次回以降があればまとめようと思います。