REST API: Sending SMS と MMS

SMSとMMSの送信はTwilioのシステムでは共通のタスクとして扱われます。メッセージを送ることはメッセージリソースにPOSTをするのと同じくらい簡単です。詳細は下記ご覧ください。

有名な映画からの引用と画像の付いたメッセージを送りましょう。 テキストのみのメッセージは地球上のどこにでも送信できますが、画像を送信できるのは、現在は米国とカナダのみです。

イメージ URL 付きメッセージの送信
  • C#
  • curl
  • Java
  • Node.js
  • PHP
  • Python
  • Ruby
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 6.x
  • 7.x
SDKバージョン:
  • 2.x
  • 3.x
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 5.x
  • 6.x
SDKバージョン:
  • 4.x
  • 5.x
// Download the twilio-csharp library from twilio.com/docs/libraries/csharp
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
using System.Collections.Generic;

class Example
{
   static void Main(string[] args)
   {
        // Find your Account Sid and Auth Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken = "your_auth_token";
        TwilioClient.Init(accountSid, authToken);

        var mediaUrl = new List<Uri>() {
            new Uri( "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg" )
        };
        var to = new PhoneNumber("+15017250604");
        var message = MessageResource.Create(
            to,
            from: new PhoneNumber("+15558675309"),
            body: "This is the ship that made the Kessel Run in fourteen parsecs?",
            mediaUrl: mediaUrl);
        Console.WriteLine(message.Sid);
   }
}
<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once '/path/to/vendor/autoload.php'; // Loads the library
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$client->messages->create(
    "+15558675309",
    array(
        'from' => '+15017250604',
        'body' => "This is the ship that made the Kessel Run in fourteen parsecs?",
        'mediaUrl' => "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",
    )
);
from twilio.rest import TwilioRestClient 
 
# put your own credentials here 
ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
AUTH_TOKEN = "your_auth_token" 
 
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) 
 
client.messages.create(
    to="+15558675309", 
    from_="+15017250604", 
    body="This is the ship that made the Kessel Run in fourteen parsecs?", 
    media_url="https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg", 
)
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new(account_sid, auth_token)

@message = @client.account.messages.create(
  from: '+15017250604',
  to: '+15558675309',
  body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
  media_url: 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg'
)

puts @message.subresource_uris
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json' \
--data-urlencode 'To=+15558675309'  \
--data-urlencode 'From=+15017250604'  \
--data-urlencode 'Body=This is the ship that made the Kessel Run in fourteen parsecs?'  \
-d 'MediaUrl=https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg' \
-u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token
// You may want to be more specific in your imports
import java.util.*;
import com.twilio.sdk.*;
import com.twilio.sdk.resource.factory.*;
import com.twilio.sdk.resource.instance.*;
import com.twilio.sdk.resource.list.*;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

public class TwilioTest {
 // Find your Account Sid and Token at twilio.com/user/account
 public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
 public static final String AUTH_TOKEN = "your_auth_token";

 public static void main(String[]args) throws TwilioRestException {
  TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

   // Build the parameters
   List<NameValuePair> params = new ArrayList<NameValuePair>();
   params.add(new BasicNameValuePair("To", "+15558675309"));
   params.add(new BasicNameValuePair("From", "+15017250604"));
   params.add(new BasicNameValuePair("Body", "This is the ship that made the Kessel Run in fourteen parsecs?"));
   params.add(new BasicNameValuePair("MediaUrl", "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg"));

   MessageFactory messageFactory = client.getAccount().getMessageFactory();
   Message message = messageFactory.create(params);
   System.out.println(message.getSid());
 }
}
from twilio.rest import Client

# put your own credentials here
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"

client = Client(account_sid, auth_token)

client.messages.create(
    to="+15558675309",
    from_="+15017250604",
    body="This is the ship that made the Kessel Run in fourteen parsecs?",
    media_url="https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg")
// 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?',
    mediaUrl: 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg',
  })
  .then((message) => console.log(message.sid));
// Download the twilio-csharp library from twilio.com/docs/csharp/install
using System;
using Twilio;
class Example
{
 static void Main(string[] args)
 {
    // Find your Account Sid and Auth Token at twilio.com/user/account
    string AccountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    string AuthToken = "your_auth_token";
    var twilio = new TwilioRestClient(AccountSid, AuthToken);

    var message = twilio.SendMessage(
        "+15017250604", "+15558675309",
        "This is the ship that made the Kessel Run in fourteen parsecs?",
        new string[] { "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg" }
    );
    Console.WriteLine(message.Sid);
 }
}
<?php

// this line loads the library 
require('/path/to/twilio-php/Services/Twilio.php'); 
 
$account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
$auth_token = 'your_auth_token'; 
$client = new Services_Twilio($account_sid, $auth_token); 
 
$client->account->messages->create(array( 
    'To' => "+15558675309", 
    'From' => "+15017250604", 
    'Body' => "This is the ship that made the Kessel Run in fourteen parsecs?", 
    'MediaUrl' => "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",  
));
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new account_sid, auth_token

@client.account.messages.create({
  :from => '+15017250604',
  :to => '+15558675309', 
  :body => 'This is the ship that made the Kessel Run in fourteen parsecs?',
  :media_url => 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg',
})
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

public class Example {
  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String AUTH_TOKEN = "your_auth_token";

  public static void main(String[] args) {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    Message message = Message
        .creator(new PhoneNumber("+15558675309"), new PhoneNumber("+15017250604"),
            "This is the ship that made the Kessel Run in fourteen parsecs?")
        .setMediaUrl("https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg")
        .create();

    System.out.println(message.getSid());
  }
}
// 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?", 
    mediaUrl: "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",  
}, 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": "1",
  "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",
  "subresource_uris": {
    "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc781610ec0b3400c9e0cab8e757da937/Media.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>1</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>
    <Media>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMf1150fe5baf04104a39c3f311a053e4e/Media.xml</Media>
  </SubresourceUris>
</Message>
</TwilioResponse>
イメージ URL 付きメッセージの送信

メッセージ送信とHTTP POST

新しいメッセージを送信するには、Messages list リソース URI へ HTTP POST リクエストを発行します。

/2010-04-01/Accounts/{AccountSid}/Messages

POSTパラメータ

必要なパラメーター

ToがメッセージをPOSTする際に必要です。

パラメーター 説明
To 宛先の電話番号。'+' と国コードを含むフォーマット。例)+16175551212 (E.164 形式)
アカウントがトライアルの場合、送信先電話番号は検証済みの必要があります。
条件付きパラメーター

次のパラメーターを少なくとも 1 回 POST して、メッセージの 'From' の電話番号または送信者 ID を決定する必要があります。

パラメーター 説明
From 送信するメッセージの種類で有効な Twilio 電話番号(E.164 形式)または英数字の送信者 ID。Twilio から購入した電話番号またはショートコードは、ここで使用できます。(たとえば)自分自身の携帯電話からのメッセージをなりすますことはできません。
MessagingServiceSid このメッセージに関連付けるメッセージングサービスの 34 文字のユニークな識別子です。このパラメーターを使用して、構成済みのメッセージングサービス設定とコパイロット機能を使用します。このパラメーターのみが設定されている場合、Twilio は有効なコパイロット機能を使用して、配信する From 電話番号を選択します。

MessagingServiceSid パラメーターを指定している場合、API レスポンスが多少異なります。From パラメーターのみが指定されている場合、Twilio は動的に電話番号を検証して、queued ステータスまたはエラーを返します。MessagingServiceSid パラメーターが指定されている場合、Twilio はまず accepted を返します。次に、最適な From 電話番号を決定します。配信エラーは、非同期に StatusCallback URL に送信されます。

さらに、メッセージの内容を表す次のパラメーターを少なくとも 1 つ POST する必要があります。

パラメーター 説明
Body 送りたいメッセージ本文。最大1600文字です。
MediaUrl あなたがメッセージに入れて送りたいメディアのURLgifpngjpegのみが受信者のデバイスでサポートされています。その他の形式もAPIで許容されています。メディアファイルの上限は5MBです。複数のイメージを本文に入れて送りたい場合は複数のMediaUrl値をPOSTリクエストに入れて下さい。1つのメッセージに付き、10個のMediaURLを含めることができます。

もしBMPキャラクターではない文字を送る場合、文字数は1600文字未満になります。多くの言語はBMPキャラクターをサポートします。

MediaUrl を指定しない場合、本文が文字コード GSM-7 換算で 160 文字(または文字コード UCS-2 換算で 70 文字)より大きいメッセージは、SMS として送信され、分割されて、それに基づき請求されることに注意してください。

MediaUrlのコンテンツタイプのチェックは、提供されたURLのcontent-typeヘッダーにより取得されます。content-typeがメディアと一致しない場合、リクエストは拒否されます。Twilioは以下のmime-typeをサポートします。 image/gif, image/png, and image/jpeg。他の形式もサポートします。

オプションパラメーター

次のパラメーターを含めることができます。

パラメーター 説明
StatusCallback メッセージステータスが queuedfailedsentdelivered、または undelivered のいずれかに変化するたびに Twilio が POST する URL。Twilio は、MessageSid を他の標準リクエストパラメーター、および MessageStatusErrorCode と一緒に POST します。 MessagingServiceSid と一緒にこのパラメーターが渡された場合、Twilio は メッセージングサービスの StatusCallback URL を無効にします。 相対URL以外は有効なホスト名を含まなければなりません(アンダースコアは認められません)。
ApplicationSid Twilio はこの アプリケーションMessageStatusCallback プロパティの URL に、 MessageSid とともに MessageStatus=sent または MessageStatus=failed をPOST します。 上述の StatusCallback パラメーターも渡される場合、アプリケーションの MessageStatusCallback パラメーターが優先されます。
MaxPrice 配信するメッセージの許容合計最大料金(米国ドル)を小数点以下 4 桁で表します。メッセージはすべて、プライスポイントに関係なく、配信キューに入ります。後で POST リクエストが StatusCallback URL に送信され、ステータスが 'Sent' または 'Failed' に変更されます。メッセージの料金がこの値より高くなると、メッセージは失敗し、送信されません。MaxPrice が設定されていない場合、メッセージの料金はすべて許容されます。
ProvideFeedback 追跡可能なユーザーアクションを含むメッセージを送信し、Message Feedback APIを使用してメッセージの配信を確認したい場合は、この値を true に設定します。このパラメーターは既定で false に設定されています。
ValidityPeriod The number of seconds that the message can remain in a Twilio queue. After exceeding this time limit, the message will fail and a POST request will later be made to your Status Callback URL. Valid values are between 1 and 14400 seconds (the default). Please note that Twilio cannot guarantee that a message will not be queued by the carrier after they accept the message. We do not recommend setting validity periods of less than 5 seconds.
リクエスト パラメーター

Twilioがアプリケーションに渡すStatusCallback URLに送信されるパラメーターはすべての標準的なリクエストパラメーターとこれらの追加パラメーターを含みます。

パラメーター 説明
MessageStatus メッセージのステータス。メッセージ到達情報はこのステータスに含まれます。考えられる値はこちらを参照下さい。
エラーコード メッセージに関連するエラーコード。failedもしくはundeliveredの場合、エラーコードは失敗に関するさらなる情報を提供します。配信が成功した場合はErrorCode は存在しません。考えられる値はこちらをご覧ください。

メッセージングサービス

Twilio メッセージング機能を使用してさまざまなユースケースを強化する際、アカウントログとメッセージログを別々のメッセージングサービスに分けると、役に立つ場合があります。メッセージングサービスは、メッセージを整理して、メッセージのグループ向けに固有の機能を提供することができます。これにより、コードがクリーンに保たれ、アカウントポータルから直接メッセージング構成を調整できるようになります。

メッセージングサービスは、Inbound Request URL と StatusCallback URL の構成から始めます。高度な構成の場合、Twilio のコパイロット機能を使用して、アプリケーションにインテリジェンスを追加できます。

メッセージを送信する際、1 つまたは複数の電話番号とショートコードをメッセージングサービスに関連付ける必要があります。アウトバウンドメッセージを送信するたびに、有効なコパイロット機能に基づいて、メッセージングサービスに関連付けられている電話番号の 1 つが選択されます。

英字と数字の送信者 ID

英数字の送信者 ID は、ブランド付きの一方向メッセージングに使用します。サポートされている国に SMS を送信する際は、追加コストなしで英字と数字の送信者 ID を使用できます。大文字、小文字のASCII文字、0から9までの数字、スペースが使えます。: [A-Za-z0-9 ]英字と数字の送信者 ID を使用する場合、使用できる文字数は 1 ~ 11 文字です。

アカウントで英数字の送信者 ID を有効にするには、help@twilio.com にご連絡ください。

送信制限

メッセージの送信速度は、メッセージの宛先に基づいてさまざまな速度で制限される可能性があります。たとえば、米国/カナダが宛先の場合は、1 秒あたり 1 件のメッセージという制限があります。国際的には、上限は 10MPS です。詳細については、この FAQ を参照してください。

多数のメッセージをすばやく送信する必要がある場合(期間限定の広告など)や、1 秒につき 1 件よりも速いペースで送信しなければならない場合は、追加の電話番号を購入して、発信の容量を増やすことができます。

ショートコードはロングコードに比べて送信レートが高く設定されています。FAQをご覧ください。(ショートコードは日本では未提供です)

メッセージに対する返信のハンドリング

メッセージURLを特定することにより、Twilio電話番号が有効になります。あなたの送信したメッセージに誰か返信をするとあなたに通知をするためにアプリケーションに対して要求を行います。TwilioのリクエストとあなたのレスポンスはTwilioドキュメントのメッセージの部分に網羅されています。

1 / 1
Loading Code Samples...
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 6.x
  • 7.x
SDKバージョン:
  • 2.x
  • 3.x
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 5.x
  • 6.x
SDKバージョン:
  • 4.x
  • 5.x
形式:
  • JSON
  • XML
// Download the twilio-csharp library from twilio.com/docs/libraries/csharp
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
using System.Collections.Generic;

class Example
{
   static void Main(string[] args)
   {
        // Find your Account Sid and Auth Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken = "your_auth_token";
        TwilioClient.Init(accountSid, authToken);

        var mediaUrl = new List<Uri>() {
            new Uri( "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg" )
        };
        var to = new PhoneNumber("+15017250604");
        var message = MessageResource.Create(
            to,
            from: new PhoneNumber("+15558675309"),
            body: "This is the ship that made the Kessel Run in fourteen parsecs?",
            mediaUrl: mediaUrl);
        Console.WriteLine(message.Sid);
   }
}
<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once '/path/to/vendor/autoload.php'; // Loads the library
use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token = "your_auth_token";
$client = new Client($sid, $token);

$client->messages->create(
    "+15558675309",
    array(
        'from' => '+15017250604',
        'body' => "This is the ship that made the Kessel Run in fourteen parsecs?",
        'mediaUrl' => "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",
    )
);
from twilio.rest import TwilioRestClient 
 
# put your own credentials here 
ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
AUTH_TOKEN = "your_auth_token" 
 
client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) 
 
client.messages.create(
    to="+15558675309", 
    from_="+15017250604", 
    body="This is the ship that made the Kessel Run in fourteen parsecs?", 
    media_url="https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg", 
)
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new(account_sid, auth_token)

@message = @client.account.messages.create(
  from: '+15017250604',
  to: '+15558675309',
  body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
  media_url: 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg'
)

puts @message.subresource_uris
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json' \
--data-urlencode 'To=+15558675309'  \
--data-urlencode 'From=+15017250604'  \
--data-urlencode 'Body=This is the ship that made the Kessel Run in fourteen parsecs?'  \
-d 'MediaUrl=https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg' \
-u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token
// You may want to be more specific in your imports
import java.util.*;
import com.twilio.sdk.*;
import com.twilio.sdk.resource.factory.*;
import com.twilio.sdk.resource.instance.*;
import com.twilio.sdk.resource.list.*;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

public class TwilioTest {
 // Find your Account Sid and Token at twilio.com/user/account
 public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
 public static final String AUTH_TOKEN = "your_auth_token";

 public static void main(String[]args) throws TwilioRestException {
  TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

   // Build the parameters
   List<NameValuePair> params = new ArrayList<NameValuePair>();
   params.add(new BasicNameValuePair("To", "+15558675309"));
   params.add(new BasicNameValuePair("From", "+15017250604"));
   params.add(new BasicNameValuePair("Body", "This is the ship that made the Kessel Run in fourteen parsecs?"));
   params.add(new BasicNameValuePair("MediaUrl", "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg"));

   MessageFactory messageFactory = client.getAccount().getMessageFactory();
   Message message = messageFactory.create(params);
   System.out.println(message.getSid());
 }
}
from twilio.rest import Client

# put your own credentials here
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"

client = Client(account_sid, auth_token)

client.messages.create(
    to="+15558675309",
    from_="+15017250604",
    body="This is the ship that made the Kessel Run in fourteen parsecs?",
    media_url="https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg")
// 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?',
    mediaUrl: 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg',
  })
  .then((message) => console.log(message.sid));
// Download the twilio-csharp library from twilio.com/docs/csharp/install
using System;
using Twilio;
class Example
{
 static void Main(string[] args)
 {
    // Find your Account Sid and Auth Token at twilio.com/user/account
    string AccountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    string AuthToken = "your_auth_token";
    var twilio = new TwilioRestClient(AccountSid, AuthToken);

    var message = twilio.SendMessage(
        "+15017250604", "+15558675309",
        "This is the ship that made the Kessel Run in fourteen parsecs?",
        new string[] { "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg" }
    );
    Console.WriteLine(message.Sid);
 }
}
<?php

// this line loads the library 
require('/path/to/twilio-php/Services/Twilio.php'); 
 
$account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
$auth_token = 'your_auth_token'; 
$client = new Services_Twilio($account_sid, $auth_token); 
 
$client->account->messages->create(array( 
    'To' => "+15558675309", 
    'From' => "+15017250604", 
    'Body' => "This is the ship that made the Kessel Run in fourteen parsecs?", 
    'MediaUrl' => "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",  
));
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new account_sid, auth_token

@client.account.messages.create({
  :from => '+15017250604',
  :to => '+15558675309', 
  :body => 'This is the ship that made the Kessel Run in fourteen parsecs?',
  :media_url => 'https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg',
})
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

public class Example {
  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String AUTH_TOKEN = "your_auth_token";

  public static void main(String[] args) {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    Message message = Message
        .creator(new PhoneNumber("+15558675309"), new PhoneNumber("+15017250604"),
            "This is the ship that made the Kessel Run in fourteen parsecs?")
        .setMediaUrl("https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg")
        .create();

    System.out.println(message.getSid());
  }
}
// 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?", 
    mediaUrl: "https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg",  
}, 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": "1",
  "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",
  "subresource_uris": {
    "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc781610ec0b3400c9e0cab8e757da937/Media.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>1</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>
    <Media>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMf1150fe5baf04104a39c3f311a053e4e/Media.xml</Media>
  </SubresourceUris>
</Message>
</TwilioResponse>