【问题标题】:Check Twilio balance from API从 API 检查 Twilio 余额
【发布时间】:2015-06-14 17:54:45
【问题描述】:

有谁知道如何以编程方式检查 Twilio 中的帐户余额(通过 API)?没有实施吗?

【问题讨论】:

    标签: api twilio


    【解决方案1】:

    您可以获取 Twilio Account details,然后使用来自帐户响应的 subresource_uris.balance 请求获得余额

    {
      "status": "active",
      "subresource_uris": {
         ...
         "balance": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Balance.json"
      },
      "type": "Full",
      ...
    }
    

    这是一个 sn-p - https://gist.github.com/andriichuk/d1c81e58398b19979a3ddbe8a64b316b

    【讨论】:

    • 是的 - 我认为在提出问题并且写了一些答案时,没有办法取得平衡。
    • 尽管我在 subresource_uris 对象上看到了 balance 属性,但在向该端点发出 HTTP GET 时收到了 404 状态代码。我不认为 /Balance 可用于子帐户,只有主项目帐户。
    • 我找到了一种获取子账户总使用价格的方法:/2010-04-01/Accounts/{AC####}/Usage/Records.json?Category=totalprice
    【解决方案2】:

    无法通过 Twilio API 检查帐户余额。

    请参阅 REST API 文档了解可能的情况:https://www.twilio.com/docs/api/rest

    【讨论】:

    • 我想知道为什么他们有这么方便的API,没有简单的功能检查余额??
    • 我有同样的问题,但似乎没有 api 可以做到这一点。
    • 很惊讶这不存在,这是一个非常基本的要求,能够监控,以免信用不足,例如你的信用卡过期了。请注意,Plivo 确实允许您通过 API 检查此类内容,因此可能值得探索 - 请参阅 plivo.com/docs/getting-started/account-api/#sample-response
    • 我刚刚花了最后一个小时搜索他们的 API 并且很惊讶这个简单的功能不存在。我提交了一张请求此类功能的票,但鉴于它现在已经过时了,看起来不包括它是一个商业决定:(
    【解决方案3】:

    2020 年 6 月 27 日更新 - Twilio 的网站现在包含一个示例 cURL 脚本,它可以包装在 HTML GET 请求中: https://support.twilio.com/hc/en-us/articles/360025294494-Check-Your-Twilio-Project-Balance

    这是我用来获取值的 C# 代码:

    using System.Net;
    using Newtonsoft.Json;
    
    string url = "https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/Balance.json";
    var client = new WebClient();
    client.Credentials = new NetworkCredential(accountSid, authToken);
    string responseString = client.DownloadString(url);
    
    dynamic responseObject = JsonConvert.DeserializeObject<object>(responseString);
    double accountBalance = Double.Parse(responseObject["balance"].Value);
    accountBalance = Math.Round((double)accountBalance,2);
    

    【讨论】:

      【解决方案4】:

      我确认没有 API 调用来获取您的帐户余额。即使在这个问题被问到两年后。我已经提交了一张要求采取这种基本行动的票,并被告知“它在to-do 名单上”,但他们并不太有说服力。无论出于何种原因,设计使您无法保持平衡。很遗憾,因为他们拥有如此强大的 API 和功能集。

      【讨论】:

      • 我想我会补充一点,通过一些研究,我发现许多替代品实际上更便宜并且允许稍微更好的灵活性,尤其是在我的树林里(澳大利亚)。功能 twilio 简单地说 no 可与本地玩家一起使用。考虑到我不打算过多地登录该网站,我必须进行余额检查。我建议人们环顾四周。
      【解决方案5】:

      这可以通过使用 HttpClient 来实现。 这是一个 C# 示例:

      public static string GetTwilioBalance(string accountSid, string authToken)
         {
             // declare variable to assign later on
             dynamic balance = null;
      
             // check required parameters value
             if (!string.IsNullOrEmpty(accountSid) && !string.IsNullOrEmpty(authToken))
             {
                 // initialize the TwilioClient using credentials passed as parameters
                 TwilioClient.Init(accountSid, authToken);
      
                 // declare instance of HttpClient
                 using (var httpClient = new HttpClient())
                 {
                     // declaring and assigning the authorization value to pass as a parameter in the request to the API
                     string base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes(accountSid + ":" + authToken));
      
                     // adding it and using Basic authentication
                     httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", base64authorization);
      
                     // receiving the raws response (got url from reading docs and other posts from other languages)
                     HttpResponseMessage response = httpClient.GetAsync("https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/Balance.json").Result;
      
                     // assigning the content to a variable 
                     HttpContent content = response.Content;
      
                     // reading the string
                     string result = content.ReadAsStringAsync().Result;
      
                     // multiple ways of reading Json (which we will receive as result, here are 2
      
                     //dynamic value = JObject.Parse(result);
                     //string result1 = value.balance;
                     //string result2 = value["balance"];
      
                     // I prefer this one but this is a preference :)
                     balance = JObject.Parse(result)["balance"].ToString();                                            
                 }
             }
      
             // you can handle this as you like
             // for example purposes I am returning either the value of the Balance or a string value to flag/check afterwards if not succesful
             return (balance != null) ? balance : "BalanceNotRetrieved";
         }
      

      你可以这样使用它:

      string twilioBalance = GetTwilioBalance(accountSid, authToken);
      

      希望它对某人有所帮助!

      【讨论】:

      • 直到 Twilio 更新他们的 C# 库,截至 2021 年,这似乎是获得当前余额的唯一方法。干得好@Dimitri。
      【解决方案6】:

      对于那些使用node.js (javascript) 的人来说,最好的方法是:

             require('dotenv').config();
          const client = require('twilio')(process.env.ACCOUNT_SID, process.env.AUTH_TOKEN)
          
          client.balance.fetch()
            .then((data) => {
              const balance = Math.round(data.balance * 100) / 100;
              const currency = data.currency;
              console.log(`Your account balance is ${balance} ${currency}.`)
            });
      

      更多信息 => https://www.twilio.com/blog/check-twilio-account-balance-javascript

      完美运行!

      【讨论】:

        【解决方案7】:

        您可以使用此脚本通过 Python 获取余额:

        from twilio.rest import Client
        
        client = Client()
        balance_data = client.api.v2010.balance.fetch()
        balance = float(balance_data.balance)
        currency = balance_data.currency
        
        print(f'Your account has {balance:.2f}{currency} left.')
        

        检查此Tutorial 为我工作,为帐户和子帐户工作

        【讨论】:

          【解决方案8】:

          我抓取所有记录并在 python 中使用它(for loop in records):

          Balance = 1024 - round_decimal(r.price)
          

          1024 是我支付的金额(需要在适用时更新),价格是我从 API 中花费的金额。这是我想出的最好的,将您所知道的与 API 提供的有限信息相结合。

          【讨论】:

            猜你喜欢
            • 2021-05-19
            • 2021-01-06
            • 1970-01-01
            • 2017-02-18
            • 1970-01-01
            • 2015-12-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多