如何通过Call SID获取Twilio通话的全部关联费用?
如何通过代码获取Twilio呼叫(Call SID)的总费用(含STT、TTS及通话时长费用)
你当前的代码只能获取基础通话时长的费用,因为Twilio的Call资源返回的price字段仅包含核心通话费用,STT(语音转文字)、TTS(文字转语音)这类附加服务的费用会作为单独的账单记录存在,且关联同一个Call SID。要获取总费用,需要从Twilio的**使用记录(Usage Records)**中筛选出该Call SID对应的所有条目并累加。
Python 实现
from twilio.rest import Client # 替换为你的Twilio账号信息 account_sid = '你的Account SID' auth_token = '你的Auth Token' target_call_sid = '要查询的Call SID' client = Client(account_sid, auth_token) # 筛选该Call SID对应的所有使用记录 usage_records = client.usage.records.list( call_sid=target_call_sid, # 可选:指定时间范围,避免查询全部历史(按需调整) start_date='2024-01-01', end_date='2024-12-31' ) # 累加所有费用 total_cost = 0.0 currency = None for record in usage_records: total_cost += float(record.price) if not currency: currency = record.price_unit # 费用为负数表示扣款,可按需取绝对值 print(f"总费用: {abs(total_cost):.2f} {currency}")
PHP 实现
<?php require_once '/path/to/vendor/autoload.php'; // 引入Twilio SDK use Twilio\Rest\Client; // 替换为你的Twilio账号信息 $accountSid = '你的Account SID'; $authToken = '你的Auth Token'; $targetCallSid = '要查询的Call SID'; $client = new Client($accountSid, $authToken); // 筛选该Call SID对应的所有使用记录 $usageRecords = $client->usage->records ->read([ 'callSid' => $targetCallSid, // 可选:指定时间范围 'startDate' => '2024-01-01', 'endDate' => '2024-12-31' ]); // 累加所有费用 $totalCost = 0.0; $currency = null; foreach ($usageRecords as $record) { $totalCost += (float)$record->price; if (!$currency) { $currency = $record->priceUnit; } } // 费用为负数表示扣款,可按需取绝对值 echo "总费用: " . number_format(abs($totalCost), 2) . " " . $currency; ?>
关键说明
- 使用记录会包含所有与该Call SID关联的费用项,包括呼入时长、呼出时长、STT识别、TTS合成等。
- 指定
start_date和end_date可缩小查询范围,提升查询效率,尤其是账号历史记录较多时。 - Twilio返回的
price字段为负数(代表扣款),可根据显示需求取绝对值。
内容的提问来源于stack exchange,提问作者toto_tata
相关产品推荐
相关产品推荐

