2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TwilioをLambdaで実行するまでのメモ

Posted at

これはなに

twilioを使うことがありそうだったので使用するまでのメモです。

コミュニケーションAPIのTwilioとは?

Twilioは『電話をかける』『SMSを送る』といった機能を、すでにTwilioのシステム内で作り上げています。
これらの機能をAPIという形で提供しているため、お客様は簡単にTwilioの機能を自社システムに追加できるため、0から作る必要がないというわけです

準備

実際に使用するまでにいくつかの準備が必要となります。

アカウント登録

下記URLより、アカウント登録が行えるので登録します。
トライアルで少額の金額がチャージされていますのでその料金分まで使用できます。
※自分の場合は500円チャージされてました。
Twilio会員登録

番号取得

[Get a Trial Number]をクリックし電話番号を取得。
image.png

アカウントSID・AUTHTOKENの取得

左側の四角ボタンをクリックするとコピれるので取っておきます。
image.png

twilioモジュールのインストール

$ pip3 install twilio

環境変数の設定

上記で、コピペしておいたアカウントSID・AUTHTOKENを環境変数へセットしておきます。

export TWILIO_ACCOUNT_SID=xxxxxxxxxxxxx
export TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxx

実際に電話をかけてみる

次は実際に自分の携帯にTwilioから電話をかけてみたいと思います。
今回はTwilioから公開されているサンプルコードを元に馴染のあるPythonを使用して作成していきます。
https://jp.twilio.com/ja/docs/voice/quickstart/python

コード

今回はLambdaへ移植することも考え、lambda_function.pyという名前で作成しています。

lambda_function.py
import os
from twilio.rest import Client

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

call = client.calls.create(
                        url='http://demo.twilio.com/docs/voice.xml',
                        to='+15558675310',
                        from_='+15017122661'
                    )

print(call.sid)

実行

$ python3 lambda_function.py

実際に自分の携帯へ非通知で電話がかかってきました。
iOS の画像 (1) (1).png

実際にSMSを飛ばしてみる

次は実際に自分の携帯にTwilioからSMSを飛ばしてみたいと思います。
SMSに関してもTwilioから公開されているサンプルコードを元に作成してきます。

コード

SMSに関しては、送信するメッセージ(body)を書き換えられます。デフォルトだと以下、
(Join Earth's mightiest heroes. Like Kevin Bacon.)

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


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

message = client.messages \
                .create(
                     body="Join Earth's mightiest heroes. Like Kevin Bacon.",
                     from_='+15017122661',
                     to='+15558675310'
                 )

print(message.sid)

実行

$ python3 lambda_function.py

実行してみると、自分はメッセージを変えましたが問題無くSMSが届いていました。
※Set From yourから始まるメッセージは有料アカウントにすることで消せるそうです。
20220203_161529076_ApplicationFrameHost.png

Lambdaへ移行する

ローカルで実行してきたサンプルコードをLambdaへ移行したいと思います。

コード修正

電話とSMS共通でlambda_handlerを追記して、元のコードのインデントを1つ落として下記のような状態にしておきます。

lambda_function.py
import os
from twilio.rest import Client

def lambda_handler(event, context):

    # Find your Account SID and Auth Token at twilio.com/console
    # and set the environment variables. See http://twil.io/secure
    account_sid = os.environ['TWILIO_ACCOUNT_SID']
    auth_token = os.environ['TWILIO_AUTH_TOKEN']
    client = Client(account_sid, auth_token)

    call = client.calls.create(
                            url='http://demo.twilio.com/docs/voice.xml',
                            to='+15017122661',
                            from_='15558675310'
                        )

    print(call.sid)

Lambda設定

インストールしたtwilioモジュールとlambda_function.pyをzip圧縮し、アップロードしてきます。
image.png

環境変数設定

LambdaコンソールからアカウントSIDとAUTHTOKENを環境変数に設定します。
image.png

テスト実行

Lambdaコンソールのテスト画面からテスト名のみ入力し実行します。
ローカルで実行された時と同じく電話やSMSが問題無く動作していたらLambdaへの移行は以上となります。
image.png

おわりに

少額で通話やSMS送信が簡単に実現できるのがシンプルに凄いなと思いました(小並感)。
自分の携帯へ掛けたりすることで簡単にテストできたので興味がある方はぜひ試してみてください。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?