#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. Вы нашли какое-либо решение для этого? Я также сталкиваюсь с той же проблемой.