Копирование медиафайлов Twilio MMS на мой сервер

#twilio #mms #twilio-php

#twilio #mms #twilio-php

Вопрос:

На моем сервере настроена конечная точка API, чтобы Twilio уведомлял мой сервер о получении SMS / MMS.

Примерно 2 недели назад я мог копировать медиафайлы MMS на свой сервер, используя функцию копирования PHP:

 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

У кого-нибудь есть представление о том, что происходит / что изменилось и как это обойти?

Ответ №1:

Если вы посмотрите на "ME000000001"

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

а затем "ME000000001" из ответа XML

<Uri>/2010-04-01/Accounts/AC000000001/Messages/MM000000001/Media/ME000000001</Uri>

они разные.

Фактически, для сообщения, скажем, с 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>

  

Итак, вы найдете носитель по адресу в <Uri>...</Uri> (конечно, добавьте с https://api.twilio.com ).


Обратите внимание, как три URI отличаются, потому что они указывают на разные носители, прикрепленные к одному и тому же сообщению.

 <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>
  

Комментарии:

1. спасибо, однако в моем случае они не отличаются… Если я загружаю этот URL-адрес в веб-браузере, он перенаправляется на изображение: https://api.twilio.com/2010-04-01/Accounts/AC...5a93/Messages/MM...6902/Media/ME...6988 однако, если я попытаюсь использовать PHP для извлечения / копирования этого файла, он создаст приведенный выше XML с этим URI: /2010-04-01/Accounts/AC...5a93/Messages/MM...6902/Media/ME...6988 Я проверил и перепроверил, и URI совпадает с тем, что я вызываю.

2. попробуйте с сообщением и прикрепите к нему 2 носителя, ваш XML должен указывать на два медиафайла, при загрузке в браузере uri будут перенаправлены в хранилище Amazon

3. Вы нашли какое-либо решение для этого? Я также сталкиваюсь с той же проблемой.