使用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->messages('xxxxxxxxxxxxxxxx')->fetch()
时,会得到很多信息,包括:
[subresourceUris] => Array (
[media] => /2010-04-01/Accounts/xxxxxxxxxxxxxxxx/Messages/xxxxxxxxxxxxxxx/Media.json
))
我没有看到使用PHP检索资源的文档记录方法,所以我陷入了困境。我尝试过:
$media = $twilio->messages("MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
->media("MEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
->fetch();
这将返回一些项目,但是它们与->fetch()
返回类似,并且我看不到任何可以帮助我下载或阅读媒体的内容。
答案 0 :(得分:0)
因此,在与Twilio技术支持一起工作了两周之后,我了解到Twilio只是删除了不受支持的mime类型的附件。
关于如何警告该错误,我没有从Twilio文档中找到任何书面记录的方法,也没有与技术支持人员合作的方法,但是我发现一种解决方法目前似乎可以完成。这是我的工作:
incoming.php
。$_POST['NumMedia']
获得附件计数。使用$_POST['SmsMessageSid']
,我查询Twilio以检索存储在服务器上的消息:
$msg = $client->messages($_POST['SmsMessageSid'])->fetch();
$msg->numMedia
的值。如果它大于$_POST['NumMedia']
值,则说明附件已删除。 我已要求Twilio支持向开发人员发送注释,以将x-vcard添加为受支持的类型,因为仍有大量Android手机仍在使用它。
谢谢@philnash来解决问题。