はじめに
Vonage SMS APIを使用し、Amazon API Gateway & AWS LambdaでREST APIを作成してブラウザから無料でSMSメッセージを送信する方法を作成してみました。
同じように作成する場合は、Vonageの無料アカウントを作成しお試しください。
Vonageとは
SMS、認証、Voice/音声通話、ビデオなど、様々なチャネルをクラウドAPIで提供しているコミュニケーションプラットフォームCPaasです。
Vonage
構成図
今回はシンプルにAmazon API Gateway & AWS LambdaをSAMを使用し作成しています。
コード
ファイル構成
1 2 3 4 5 6 7 | . ├── function │ └── app.py ├── layers │ └── requirements.txt ├── samconfig.toml └── template.yaml |
app.py
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import json import os import vonage def lambda_handler(event, context): try: client = vonage.Client(key=os.environ['VONAGE_API_KEY'], secret=os.environ['VONAGE_API_SECRET']) response_data = vonage.Sms(client).send_message( { "from": "Vonage APIs", "to": event['queryStringParameters']['phone_number'], "text": event['queryStringParameters']['message'], } ) if response_data["messages"][0]["status"] == "0": return { 'statusCode': 200, 'body': json.dumps('Message sent successfully.') } else: raise Exception(f"{response_data['messages'][0]['error-text']}") except Exception as e: return { 'statusCode': 400, 'body': json.dumps(f"Message failed with error: {str(e)}") } |
template.yaml
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: SendSmsInVonageFunction: Type: 'AWS::Serverless::Function' Properties: FunctionName: send-sms-in-vonage Handler: app.lambda_handler Runtime: python3.11 CodeUri: ./function/ MemorySize: 128 Timeout: 30 Environment: Variables: VONAGE_API_KEY: "13ae9e6f" VONAGE_API_SECRET: "3pyF2RuLMKJXUF62" Layers: - !Ref VonageLayer Events: VonageSmsApi: Type: Api Properties: Path: /send Method: get VonageLayer: Type: AWS::Serverless::LayerVersion Properties: Description: VonageLayer ContentUri: ./layers/ CompatibleRuntimes: - python3.11 LayerName: !Sub vonage-layer RetentionPolicy: DELETE Metadata: BuildMethod: python3.11 |
作成時の注意点
- vonageをレイヤーに追加するようにする
- Vonageアカウントを作成したらVonage API DashboardからAPI keyとAPIシークレットを取得し環境変数に追加するようにする
- 電話番号は国番号+電話番号(最初の0は除く) 例:日本で09012345678なら819012345678になる
動作確認
- コードの作成ができたらsam build & sam deployをする。
- コンソールでリソースができていることを確認する。
- 作成したAPIにGETリクエストをする。
- SMSが送られてきたら成功!
終わりに
以上のように、誰でも無料で簡単にSMSを送信するAPIを作ることができます。画面に組み込んだりAPI以外の方法でSMSを送信したりと様々なユースケースで活用することができます。
Vonageを使えば簡単にブラウザから電話の発信をすることができ、様々なコミュニケーションツールの作成に活用することができます。
通話機能に関しては、無料アカウントでは使用できなかったり対象国の法律による制限があるので注意が必要です。