SMSをプログラム的に送りたい。手軽に作りたい方へ手順をまとめてみました。
Twilioプラットフォームを利用すると、驚くほど簡単にSMSが送れます。それも、無料のトライアルアカウントで、試験できるのでこれは必見です。
Visual Studio 2017を利用しており、C#からコンソールアプリを作ってSMSを送った時のメモです。
Twilioでは、SMS送信APIを準備して、簡単に自分のアプリケーションにSMS送信機能を組み込めるように準備があるプラットフォームになっています。
無料でトライアルアカウントも作成できるし、月額無料・初期費用無料なので気軽に試せます。
無料アカウントを作成します。
クレジットカードの登録不要です。
途中から英語だったので、メモ
登録が完了すると、ダッシュボードが表示されます。
サンプルを見ながら
手順を追っていきます。
電話番号を取得しますが、日本の電話番号だと、Voiceしか有効になっていません。音声通話認証などしか利用できなさそうです。
Buy a Numberページで、COUNTRYを United States にすると、SMSにチェックができるようになります。
この状態でSearchボタンを押すと、利用できる電話番号の一覧が表示されます。
無料枠が500円与えられているので、その枠内で、月額150円ほどの電話番号を購入する事ができます。気に入った番号をBuyします。
こちらのサンプルコードに従って、実装してみます。
コンソールアプリケーションを作成し、
Nugetします。
Twilio = Twilio REST API helper library
これがSMS送信のためのAPIです。
サンプルコードのまま実装するとこんな感じ
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
class Program
{
static void Main(string[] args)
{
// Find your Account Sid and Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
string accountSid = Environment.GetEnvironmentVariable("SIDをここに");
string authToken = Environment.GetEnvironmentVariable("AUTHトークンをここに");
TwilioClient.Init(accountSid, authToken);
var message = MessageResource.Create(
body: "This is the ship that made the Kessel Run in fourteen parsecs?",
from: new Twilio.Types.PhoneNumber("+15017122661"),
to: new Twilio.Types.PhoneNumber("+15558675310")
);
Console.WriteLine(message.Sid);
}
}
この通りに実装すると、[Username can not be null]というエラーメッセージが表示されてSMS送信されません。
なんでかなぁ。Environment.GetEnvironmentVariableで、Stringに格納している文字列がNullになっているので、直接文字列指定してあげるとSMSが送信されました。
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
namespace TwilioSMS
{
class Program
{
static void Main(string[] args)
{
TwilioClient.Init("ここにSID", "ここにAuthトークン");
var message = MessageResource.Create(
body: "This is the ship that made the Kessel Run in fourteen parsecs?",
from: new Twilio.Types.PhoneNumber("取得した電話番号"),
to: new Twilio.Types.PhoneNumber("SMSを送信する電話番号")
);
Console.WriteLine(message.Sid);
}
}
}
SID , AuthToken,取得した電話番号は、Twilio Consoleから確認できます。
こんなメッセージが届きます。
日本語の送信も可能です。
※注意 トライアルアカウントで、SMS送信できる電話番号は、トライアルアカウント作成時に認証した携帯電話番号だけです!
※注意 トライアルアカウントでは文頭に「Sent from your Twilio traial account」という文字列がつきます。
.Net のAPIをダウンロードします。
登録初期時点で出てくる、このサンプルコードはTwilioのRESTAPIとTwilioSMSを使用してワークフローを自動化するバケーションレンタルサイトのホームページになっています。
一応動き始めたのでメモしておいたのですが、特に使わなくてもいいように思います。
.Net APIをVisualStudioで開きます。先ほどダウンロードした、airtng-csharp-masterフォルダの中[AirTNG.sln]を開きます。
Local.configファイルを追加します
Local.configの中身はこんな感じです。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
</system.web>
<appSettings>
<add key="TwilioAccountSid" value="SIDをここに設定" />
<add key="TwilioAuthToken" value="AuthTokenをここに設定" />
<add key="TwilioPhoneNumber" value="電話番号を設定" />
</appSettings>
</configuration>
SIDとAuthToken、電話番号はダッシュボードにて確認できます
ASP.NET Webアプリケーションを新規作成して、SMSを送ることができるかテストしてみます。
Nuget パッケージの管理でTwilioをインストール
Webフォームを作成する
Webフォームにボタンを配置
ボタンイベントにTwilio送信プロセスを設定
protected void Button1_Click(object sender, EventArgs e)
{
// Find your Account Sid and Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
TwilioClient.Init("SIDを設定", "AUTHトークンを設定");
var message = MessageResource.Create(
body: "日本語送信のテストです",
from: new Twilio.Types.PhoneNumber("取得した電話番号を設定"),
to: new Twilio.Types.PhoneNumber("送信先の携帯電話番号を設定")
);
}
電話番号を取得してそのままにしておくと、
こんな感じで一時停止状態になってしまいました。
この状態になると、
trial mode のままでは支払いができないようで、Upgrade Nowしなければ引き続きの利用はできないです。
trialで取得した電話番号は、約110円の月額基本料がかかります。これは為替の関係で、140円や150円くらいになる事もあり、トライアルで電話番号を取得しそのまま放置すると、500円のトライアル枠を使い切り、費用が発生するようになります。
*注2:1ドル=110円を想定。実際の為替レートにより変動致します。
新しいプロジェクトを作成します
すると、また500円の枠がもらえます。テスト開発中はこれでいいかなって感じです。費用をかけずに開発できるのはありがたいです。