如何获取 twilio 中的出站电话价格?

问题描述 投票:0回答:1

因此,我试图将每次通话的价格作为我的任务要求之一。我知道当呼叫完成时应该有其价格,但在出站呼叫的情况下,我收到呼叫状态回调,此时有父呼叫价格,但没有子呼叫价格。我直接在twilio中配置了状态回调url。

所以我试图对入站做的是从状态响应正文中获取呼叫 sid -> do client.calls(callId).fetch();对于父调用和 client.calls.list({parentCallSid: callId }) 对于子调用 -> 接收这些调用中的价格并计算整个调用的 1 价格。

在出站呼叫的情况下,我收到已完成状态的子呼叫和父呼叫,但子呼叫缺少价格。另外值得一提的是,我正在接听电话,持续了一段时间然后我完成了。我不考虑将未知时间段的超时作为解决方案(我能够在一分钟内获取价格,但我不知道它何时生成)。您在项目中如何处理这个问题?我是否应该每天向 twilio 发出 2-3 次请求以检索该时间段内所有呼叫的价格?或者也许有某种回调或网络钩子?

node.js twilio twilio-api twilio-twiml
1个回答
0
投票

使用 StatusCallback Webhook 收集通话时长和录音时长。使用录音的持续时间和长度来确定通话费用。

当 Twilio 在对 StatusCallback URL 的异步请求中向您的应用程序发送参数时,它们包含在同步 TwiML 请求中传递的相同参数。

状态回调请求还传递这些附加参数:

CallDuration:刚刚完成的通话的持续时间(以秒为单位)。

RecordingDuration:录制音频的持续时间(以秒为单位)。

接下来,使用 Twilio Voice Pricing REST API 确定您帐户的定价:

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

TwilioClient.Init(accountSid, authToken);

var number = NumberResource.Fetch(
    originationNumber: new Twilio.Types.PhoneNumber("+15108675310"),
    pathDestinationNumber: new Twilio.Types.PhoneNumber("+15017122661")
);

Console.WriteLine(number.OutboundCallPrices);

以上回复:

{
  "country": "United States",
  "destination_number": "+15017122661",
  "inbound_call_price": {
    "base_price": null,
    "current_price": null,
    "number_type": null
  },
  "iso_country": "US",
  "origination_number": "+15108675310",
  "outbound_call_prices": [
    {
      "base_price": "0.013",
      "current_price": "0.013",
      "origination_prefixes": [
        "ALL"
      ]
    }
  ],
  "price_unit": "USD",
  "url": "https://pricing.twilio.com/v2/Voice/Numbers/+18001234567"
}

当前的基本价格应该是您在 Twilio 发票上找到的价格。

需要明确的是,会有一些四舍五入,但祝您好运,使其与 Twilio 向您收取的费用 完全匹配(不要忘记调用有多个环节)。如果您这样做是为了向客户计费,这应该允许您创建计费业务规则。

© www.soinside.com 2019 - 2024. All rights reserved.