Programmable SMS クイックスタート for Node.js

Programmable SMSで、Node.jsアプリケーションからテキストメッセージを送受信できるようになります。 数行のコードで、Webアプリケーションはご自身のプログラム可能な電話番号からメッセージを送信(および送信メッセージの受信)ができます。

はじめよう

Node.jsでSMSを送信できるようになる前に、Twilioアカウントにサインアップし、SMSを利用可能な電話番号を購入する必要があります。 電話番号の購入の際の検索時に、どのようなタイプの通信が行えるか確認できます。

SMSの利用できる番号を購入しましょう。

続いて、Node.js向けのTwilioモジュールをインストールしますNodeおよびnpmがすでにインストールされたマシン上でターミナル、またはコマンドライン・インターフェイスを開き、新規のディレクトリーで下記のコマンドを実行します。

npm install twilio

これによってカレント・ディレクトリー内のNode.jsスクリプトから使用できるように twilio モジュールがインストールされます。

SMS メッセージの送信 

ここで、ぴっかぴかの新Twilio Node.jsライブラリーを使いましょう。 たった1つのAPIリクエストで、先ほど購入したTwilio電話番号からテキスト・メッセージを送信できます。 send-sms.js という名前の新規ファイルを作成し、こちらのコード例をペーストします。

SDKバージョン:
  • 2.x
  • 3.x
// Twilio Credentials
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';

// require the Twilio module and create a REST client
const client = require('twilio')(accountSid, authToken);

client.messages
  .create({
    to: '+15558675309',
    from: '+15017250604',
    body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
  })
  .then((message) => console.log(message.sid));
// Twilio Credentials 
var accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
var authToken = 'your_auth_token'; 
 
//require the Twilio module and create a REST client 
var client = require('twilio')(accountSid, authToken); 
 
client.messages.create({ 
    to: "+15558675309", 
    from: "+15017250604", 
    body: "This is the ship that made the Kessel Run in fourteen parsecs?", 
}, function(err, message) { 
    console.log(message.sid); 
});
出力を表示
  • JSON
  • XML
{
  "sid": "MMc781610ec0b3400c9e0cab8e757da937",
  "date_created": "Mon, 19 Oct 2015 07:07:03 +0000",
  "date_updated": "Mon, 19 Oct 2015 07:07:03 +0000",
  "date_sent": null,
  "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "to": "+15558675309",
  "from": "+15017250604",
  "body": "This is the ship that made the Kessel Run in fourteen parsecs?",
  "status": "queued",
  "num_segments": "1",
  "num_media": "0",
  "direction": "outbound-api",
  "api_version": "2010-04-01",
  "price": null,
  "price_unit": "USD",
  "error_code": null,
  "error_message": null,
  "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc781610ec0b3400c9e0cab8e757da937.json",
}
<?xml version='1.0' encoding='UTF-8'?>
<TwilioResponse>
<Message>
  <Sid>MMc781610ec0b3400c9e0cab8e757da937</Sid>
  <DateCreated>Mon, 19 Oct 2015 07:09:09 +0000</DateCreated>
  <DateUpdated>Mon, 19 Oct 2015 07:09:09 +0000</DateUpdated>
  <DateSent/>
  <AccountSid>ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</AccountSid>
  <To>+15558675309</To>
  <From>+15017250604</From>
  <Body>This is the ship that made the Kessel Run in fourteen parsecs?</Body>
  <Status>queued</Status>
  <NumSegments>1</NumSegments>
  <NumMedia>0</NumMedia>
  <Direction>outbound-api</Direction>
  <ApiVersion>2010-04-01</ApiVersion>
  <Price/>
  <PriceUnit>USD</PriceUnit>
  <ErrorCode/>
  <ErrorMessage/>
  <Uri>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMf1150fe5baf04104a39c3f311a053e4e.xml</Uri>
  <SubresourceUris/>
</Message>
</TwilioResponse>
プログラマブルSMS APIを使用してSMSを送信する

アカウントの認証情報と電話番号を、ご自身のアカウントの情報 に更新します。 from パラメーターに新しいTwilio電話番号を、 to パラメーターにご自身の携帯電話番号を指定します。 こちらのコマンドで、作成したばかりのコードを実行します。

node send-sms.js

ほどなくして、Twilio電話番号から携帯電話にSMSが受信されるはずです。

SMSメッセージを受信する

Twilio電話番号がメッセージを受信すると、Twilioはあなたの制御下にあるサーバーにHTTPリクエストを送信します。 このコールバックの仕組みをWebhookと呼んでいます。 Twilioがあなたのアプリケーションにリクエストを送信すると、TwiMLというメッセージへの応答方法を指示するXML形式で応答することが期待されます。 Expressを使用し、Node.jsでこれを構築する方法を見ていきましょう。 server.js という名前のファイルを作成して下記のコードを使い、受信メッセージを処理できるサーバーを作成します。

SDKバージョン:
  • 2.x
  • 3.x
const http = require('http');
const express = require('express');
const twilio = require('twilio');

const app = express();

app.post('/sms', (req, res) => {
  const twiml = new twilio.TwimlResponse();

  twiml.message('The Robots are coming! Head for the hills!');

  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

http.createServer(app).listen(1337, () => {
  console.log('Express server listening on port 1337');
});
var http = require('http');
var express = require('express');
var twilio = require('twilio');

var app = express();

app.post('/sms', function(req, res) {
  var twilio = require('twilio');
  var twiml = new twilio.TwimlResponse();
  twiml.message('The Robots are coming! Head for the hills!');
  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

http.createServer(app).listen(1337, function () {
  console.log("Express server listening on port 1337");
});
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Message>The Robots are coming! Head for the hills!</Message>
</Response>
C#でSMSやMMS(日本未対応)を受信、返信する

電話番号にメッセージが着信すると、TwilioはあなたのサーバーにHTTPリクエストを送信します。 このコードは(TwiMLを使って)テキストメッセージにどうサーバーが返信すべきかを表しています。

下記コマンドでサーバーを実行します:

node server.js

ポート1337でのサーバーの起動が確認できるでしょう。 残念ながら、Twilioはあなたのコンピューターで実行されているサーバーを直接呼び出すことができません - このコードを公開サーバーにデプロイするか、外部アクセス可能なURLを提供するngrokのようなトンネルを実行する必要があります。 セットアップ方法については、次節でご紹介します。

TwiliogaNodeアプリケーションと通信できるようにする

まだ行っていない場合は、ngrokをインストールし、 ngrok コマンドへのパスが通っているか確認しておきましょう。 下記コマンドではngrokを使用し、ポート1337をインターネット上に公開します。 1337 を、ご自身のExpressアプリケーションで使用しているポート番号に置き換えます。

ngrok http 1337

ngrokのターミナル出力

これで、新しい外部URLが手に入りました。 これを、Twilioコンソールから電話番号用のWebhookとして構成します。 電話番号を選択し、"A MESSAGE COMES IN"のポップアップを"Webhook"に変更、続いて外部URLの項目をご自身のサービスのもの、たとえば https://sadfs3423.ngrok.io/sms に変更します。

SMS用のWebhookに /sms ルートを設定

Twilio電話番号にテキスト・メッセージを送信します - ngrokのコンソールに、HTTPリクエストが確認できるはずです。 Node.jsアプリケーションはテキスト・メッセージを処理し、SMSとしてレスポンスが返されます!

次はどこでしょうか ?

Node.jsを使用したメッセージ送受信の基本について理解できたところで、下記の資料について調べてみるのも良いかもしれません。

楽しいプログラミングを!

1 / 1
Loading Code Samples...
SDKバージョン:
  • 2.x
  • 3.x
形式:
  • JSON
  • XML
// Twilio Credentials
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';

// require the Twilio module and create a REST client
const client = require('twilio')(accountSid, authToken);

client.messages
  .create({
    to: '+15558675309',
    from: '+15017250604',
    body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
  })
  .then((message) => console.log(message.sid));
// Twilio Credentials 
var accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
var authToken = 'your_auth_token'; 
 
//require the Twilio module and create a REST client 
var client = require('twilio')(accountSid, authToken); 
 
client.messages.create({ 
    to: "+15558675309", 
    from: "+15017250604", 
    body: "This is the ship that made the Kessel Run in fourteen parsecs?", 
}, function(err, message) { 
    console.log(message.sid); 
});
{
  "sid": "MMc781610ec0b3400c9e0cab8e757da937",
  "date_created": "Mon, 19 Oct 2015 07:07:03 +0000",
  "date_updated": "Mon, 19 Oct 2015 07:07:03 +0000",
  "date_sent": null,
  "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "to": "+15558675309",
  "from": "+15017250604",
  "body": "This is the ship that made the Kessel Run in fourteen parsecs?",
  "status": "queued",
  "num_segments": "1",
  "num_media": "0",
  "direction": "outbound-api",
  "api_version": "2010-04-01",
  "price": null,
  "price_unit": "USD",
  "error_code": null,
  "error_message": null,
  "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc781610ec0b3400c9e0cab8e757da937.json",
}
<?xml version='1.0' encoding='UTF-8'?>
<TwilioResponse>
<Message>
  <Sid>MMc781610ec0b3400c9e0cab8e757da937</Sid>
  <DateCreated>Mon, 19 Oct 2015 07:09:09 +0000</DateCreated>
  <DateUpdated>Mon, 19 Oct 2015 07:09:09 +0000</DateUpdated>
  <DateSent/>
  <AccountSid>ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</AccountSid>
  <To>+15558675309</To>
  <From>+15017250604</From>
  <Body>This is the ship that made the Kessel Run in fourteen parsecs?</Body>
  <Status>queued</Status>
  <NumSegments>1</NumSegments>
  <NumMedia>0</NumMedia>
  <Direction>outbound-api</Direction>
  <ApiVersion>2010-04-01</ApiVersion>
  <Price/>
  <PriceUnit>USD</PriceUnit>
  <ErrorCode/>
  <ErrorMessage/>
  <Uri>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMf1150fe5baf04104a39c3f311a053e4e.xml</Uri>
  <SubresourceUris/>
</Message>
</TwilioResponse>
SDKバージョン:
  • 2.x
  • 3.x
形式:
  • XML
const http = require('http');
const express = require('express');
const twilio = require('twilio');

const app = express();

app.post('/sms', (req, res) => {
  const twiml = new twilio.TwimlResponse();

  twiml.message('The Robots are coming! Head for the hills!');

  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

http.createServer(app).listen(1337, () => {
  console.log('Express server listening on port 1337');
});
var http = require('http');
var express = require('express');
var twilio = require('twilio');

var app = express();

app.post('/sms', function(req, res) {
  var twilio = require('twilio');
  var twiml = new twilio.TwimlResponse();
  twiml.message('The Robots are coming! Head for the hills!');
  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

http.createServer(app).listen(1337, function () {
  console.log("Express server listening on port 1337");
});
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Message>The Robots are coming! Head for the hills!</Message>
</Response>