如何通过子帐户获取短信记录

时间:2016-04-18 16:02:14

标签: c# sms twilio

我知道使用MessageListRequest类来请求来自Twilio服务器的SMS消息列表。定义请求时,没有Subaccount过滤器作为参数。有谁知道如何获取仅与特定子帐户关联的消息的消息列表?感谢。

我已使用子帐户凭据获取消息列表,但Twilio请求的结果是列表对象,条目为零。我知道子帐户中有消息,因为我可以在子帐户的Twilio仪表板中看到它们。你能告诉我这段代码我做错了什么吗?

    var aRequest = new MessageListRequest();
        aRequest.From = null;
        aRequest.To = null;            
        aRequest.DateSent = null;

         GetSubAccounts();
         if (mySubAccountSid != null)
         {
             TwilioRestClient aTwilio = new TwilioRestClient(mySubAccountSid,
                                        mySubAccountToken);
             var aResult = aTwilio.ListMessages(aRequest);
             if (aResult != null)
             {
                 foreach (var aMessage in aResult.Messages)
                 {
                     mySQLManager.UpdateSMSLogTable(aMessage, myVesselID);
                     Methods.WriteLog(aMessage.Sid + " " + aMessage.To + " " + aMessage.Body);
                 }
             }
             return aList;
         }

1 个答案:

答案 0 :(得分:0)

  1. 简单的方法,即使你使用,也可能是你的意思 您的auth主凭据,但URL中的子帐户SID 提供Message List Resource/2010-04-01/Accounts/{AccountSid}/Messages,您获得了资源 对于那个子帐户。

    C#库有一个GetAccount方法来记帐 SID并返回Account对象(表示子帐户) 然后您应该能够正常进行API调用。

    var account = twilio.GetAccount("SUBACCOUNT_SID");
    
  2. 最终,如果你想追踪更复杂的东西 方式,您可以决定使用UsageRecords

    使用UsageRecords结合Subaccounts将允许您 根据某些行为构建使用情况报告和设置触发器。

    上面提供的两个链接将向您展示如何使用每个链接 更多详细信息,但是获取所有使用情况列表的示例 短信在C#中会喜欢这个:

    // 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 = "ACCOUNT_SID";
        string AuthToken = "AUTH_TOKEN";
        var twilio = new TwilioRestClient(AccountSid, AuthToken);
    
        var records = twilio.ListUsage("sms", null, null, null, null, null);
    
        foreach (var record in records.UsageRecords)
        {
          Console.WriteLine(record.Count);
        }
      }
    }