LoginSignup
8

More than 5 years have passed since last update.

rubyからAmazon SNSを利用して電話番号指定でSMSを送信する

Last updated at Posted at 2018-07-08

はじめに

rubyからAmazon SNSを利用して電話番号指定でSMSを送信する方法について調べたので備忘録として投稿させていただきます。

用途

  • 特定の電話番号宛にSMSを1通送信する
  • 複数の電話番号宛への同時送信は不要

準備

AWSコンソールでAccessKeyを払い出す。(だけ)

サンプル

コード

sms.rb
require 'aws-sdk'

def send_sms(tel:, msg:)

  sns = Aws::SNS::Client.new()
  sns.publish(phone_number: tel, message: msg)

end


send_sms(tel: '+81 xxxxxxxxxx',msg: "テスト")

補足

AccessKey/Regionはコード内に記述することも可能。

  sns = Aws::SNS::Client.new(
      access_key_id:     'xxxxx',
      secret_access_key: 'xxxxx',
      region:            'xxxxx'
  )

メッセージ配信の信頼性を高くしたい場合は送信するメッセージのタイプTransactionalを指定する。

  # オプション:送信するメッセージのタイプに「Transactional」を指定
  sns.set_sms_attributes({
                             attributes: {
                                 "DefaultSMSType": "Transactional"
                             },
                         })

実行

# sws-sdkをインストール
$ gem install aws-sdk

# 環境変数でAccessKey/Regionを設定
$ export AWS_ACCESS_KEY_ID="xxxxx"
$ export AWS_SECRET_ACCESS_KEY="xxxxx"
$ export AWS_REGION="ap-northeast-1"

# サンプルコードを実行
$ ruby sms.rb

SMSの分割について

本文が長い場合にSMS内のテキストが何文字で分割されるか確認した。

調査環境

  • 端末:iOS 11.4 iPhoneX
  • キャリア:au

結果

1通のSMSに含められるテキストは、

  • 半角:最大153文字
  • 全角:最大67文字
送信したSMSの本文 受信したSMS
半角200文字 153/47文字の2通に分かれて受信した
全角200文字 67/66/67文字の3通に分かれて受信した

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
8