使用 Twilio 发送 SMS 后获取 SMS 的费用

Get the cost of SMS after SMS has delivered using Twilio

我正在做一个项目,在某些情况下它会发送一条 SMS 消息。

我的计划是在发送 SMS 时,我会保留记录,以用于调试目的(如果需要),以及保留我的服务发生的历史记录。我计划记录的事情之一是传递消息的成本。从 Twilio 文档看来这是可能的,除了当我发送消息时,我得到的响应是状态 queued 和价格是 null

然后我查看了使用 Twilio webhook 回调,以便我收到有关 SMS 传递状态的更新,这也可以正常工作,但我没有得到价格,我只收到以下信息:

(
    [SmsSid] => redacted
    [SmsStatus] => delivered
    [MessageStatus] => delivered
    [To] => redacted
    [MessageSid] => redacted
    [AccountSid] => redacted
    [From] => redacted
    [ApiVersion] => 2010-04-01
)

下面是我发送短信的方式供参考

$twilio = new \Twilio\Rest\Client($sid, $token);
            $message = $twilio->messages->create("redacted", array(
                "body" => $smsContent,
                "from" => "redacted",
                "statusCallback" => $callback
            ));

如何从 Twilio 获取短信发送价格?

我想出了一个办法,但它似乎有点低效,因为我必须向 Twilio 发送另一个请求以获取 SMS 的完整状态,但这就是我所做的。

我通过 webhook 收到一个 Twilio 请求,然后我使用 SmsId 获取消息,如下所示:

$smssid = $_POST["SmsSid"];
$twilio = new \Twilio\Rest\Client($sid, $token);
$message = $twilio->messages($smssid)->fetch();
$twilioResponse = new TwilioResponse($message);

仅供参考 TwilioResponse 是我自己的 class,它在构造函数中传递了 $message,然后我用它来构建和解析我自己的版本以满足我的需要。