TwiML™ Voice: <Sms>

<Sms>TwiML動詞は非推奨となりました。

着信テキストメッセージに対して別のテキストメッセージで返信するには、<Message>動詞を使用します。 着信通話に対する応答としてテキストメッセージを送信するには、Webhookを使用してユーザーご自身のアプリケーションコードをトリガーし、REST API使用してテキストメッセージを送信します。

<Sms> 動詞は、通話中に電話番号宛に SMS を送信します。

動詞の属性

<Sms> 動詞は次の属性をサポートします。これらを使って動作を変更します。

属性名 許容値 初期値
to 電話番号 後述のセクションを参照
from 電話番号 後述のセクションを参照
action 相対または絶対 URL none
method GET, POST POST
statusCallback 相対または絶対 URL none

DIAL動詞 と SMS動詞は、複数の属性を使えます。

下の例ではcallerIdパラメータが省略されていますが、Twilio for KDDI Web Communications をご利用のお客様においては、callerId パラメータで必ずご自身で購入したTwilio電話番号を指定する必要があり、かつ、省略できません。

DIAL動詞で電話をかける場合にはTwilio電話番号(050/0120/0800/その他番号)を、SMS動詞でSMSを送信する場合にはアメリカ番号もしくはSMSが有効なTwilio番号を指定する必要があります。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.sms(
  {
    from: '+14105551234',
    to: '+14105556789',
  },
  'The king stay the king.'
);

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Sms("The king stay the king.", from: "+14105551234",
            to: "+14105556789");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->sms('The king stay the king.', ['from' => '+14105551234',
    'to' => '+14105556789']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.sms('The king stay the king.', from: '+14105551234',
                                        to: '+14105556789')

puts response
from twilio.twiml.voice_response import VoiceResponse, Sms

response = VoiceResponse()
response.sms(
    'The king stay the king.', to='+14105556789', from_='+14105551234'
)

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Sms sms = new Sms.Builder("The king stay the king.")
            .from("+14105551234").to("+14105556789").build();
        VoiceResponse response = new VoiceResponse.Builder().sms(sms).build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Sms from="+14105551234" to="+14105556789">The king stay the king.</Sms>
</Response>
SMS動詞の使用

to

to 属性は有効な電話番号を値に取ります。 Twilio はこの番号へ SMS メッセージを送信します。

着信通話中に SMS を送信する場合、デフォルトでは to は発信者の番号になります。 発信通話中に SMS を送信する場合、デフォルトでは to は宛先の番号になります。to の値は必ず有効な電話番号でなければなりません。注 : ショート コードへの送信は、現在サポートされていません。

電話番号には「+」と国番号が必要です。例 : +16175551212 (E.164 フォーマット) to 番号に「+」がない場合、Twilio は from 番号と同じ国番号を使います。 Twilio は from 番号の国の、国内番号フォーマットも扱います (例 : アメリカ国内の (415) 555-1212、イギリス国内の 07400123456)。 From 番号と異なる国に SMS メッセージを送信する場合は、 必ず 「+」と国番号を挿入してください。

トライアル アカウントから SMS を送信する場合、to の電話番号が Twilio でベリファイされている必要があります。

from

from 属性は有効な電話番号を引数に取ります。 この番号は、必ず Twilio から購入したアメリカ番号でなければなりません。050番号ではSMSはご利用できないことにご留意ください。SMS を利用できない番号の場合、<Sms> は SMS メッセージを送信しません。

action

action 属性は URL を引数に取ります。<Sms> 動詞の処理が終わると、Twilio はこの URL へ GET または POST リクエストを送信します。リクエストには SmsStatus パラメーターと SmsSid パラメーターが含まれます。 ユーザー アプリケーションは action URLで、メッセージがキューに入った通知を同期的に受け取れます。

「action」URLが指定されると、Twilioはその「action」URLへのリクエストに対するレスポンスで受信されるTwiMLを使用して現在の通話を継続させます。 「action」属性の指定された<Sms>の後に現れるTwiML動詞は到達不可能になります。

action 属性が指定されていない場合、<Sms> が終了し、Twilio は TwiML 文書内の次の動詞へと進みます。 次の動詞が存在しない場合、Twilio は通話を終了します。<Record><Gather> とは動作が異なりますので、注意が必要です。action URL が設定されていない場合、<Sms> がデフォルトで現在の文書の URL にリクエストを送信することはありません。

リクエストパラメーター

Twilio は action URL へのリクエストとともに、 標準的な TwiML 音声通話リクエスト パラメーター に加え、次のパラメーターを渡します。

パラメーター 概要
SmsSid Twilio がこの SMS メッセージに割り当てた Sid です。
SmsStatus SMS メッセージの状態です。 通常は sending となります。 ただし、宛先の番号が無効の場合は、invalid となります。

method

method 属性は GET または POST の値を取ります。 action URL へのリクエスト送信に、HTTP の GET と POST のどちらを使うかを、Twilio に指示します。 この属性は、HTML フォームの method 属性に従い指定します。初期値は POST です。

statusCallback

statusCallback 属性は URL を引数に取ります。 SMS メッセージの送信が完了した時、または送信に失敗した時、Twilio は SmsStatus パラメーターと SmsSid パラメーターとともに、このURL へ 非同期のPOST リクエストを送信します。 statusCallback は、指定された URL へのリクエスト送信に、必ず HTTP POST を使用しますので注意してください。

リクエストパラメーター

Twilio は statusCallback URL へのリクエストとともに、 標準的な TwiML 音声通話リクエスト パラメーター に加え、次のパラメーターを渡します。

パラメーター 概要
SmsSid この SMS メッセージの Sid です。
SmsStatus SMS メッセージの状態です。 sent または failed のいずれかになります。

名詞

TwiML 動詞の名詞とは、動詞の中にネストされた、それ自身が動詞ではないものを指します。動詞が動作を行う対象です。 <Sms> の名詞は、次の通りです。

名詞 概要
plain text 送信する SMS メッセージのテキストです。 必ず 160 文字未満で指定してください。

ネスティングルール

<Sms> の中には、動詞をネストできません。また、すべての動詞の中に <Sms> をネストできません。

参考

着信通話を待たずに SMS を送信するには? 発信 SMS のドキュメントを参照してください。

サンプル

例 1: SMS を送信する

<Sms> の最もシンプルな使いかたです。 Twilio は発信者にお店の場所を読み上げた後、SMS メッセージとして送信します。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms('Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.');

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.')

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_sms.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms>Store Location: 123 Easy St.</Sms>
</Response>    
シンプルなSMS送信

例 2: SmsStatus の通知

今回のユースケースでは、「action」URLと「method」属性使用します。 これで、メッセージが配信用の待ち行列に加えられると、Twilioは「action」URLにリクエストを発行して、「SmsStatus」パラメーターを渡します。 メッセージが待ち行列に入れられ送信待機の状態になると、「SmsStatus」の値は「sending」になります。 無効な属性が指定されると、「SmsStatus」は「invalid」となります。

ユーザーのウェブ アプリケーションは、SmsStatus パラメーター を見て次の動作を決定できます。

<Sms> に action URLが指定されている場合、ユーザー アプリケーションのフローは、action リクエストへのレスポンスとして受信した TwiML に従います。TwiML 文書内の残りの動詞はすべて不達となり、無視されます。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms({
    action: '/smsHandler.php',
    method: 'POST'
}, 'Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using Twilio.Http;
using System;

class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.", action: new Uri("/smsHandler.php"),
            method: HttpMethod.Post);

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.', ['action' => '/smsHandler.php',
    'method' => 'POST']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', action: '/smsHandler.php',
    method: 'POST')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms(
    'Store Location: 123 Easy St.', action='/smsHandler.php', method='POST'
)

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;
import com.twilio.http.HttpMethod;

public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.")
            .action("/smsHandler.php").method(HttpMethod.POST).build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/sms_status.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms action="/smsHandler.php" method="POST">
        Store Location: 123 Easy St.
    </Sms>
</Response>
SmsStatusの通知

例 3: statusCallback の通知

この例では、statusCallback URL を追加します。メッセージの送信が完了した時 (キューに入っただけではなく)、Twilio は SmsStatus パラメーターとともに、非同期リクエストを statusCallback URL へ送信します。 メッセージの送信に成功した場合、SmsStatus は sent となります。 メッセージの送信に失敗した場合、SmsStatus は failed となります。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms({
    statusCallback: '/smsHandler.php'
}, 'Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.",
            statusCallback: new Uri("/smsHandler.php"));

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.',
    ['statusCallback' => '/smsHandler.php']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', status_callback: '/smsHandler.php')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', status_callback='/smsHandler.php')

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.")
            .statusCallback("/smsHandler.php").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/sms_status_callback.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms statusCallback="/smsHandler.php">Store Location: 123 Easy St.</Sms>
</Response>
statusCallbackの通知

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

コードサンプルを読み込んでいます...
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.sms(
  {
    from: '+14105551234',
    to: '+14105556789',
  },
  'The king stay the king.'
);

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Sms("The king stay the king.", from: "+14105551234",
            to: "+14105556789");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->sms('The king stay the king.', ['from' => '+14105551234',
    'to' => '+14105556789']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.sms('The king stay the king.', from: '+14105551234',
                                        to: '+14105556789')

puts response
from twilio.twiml.voice_response import VoiceResponse, Sms

response = VoiceResponse()
response.sms(
    'The king stay the king.', to='+14105556789', from_='+14105551234'
)

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Sms sms = new Sms.Builder("The king stay the king.")
            .from("+14105551234").to("+14105556789").build();
        VoiceResponse response = new VoiceResponse.Builder().sms(sms).build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Sms from="+14105551234" to="+14105556789">The king stay the king.</Sms>
</Response>
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms('Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.");

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.');

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.')

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_sms.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms>Store Location: 123 Easy St.</Sms>
</Response>    
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms({
    action: '/smsHandler.php',
    method: 'POST'
}, 'Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using Twilio.Http;
using System;

class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.", action: new Uri("/smsHandler.php"),
            method: HttpMethod.Post);

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.', ['action' => '/smsHandler.php',
    'method' => 'POST']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', action: '/smsHandler.php',
    method: 'POST')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms(
    'Store Location: 123 Easy St.', action='/smsHandler.php', method='POST'
)

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;
import com.twilio.http.HttpMethod;

public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.")
            .action("/smsHandler.php").method(HttpMethod.POST).build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/sms_status.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms action="/smsHandler.php" method="POST">
        Store Location: 123 Easy St.
    </Sms>
</Response>
SDKバージョン:
  • 5.x
SDKバージョン:
  • 7.x
SDKバージョン:
  • 3.x
SDKバージョン:
  • 5.x
SDKバージョン:
  • 6.x
SDKバージョン:
  • 5.x
形式:
  • TwiML
const VoiceResponse = require('twilio').twiml.VoiceResponse;

const response = new VoiceResponse();
response.say('Our store is located at 123 Easy St.');
response.sms({
    statusCallback: '/smsHandler.php'
}, 'Store Location: 123 Easy St.');

console.log(response.toString());
using Twilio.TwiML;
using System;


class Example
{
    static void Main()
    {
        var response = new VoiceResponse();
        response.Say("Our store is located at 123 Easy St.");
        response.Sms("Store Location: 123 Easy St.",
            statusCallback: new Uri("/smsHandler.php"));

        Console.WriteLine(response.ToString());;
    }
}
<?php
require_once './vendor/autoload.php';
use Twilio\Twiml;

$response = new Twiml();
$response->say('Our store is located at 123 Easy St.');
$response->sms('Store Location: 123 Easy St.',
    ['statusCallback' => '/smsHandler.php']);

echo $response;
require 'twilio-ruby'

response = Twilio::TwiML::VoiceResponse.new
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', status_callback: '/smsHandler.php')

puts response
from twilio.twiml.voice_response import VoiceResponse, Say, Sms

response = VoiceResponse()
response.say('Our store is located at 123 Easy St.')
response.sms('Store Location: 123 Easy St.', status_callback='/smsHandler.php')

print(response)
import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import com.twilio.twiml.voice.Sms;
import com.twilio.twiml.TwiMLException;


public class Example {
    public static void main(String[] args) {
        Say say = new Say.Builder("Our store is located at 123 Easy St.")
            .build();
        Sms sms = new Sms.Builder("Store Location: 123 Easy St.")
            .statusCallback("/smsHandler.php").build();
        VoiceResponse response = new VoiceResponse.Builder().say(say).sms(sms)
            .build();

        try {
            System.out.println(response.toXml());
        } catch (TwiMLException e) {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/sms_status_callback.xml -->
<Response>
    <Say>Our store is located at 123 Easy St.</Say>
    <Sms statusCallback="/smsHandler.php">Store Location: 123 Easy St.</Sms>
</Response>