【问题标题】:Copying Twilio MMS Media files to my server将 Twilio MMS 媒体文件复制到我的服务器
【发布时间】:2019-04-09 17:24:33
【问题描述】:

我在我的服务器上设置了一个 API 端点,以便 Twilio 在收到 SMS/MMS 时通知我的服务器。

直到大约 2 周前,我还能够使用 PHP 复制功能将 MMS 的媒体文件复制到我的服务器:

copy($sourceFile, $destinationFolder.$destinationFileName);

在哪里

$sourceFile = 'https://api.twilio.com/2010-04-01/Accounts/AC000000001/Messages/MM000000001/Media/ME000000001'

但是,现在我不是获取媒体文件,而是获取描述文件的 XML:

<?xml version='1.0' encoding='UTF-8'?>
<TwilioResponse>
<Media>
<Sid/>
<AccountSid>AC000000001</AccountSid>
<ParentSid/>
<ContentType/>
<DateCreated>Thu, 04 Apr 2019 15:31:30 +0000</DateCreated>
<DateUpdated>Thu, 04 Apr 2019 15:31:30 +0000</DateUpdated>
<Uri>/2010-04-01/Accounts/AC000000001/Messages/MM000000001/Media/ME000000001</Uri>
</Media>
</TwilioResponse>

我的代码没有任何变化,我找不到任何文档表明 Twilio 正在改变事情的工作方式。

我尝试更改为 curl 请求,但得到了相同的结果。我还尝试使用 Twilio PHP SDK 并遵循此文档:https://www.twilio.com/docs/sms/api/media-resource#default-content-type

是否有人对正在发生的事情/发生了什么变化以及如何解决这个问题有所了解?

【问题讨论】:

    标签: twilio mms twilio-php


    【解决方案1】:

    如果您查看来自

    "ME000000001"

    $sourceFile = 'https://api.twilio.com/2010-04-01/Accounts/AC000000001/Messages/MM000000001/Media/ME000000001'

    然后在 XML 响应中的 "ME000000001"

    &lt;Uri&gt;/2010-04-01/Accounts/AC000000001/Messages/MM000000001/Media/ME000000001&lt;/Uri&gt;

    它们是不同的。

    事实上,对于带有 3 个媒体附件的消息,XML 响应将类似于:

    <?xml version='1.0' encoding='UTF-8'?>
    <TwilioResponse>
        <MediaList end="2" firstpageuri="/2010-04-01/Accounts/AC.../Messages/MM.../Media?Pag...>
            <Media>
                <Sid>ME...92c</Sid>
                <AccountSid>AC...3e4</AccountSid>
                <ParentSid>MM...e3d</ParentSid>
                <ContentType>image/jpeg</ContentType>
                <DateCreated>Tue, 09 Apr 2019 20:06:33 +0000</DateCreated>
                <DateUpdated>Tue, 09 Apr 2019 20:06:33 +0000</DateUpdated>
                <Uri>/2010-04-01/Accounts/AC...3e4/Messages/MM.../Media/ME...92c</Uri>
            </Media>
            <Media>
                <Sid>ME...4ac</Sid>
                <AccountSid>AC...3e4</AccountSid>
                <ParentSid>MM...e3d</ParentSid>
                <ContentType>image/jpeg</ContentType>
                <DateCreated>Tue, 09 Apr 2019 20:06:33 +0000</DateCreated>
                <DateUpdated>Tue, 09 Apr 2019 20:06:33 +0000</DateUpdated>
                <Uri>/2010-04-01/Accounts/AC.../Messages/MM.../Media/ME...4ac</Uri>
            </Media>
            <Media>
                <Sid>ME...048</Sid>
                <AccountSid>AC...3e4</AccountSid>
                <ParentSid>MM...e3d</ParentSid>
                <ContentType>image/jpeg</ContentType>
                <DateCreated>Tue, 09 Apr 2019 20:06:33 +0000</DateCreated>
                <DateUpdated>Tue, 09 Apr 2019 20:06:33 +0000</DateUpdated>
                <Uri>/2010-04-01/Accounts/AC.../Messages/MM.../Media/ME...048</Uri>
            </Media>
        </MediaList>
    </TwilioResponse>
    
    

    所以,您会在&lt;Uri&gt;...&lt;/Uri&gt; 的地址找到媒体(当然前面要加上https://api.twilio.com)。


    观察三个 Uris 的不同之处,因为它们指向附加到同一消息的不同媒体。

    <Uri>/2010-04-01/Accounts/AC.../Messages/MM.../Media/ME...92c</Uri>
    
    <Uri>/2010-04-01/Accounts/AC.../Messages/MM.../Media/ME...4ac</Uri>
    
    <Uri>/2010-04-01/Accounts/AC.../Messages/MM.../Media/ME...048</Uri>
    

    【讨论】:

    • 谢谢,但是在我的情况下它们并没有什么不同...如果我在网络浏览器中加载此 URL,它会重定向到图像:https://api.twilio.com/2010-04-01/Accounts/AC...5a93/Messages/MM...6902/Media/ME...6988 如果我尝试使用 PHP 检索/ 复制该文件,它会使用以下 URI 生成上面的 XML:/2010-04-01/Accounts/AC...5a93/Messages/MM...6902/Media/ME...6988 我检查并仔细检查了 URI 与我调用的相同。
    • 尝试使用消息并附加 2 个媒体,您的 XML 应该指向两个媒体文件,如果在浏览器中加载,uris 将重定向到亚马逊存储
    • 您找到解决方案了吗?我也面临同样的问题。
    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多