确定是否可能检索具有不支持的内容类型的Twilio传入MMS附件

时间:2019-06-22 22:02:58

标签: php twilio

使用Twilio PHP API,我试图说明不支持的附件(特别是“ text / x-vCard”,由Android / Google Fi发送)。当我在代码中收到$ _POST变量时,它们看起来像这样:

Array
(
    [ToCountry] => US
    [ToState] => NJ
    [SmsMessageSid] => <sms-message-id>
    [NumMedia] => 0 
    [ToCity] => MERCHANTVILLE
    [FromZip] => 08401
    [SmsSid] => <sms-sid>
    [FromState] => NJ
    [SmsStatus] => received
    [FromCity] => <from-city> 
    [Body] => This is the body of the message.
    [FromCountry] => US
    [To] => +xxxxxxxxxxx
    [ToZip] => xxxxx
    [AddOns] => {"status":"successful","message":null,"code":null,"results":{}}
    [NumSegments] => 1 
    [MessageSid] => <message-sid>
    [AccountSid] => <account-sid>
    [From] => +xxxxxxxxxxx
    [ApiVersion] => 2010-04-01
)

如您所见,没有证据表明发送了不支持的文件类型的任何错误或警告。我需要

  • 回复发件人附件不受支持,或者
  • 在Twilio上找到保存的附件并转发。

我怀疑附件保存在Twilio上,因为当我使用$twilio->messages('xxxxxxxxxxxxxxxx')->fetch()时,会得到很多信息,包括:

[subresourceUris] => Array (
    [media] => /2010-04-01/Accounts/xxxxxxxxxxxxxxxx/Messages/xxxxxxxxxxxxxxx/Media.json
))

我没有看到使用PHP检索资源的文档记录方法,所以我陷入了困境。我尝试过:

$media = $twilio->messages("MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                ->media("MEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                ->fetch();

这将返回一些项目,但是它们与->fetch()返回类似,并且我看不到任何可以帮助我下载或阅读媒体的内容。

1 个答案:

答案 0 :(得分:0)

因此,在与Twilio技术支持一起工作了两周之后,我了解到Twilio只是删除了不受支持的mime类型的附件。

关于如何警告该错误,我没有从Twilio文档中找到任何书面记录的方法,也没有与技术支持人员合作的方法,但是我发现一种解决方法目前似乎可以完成。这是我的工作:

  1. Twilio将传入消息发送给我到服务器上的incoming.php
  2. 我使用$_POST['NumMedia']获得附件计数。
  3. 使用$_POST['SmsMessageSid'],我查询Twilio以检索存储在服务器上的消息:

    $msg = $client->messages($_POST['SmsMessageSid'])->fetch();
    
  4. 我检查了$msg->numMedia的值。如果它大于$_POST['NumMedia']值,则说明附件已删除。
  5. 如果数字不匹配,我会向发件人发送一封回复文本,让他们知道附件已被删除。

我已要求Twilio支持向开发人员发送注释,以将x-vcard添加为受支持的类型,因为仍有大量Android手机仍在使用它。

谢谢@philnash来解决问题。