Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Usage and Migration Guide for Twilio's C#/.NET Helper Library 5.x

Deprecation notice: New functionality will only be added to the new library (C# 5.x). The old library (C# 4.x) is deprecated and Twilio will no longer provide bug fixes. Support might ask you to upgrade before debugging issues. The old library will remain available indefinitely on GitHub.

オープンソースのTwilio C# / .NET SDKのバージョン4.xから5.xには大きな変更点が含まれるため、新バージョンへの移行を可能なかぎり容易にできるようここでは主な変更点について明らかにしています。 はじめてC# / .NETアプリケーションにTwilioを統合する場合、インストールページまで読み飛ばしていただいてもかまいません。

.NETのバージョン互換性

Twilio C# SDKは.NET Frameworkのバージョン 3.5以上、または.NET標準 v1.4をサポートする任意の.NETランタイムを使用するC#、VB.NET、F#で記述された.NETアプリケーションをサポートしています。 

クライアントの初期化

Initializing the client for future REST API calls is now a static method. For most use cases, there is no need to directly create a client object.

// Find your Account Sid and Auth Token at twilio.com/user/account
var accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var authToken = "your_auth_token";
TwilioClient.Init(accountSid, authToken);

これは1度行うだけで問題ありません。 Twilio APIへの後続するすべての呼び出しはInitメソッドで渡された認証情報を使用して認証されます。

Manual Client Initialization

For use cases that require different credentials per request, such as subaccounts, instantiate a new TwilioRestClient object directly instead of calling Init(). Then, pass the client object into the resource method via the optional client parameter.

// Find your Account Sid and Auth Token at twilio.com/user/account
var accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var authToken = "your_auth_token";
var client = new TwilioRestClient(accountSid, authToken);

// Pass the client into the resource method
var message = MessageResource.Create(
    to: new PhoneNumber("+15558675309"),
    from: new PhoneNumber("+15017250604"),
    body: "Hello from C#",
    client: client);

To ensure thread safety, create a new TwilioRestClient for each unique set of credentials.

カスタムクライアント

REST API要求を行うヘルパーライブラリーの各メソッドには、オプションのクライアントパラメーターがあります。 既定では、ライブラリーはTwilioClient.Initを呼び出すときに作成される既定のTwilioRestClientオブジェクトを使用します。 何らかの方法でHTTPリクエストの発行時にそれを操作する(たとえば、プロクシーサーバーでの使用など)必要がある場合、自身でITwilioRestClientを実装する独自のクラスを記述して、そのクラスのインスタンスをヘルパーライブラリーのメソッド呼び出しに渡すことができます。 大半のユースケースでは、これは必要ありません。

Examples of using a custom client in the Twilio helper library are available for both .NET Framework and .NET Core.

リソースクラス

旧バージョンのライブラリーには色々なこと(メッセージの送信、通話ログの取得、などなど)を行う数百のメソッドが一つのクラスに含まれていました。 今では、Twilio REST APIの各クラスには対応するC#のクラスがあります。 SMSメッセージの作業を行いたい? MessageResourceクラスが必要です。 電話をかけたい? CallResourceをチェックしてください。

各リソースクラスは一連のstaticメソッドを持っており、これを呼び出すことでリソースに対して作成(Create)、取得(Fetch)、読み込み(Read / List)、更新(Update)、削除(Delete)できます。 あるリソースに対してTwilioでサポートされないメソッドがある場合、それはクラスから除外されます。

Create

数多くのリソースが作成可能です。 これを行うにはクラスのCreate staticメソッドを呼び出します。 たとえば、下記は新規SMSメッセージを作成(送信)する方法です。

var message = MessageResource.Create(
    to: new PhoneNumber("+15558675309"),
    from: new PhoneNumber("+15017250604"),
    body: "I am one with C# and C# is with me."
);
Console.WriteLine(message.DateCreated);

ここではTwilio上でMessageリソース(メッセージを送信します)を作成し、そのリソースの全プロパティーに返された変数messageからアクセスできるようになります。

取得

特定のリソースの一意の識別子が判っており、その全プロパティを取得する場合は、Fetchを使用します。 たとえば、Twilioアカウントに関する情報を取得可能です。

var account = AccountResource.Fetch("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
Console.WriteLine(account.DateCreated);

read

Readメソッドはリソースの一覧を取得します。 しばしば、Readメソッドは返される結果の一覧を絞り込むための追加のフィルタリングパラメーターを提供しています。 下記は、特定の電話番号に対して発信された通話の一覧を取得する例です。

var calls = CallResource.Read(to: new PhoneNumber("+15558675309"));
foreach (var call in calls)
{
    Console.WriteLine(call.StartTime);
}

ページング

以前のバージョンのヘルパーライブラリーでは、ページングについて気にかけることが必要でした。 結果の1ページを取得し、それから必要な全リソースが取得されるまで繰り返しページを要求します。 新バージョンでは、ページングは自動的に処理されます。 上記の例 -- それからReadを使用する際は常に - 返される結果を単にループで回し、追加ページに対するリクエストは自動で発行されます。

var thirtyDaysAgo = DateTime.UtcNow.AddDays(-30);
var messages = MessageResource.Read(dateSentAfter: thirtyDaysAgo);
// Iterating automatically requests additional pages 
// from the Twilio REST API
foreach (var message in messages)
{
    Console.WriteLine(message.Body);
}

返されるレコード数を制限したい場合、limitパラメーターを含めます。 たとえば、レコードを50に制限する方法は以下のようになります:

var messages = MessageResource.Read(dateSentAfter: thirtyDaysAgo, limit: 50);

アップデート

Update methods allow you to modify a specific resource. To use an Update method you’ll need to know the resource’s unique identifie.. Here’s an example that redacts a previously sent or received SMS message by setting the Body to an empty string:

MessageResource.Update("MM5ef8732a3c49700934481addd5ce1659", "");

削除する

DeleteメソッドはTwilioサービスからリソースを削除します。 FetchおよびUpdateメソッド同様、削除にはリソースの一意な識別子が必要です。 たとえば、通話の録音を削除する必要がある場合もあるでしょう。

RecordingResource.Delete("RE557ce644e5ab84fa21cc21112e22c485");

引数の受け渡し

リソースクラスで上記メソッドを呼び出す方法には2種類あります。 うちひとつについてはすでに触れました。 メソッドにいちが固定された、または/および名前のついた引数を渡すことです。 オプションの引数は既定値としてnullを取ります。 MessageResource.Createのメソッドシグネチャーを例に見てみましょう。

public static MessageResource Create(
        PhoneNumber to, 
        string accountSid = null, 
        PhoneNumber from = null, 
        string messagingServiceSid = null, 
        string body = null, 
        List<System.Uri> mediaUrl = null, 
        System.Uri statusCallback = null, 
        string applicationSid = null, 
        Decimal? maxPrice = null, 
        bool? provideFeedback = null, 
        ITwilioRestClient client = null)

Create関数には数多くの引数がありますが、その多くがオプションで、名前付き引数を使用することで必要な引数のみを渡すことができます。

var message = MessageResource.Create(
    to: new PhoneNumber("+15558675309"),
    from: new PhoneNumber("+15017250604"),
    body: "I am one with C# and C# is with me."
);

However, each of a resource’s Create, Update, Read and Delete methods can also be called using an Options class. Here’s the version of MessageResource.Create that takes a single CreateMessageOptions class.

多くの個々の引数を指定する代わりに、CreateMessageOptionクラスを作成し、そのプロパティーを使用してメッセージの値を設定し、それをCreateメソッドに渡します。 取得を行なった場合は、クラスはFetchMessageOptionとなります。 削除を行なった場合は、クラスはDeleteMessageOptionとなります。 命名パターンについてすでにお分かりでしょう?

Optionsクラスの使用時、コンストラクターには使用しているリソースに対する各必須パラメーターと実行したいアクションが含まれています。 たとえばSMSの作成時、「宛先 (to) 」電話番号は必須となるため、CreateMessageOptionsコンストラクターの引数になっています。 残りのプロパティーについては、作成されるOptionオブジェクトに設定できます。

var options = new CreateMessageOptions(new PhoneNumber("+15558675309"));
options.From = new PhoneNumber("+15017250604");
options.Body = "I am one with C# and C# is with me.";

var message = MessageResource.Create(options);

非同期メソッド

.NET Framework 4.5.1+または.NET Core 1.0以降を使用している場合は、Create、Fetch、Read、Update、およびDeleteリソースメソッドの非同期バージョンを使用できます。 ご推察のとおり、これらのメソッドはCreateAsync、FetchAsync、ReadAsync、UpdateAsync、およびDeleteAsyncとなります。 下記は、CreateAsyncを使用して新規通話を作成する例です:

public async Task<CallResource> PhoneHomeAsync()
{
    var call = await CallResource.CreateAsync(
        to: new PhoneNumber("+15558675309"),
        from: new PhoneNumber("+15017250604"),
        url: new Uri("http://demo.twilio.com/docs/voice.xml")
    );
    return call;
}

エラーの処理

Instead of checking the response for a RestException, you now need to catch the ApiException exception as shown in this example:

        
        
        
        

        TwiML

        Twilio C#SDKには、TwiMLを生成するヘルパークラスが含まれています。 以前にXMLを手動で生成している場合や、別のTwilio.TwiMLライブラリを使用したことがあるかもしれません。 ライブラリを使用してのTwiMLを生成は、整式のTwiMLが生成されることを確かにし、Visual StudioやVS Codeといったスマートエディターがレスポンスの作成時にどの動詞、名詞、属性が利用できるか示すことのできる良い方法です。

        TwiMLを生成するために使用できるクラスは、Twilio.TwiML.VoiceResponseとTwilio.TwiML.MessagingResponseの2つです。 音声通話を処理するときは前者を使用し、テキストメッセージ(SMS)に応答するときは後者を使用します。

        VoiceResponse

        TwiMLを構築して音声通話を処理するには、VoiceResponseクラスのインスタンスを作成してから、新しいTwiML動詞に対応するメソッドを呼び出します。 たとえば、下記は特定の言語で挨拶を読み上げるコードになります:

              
              
              
              

              こちらは入れ子にされた動詞を含む例です:

                    
                    
                    
                    

                    MessagingResponse

                    SMS応答のためのTwiMLの生成は、ほぼ同じ方法で行われますが、MessagingResponseクラスを使用します。 異なるクラスの存在によって、2つの異なるコンテキストでどのメソッドがサポートされているかを簡単に知ることができます。

                    下記は、単純なメッセージを返信する例です。

                          
                          
                          
                          

                          こちらは添付メディアを含むメッセージ送信の例です:

                                
                                
                                
                                

                                APIリクエストのデバッグ

                                デバッグを容易にするため、ライブラリーでは内部的に使用されるリクエストおよびレスポンスのオブジェクトへのアクセスが行えるようになっています。 この機能はライブラリーに内蔵されている既定のHTTPクライアントに内蔵されています。

                                たとえば、下記のようにして直前のレスポンスのステータスコードを取得できます:

                                      
                                      
                                      
                                      

                                      Client SDK用のセキュリティートークン

                                      JavaScript、iOS、およびAndroid用のTwilioクライアント側のSDKは、開発者のサーバー側のコードによって生成される認証またはケイパビリティートークンを必要とします。 ヘルパーライブラリーには、すべてのクライアントSDKのトークン生成機能が組み込まれています。 追加のNuGetパッケージ(Twilio.AuthやTwilio.Clientなど)を追加する必要はありません。 次のチュートリアルは、新しいヘルパーライブラリ用に更新され、これらのトークンを生成する方法を示しています。

                                      DateTime values

                                      All DateTime values in the C# helper library are in your local timezone (Kind=Local), as illustrated by this code:

                                            
                                            
                                            
                                            

                                            This code sample should create output similar to the following:

                                            Local Date/Time:
                                            2/1/2018 3:19:02 PM
                                            Local
                                            
                                            UTC Date/Time:
                                            2/1/2018 11:19:02 PM
                                            Utc
                                            

                                            Get DateTime in UTC by default

                                            If you would like all DateTime values returned from the Twilio API to be in UTC format, you may modify the JSON.NET default serializer settings as shown here.

                                                  
                                                  
                                                  
                                                  

                                                  This code would show output like so:

                                                  UTC Date/Time:
                                                  2/1/2018 11:19:02 PM
                                                  Utc
                                                  

                                                  ASP.NET MVCヘルパー

                                                  You may have previously used the Twilio.Mvc library in your ASP.NET MVC projects. When you migrate to v5.x of this library, you will need to remove the reference to the Twilio.Mvc package and replace it with the new Twilio.AspNet.Mvc package.

                                                  関連トピックとサポート

                                                  すべてのクイックスタートチュートリアル、およびAPIリファレンスのドキュメントには、古い4.xライブラリと新しい5.xライブラリの両方のサンプルコードが含まれています。 コピー&ペーストで活用できるサンプルが数多くあります。

                                                  Twilio C#ヘルパーライブラリはオープンソースソフトウェアです。 ソースを表示したり、問題を公開したり、プルリクエストを送信するには、GitHubにアクセスしてください。
                                                  最後に、弊社はいつでもお手伝いに労を惜しみません。 サポートに直接お問い合わせください

                                                  Rate this page:

                                                  ヘルプが必要ですか?

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