通过 Twilio 保存传入短信中包含的任何附件的副本

Save a copy of any attachments included with an incoming SMS via Twilio

我成功构建了一个使用 Twilio 语音和文本的工具。我公司用它来 Send/Recive 文本和测试 phone 数字。不幸的是,做我想做的事情的唯一文档是 Laravel (https://www.twilio.com/docs/sms/tutorials/how-to-receive-and-download-images-incoming-mms-php-laravel). Then there is a very basic guide to SMS Attachments here (https://www.twilio.com/docs/sms/api/media-resource#list),不幸的是它没有详细说明。

$media = $twilio->messages($strSID)->media($strAttachmentSID)->fetch();

,但不知道如何处理它 returns 的对象。我期待一些简单的东西,比如

$media = $twilio->messages($strSID)->media($strAttachmentSID)->fetch()->save();

请帮助我了解如何处理返回的对象。

我试过在这个对象返回的 uri 上使用 move_uploaded_file(),但是没有用。

我试过使用 curl 向附件 url 发送请求,但是 returns 在传入消息的 post 中给出了内容。

这里是 Twilio 开发人员布道者。

当您收到附有媒体的消息时,incoming webhook request 将有一个参数 NumMedia,它会告诉您有多少媒体对象。然后,对于它们中的每一个,都会有 MediaUrlX(其中 X 是一个数字),其中包含媒体对象的 URL,以及 MediaContentTypeX,这是媒体对象的 MIME 类型媒体对象。

在laravel例子中,内容是用this function下载的:


    public function getMediaContent($mediaUrl)
    {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $mediaUrl);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      // Option to follow the redirects, otherwise it will return an XML
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      $media = curl_exec($ch);
      curl_close($ch);
      return $media;
    }

你用媒体URL调用的,例如

$contents = getMediaContent($_POST["MediaUrl0"]);

然后您需要将内容保存到文件中。

如果有帮助请告诉我。