【问题标题】:TWILIO - why the actual response returned does not match with documentedTWILIO - 为什么返回的实际响应与记录的不匹配
【发布时间】:2018-04-28 18:10:18
【问题描述】:

我已经集成了 Twilio,它运行良好。现在我想捕获所有中间消息状态。我提到了Sending Messages.

我的代码看起来像 -

require __DIR__ . '/vendor/autoload.php';    
      // Use the REST API Client to make requests to the Twilio REST API
      use Twilio\Rest\Client;

// Your Account SID and Auth Token from twilio.com/console
$sid = '****************';
$token = '*****************';
$client = new Client($sid, $token);

// send message
$message = $client->messages->create(
    // the number you'd like to send the message to
    '+1xxxxxxxxx',
    array(  
        'from' => '+1xxxxxxxx', 
        'body' => 'Test web hook message '.date('h:i'),
        'statusCallback' => "https://xxxxxx/xxxx.php", 
    )
);

但是返回到 statusCallback 的输出/响应与 -

不同
"{\"SmsSid\":\"SM72478c1ea61f467dbc33338123c0ad0\",\"SmsStatus\":\"sent\",\"MessageStatus\":\"sent\",\"To\":\"+1xxxxxxxx\",\"MessageSid\":\"SM72478c1ea612222dbc3b7858123c0ad0\",\"AccountSid\":\"ACb655a10c1c2222e4af158c5395d64beb\",\"From\":\"+1xxxxxxx\",\"ApiVersion\":\"2010-04-01\"}"

但我需要Sending Messages中定义的响应

编辑

如果检查Sending Messages,我们可以看到输出中返回的字段是 - account_sid, api_version, body, num_segments, num_media, date_created, date_sent, date_updated, direction, error_code, error_message, from, price, sid, status , to 和 uri。 但我收到的字段为 - SmsSid、SmsStatus、MessageStatus、To、MessageSid、AccountSid、From 和 ApiVersion。

对我来说,我没有收到的字段 - num_segments、date_sent、direction、error_code、error_message 很重要。我需要使用 TWILIO 的另一个 API 来检索这些信息吗?

为什么我得到不同的响应?

【问题讨论】:

  • 我不确定您希望在这里看到什么。您是说您的 webhook 收到了一个请求,要求将状态回调作为 JSON 正文?
  • 请检查,我已经更新了我的问题。我收到了对我的 webhook 的响应,但我收到的字段与 Twilio 示例代码输出中定义的字段不匹配。

标签: twilio twilio-php


【解决方案1】:

您的回调 url 脚本的代码是什么样的?

您所拥有的只是一个转义的 JSON 字符串,因此要匹配您在文档中看到的内容,您只需这样做:

$json = '{\"SmsSid\":\"SM72478c1ea61f467dbc33338123c0ad0\",\"SmsStatus\":\"sent\",\"MessageStatus\":\"sent\",\"To\":\"+1xxxxxxxx\",\"MessageSid\":\"SM72478c1ea612222dbc3b7858123c0ad0\",\"AccountSid\":\"ACb655a10c1c2222e4af158c5395d64beb\",\"From\":\"+1xxxxxxx\",\"ApiVersion\":\"2010-04-01\"}';
echo stripslashes($json);

【讨论】:

    【解决方案2】:

    这里是 Twilio 开发者宣传员。

    当你发送消息并设置statusCallback URL the sending messages documentation says:

    Twilio 将发布 MessageSid 以及其他 standard request parameters 以及 MessageStatusErrorCode

    standard request parameters 是:

    • MessageSid
    • SmsSid
    • AccountSid
    • MessagingServiceSid
    • From
    • To
    • Body
    • NumMedia

    以及其他一些基于这两个数字的媒体或地理数据。

    如果您需要找出消息的其他属性,您需要look up the message using the REST API

    让我知道这是否有帮助。

    【讨论】:

    • 我尝试使用您的回答中指出的消息资源,但它只返回一次数据。我正在使用与twilio.com/docs/api/messaging/message#message-instance-resource 相同的代码。可能是什么原因?每当调用状态回调时,它是否总是返回数据?
    • 您应该在每次获取到状态回调 URL 的 webhook 时调用消息资源。这样您就可以在每次需要时获取消息本身的最新数据。
    • 我的问题是关于文档中列出的字段。文档 (twilio.com/docs/api/messaging/message#message-instance-resource) 显示字段“ErrorCode”,实际上返回为“errorCode”。所有包含两个单词的字段都应引用驼峰式,首字母小写。
    • 字段名称实际上是指XML output中字段的原始名称。 JSON 输出是不同的,当属性被读入您选择的语言库中的对象时,它们会被翻译成该语言的惯用属性样式。
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2020-02-19
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多