2016-05-31 4 views
2

Twilioの継承した古いコードは、MessageListRequestの絶対PageNumberプロパティを使用してメッセージを取得しますが、ドキュメントによればこれは廃止されており、GetNextPageとGetPrevPageを使用する必要があります。twinio APIのgetnextpageの使用例は何ですか?

APIメタデータには、「ページングにGetNextPageとGetPreviousPageを使用する」というメッセージが表示されています。ページパラメータの有効期限は、https://www.twilio.com/engineering/2015/04/16/replacing-absolute-paging-with-relative-pagingです。

この使用例はありますか?私は、APIのテストメソッドの1つを除いて、ドキュメント内で何も見つけることができませんでした。このサンプルを複数のページに処理することがどれほどうまくいくかわかりません。

public class Foo : TwilioBase 
{ 
    public string Bar { get; set; } 
} 

public class FooResult : TwilioListBase 
{ 
    public List<Foo> Foos { get; set; } 
} 
[Test] 
public void ShouldGetNextPage() 
{ 
    IRestRequest savedRequest = null; 

    FooResult firstPage = new FooResult(); 
    firstPage.NextPageUri = new Uri("/Foos?PageToken=abc123", UriKind.Relative); 

    mockClient.Setup(trc => trc.Execute<FooResult>(It.IsAny<IRestRequest>())) 
     .Callback<IRestRequest>((request) => savedRequest = request) 
     .Returns(new FooResult()); 
    var client = mockClient.Object; 

    var response = client.GetNextPage<FooResult>(firstPage); 

    mockClient.Verify(trc => trc.Execute<FooResult>(It.IsAny<IRestRequest>()), Times.Once); 
    Assert.IsNotNull(savedRequest); 
    Assert.AreEqual("/Foos?PageToken=abc123", savedRequest.Resource); 
    Assert.AreEqual(Method.GET, savedRequest.Method); 

    Assert.IsNotNull(response); 
} 

古い用法はそうのようになります。私はどのMessagingServiceSidを使用するためにそれを更新する必要があるため

var twilio = new TwilioRestClient(config.AccountSid, config.AuthToken); 
var result = new List<Message>(); 
MessageResult tempResult; 
int page = 0; 
do 
{ 
    var request = new MessageListRequest(); 
    request = new MessageListRequest { Count = 1000, DateSent = newestDate, DateSentComparison = ComparisonType.GreaterThanOrEqualTo, PageNumber = page++, To = config.FromNumber }; 

    tempResult = twilio.ListMessages(request); 
    result.AddRange(tempResult.Messages); 
} while (tempResult.NextPageUri != null); 

は最後に、私はNuGetの代わりにtwilio-csharp GitHub projectからTwilioのAPI 3.4.1.0を建てまだAPIには含まれていません。

ありがとうございます。もし私が自分でそれを理解できれば、私は解決策を投稿します。

答えて

5

実際には、今すぐ使用できるようになりました。

MessageResult messages = twilio.ListMessages(request); 
do 
{ 
    if (messages.Messages != null) 
    { 
     foreach (var message in messages.Messages) 
     { 
      ... process results   
     } 
     if (messages.NextPageUri != null) 
     { 
      messages = twilio.GetNextPage<MessageResult>(messages); 
     } 
    } 
} while (messages.NextPageUri != null); 
+0

結果の最後のページを見逃すことはありませんか?最後のページをヒットすると、messages = twilio.GetNextPageが呼び出されますが、すぐに "while"句にヒットします。 messages.NextPageUriは、もはやifにヒットした時と同じ値を持ちません。 –

0

APIエクスプローラからこの例を試しましたか?あなたの条件に一致するすべてのレコードが処理されるまで https://www.twilio.com/console/dev-tools/api-explorer/sms/sms-mms-list

var twilio = new TwilioRestClient(AccountSid, AuthToken); 

// Build the parameters 
var options = new MessageListRequest();  

var messages = twilio.ListMessages(options); 
foreach (var message in messages.Messages) 
{ 
Console.WriteLine(message.Body); 
} 

helper libraryは、自動的にリストの上にあなたのループとしてAPIから取得します。

MessageListRequestで結果を制限できます。

試してみてください、それがどうなるか教えてください。

+0

これは、最大サイズが1000レコードの単一ページを返します。私はすべての結果を取得する必要があります。私は、現在廃止されたPageNumber MessageListRequestを使用して、結果がすべて取得されるまでページングします。 –

+0

^^これは当てはまりません。ページングを使用する必要があります。 –

関連する問題