Twilio Media - 在非对象上调用成员函数get() - Twilio帮助程序库被破坏了吗?

时间:2015-07-30 02:09:49

标签: php twilio

几乎尝试完全按照Twilio REST API网站上的示例中的定义执行操作。

https://www.twilio.com/docs/api/rest/media

在示例中,以下代码删除了帐户库中的媒体。

$client->account->messages->get("MM800f449d0399ed014aae2bcc0cc2f2ec")->media->delete("ME557ce644e5ab84fa21cc21112e22c485");

此代码应返回与特定消息关联的媒体资产列表:

foreach ($client->account->messages->get('MM800f449d0399ed014aae2bcc0cc2f2ec')->media as $media) {
     echo $media->content_type;
 }

问题是这两个例子都返回错误:

  

在非对象上调用成员函数get()

我不是PHP专家,我已尽力调试此功能。我在脚本中的其他位置使用完全相同的$ client-> account->消息调用,所以我知道那里有一个对象,并且只能假设get()方法以某种方式被破坏。

我已经阅读了以下内容,但似乎没有回答我的问题:
Reference - What does this error mean in PHP?
PHP Error: "Call to member function create() on a non-object" Twilio code
calling to a member function create() on a non-object

Twilio的任何人都熟悉这个问题吗?有什么方法可以至少确认这是我的PHP错误还是Twilio Media API或示例代码有问题?任何和所有的帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

PHP错误仍然是一个谜,因为$ client-> account->消息中有一个对象。

也就是说,我可以通过直接使用CURL请求而不是使用他们的帮助库来与我的Twilio帐户中的媒体进行交互,这似乎是get函数被破坏的地方(无法确认这一点和没有人在这里或在Twilio有任何帮助清除它 - 没有时间挖掘他们的图书馆试图诊断它)。

本文指出了如何进行CURL交互: How do I make a request using HTTP basic authentication with PHP curl?

如上所述,您可以使用Twilio帮助库函数$ client-> account->消息来获取您帐户中的所有消息。也就是说,据我所知,他们的几篇How To文章中描述的get函数不起作用,因此您无法在不知道URL的情况下提取单个消息。

$messages = $client->account->messages;
foreach($messages as $message) {
     #code here to get and use the data from your message list
}

这使我能够获取已在邮件中发送给我的媒体资产的网址,但它仍然不允许我从我的帐户中删除媒体以节省存储空间。为了做到这一点,我必须执行以下操作($ url是我要删除的媒体资产的url,$ sid和$ token是我的Twilio帐户SID和Auth Token):

function deleteMedia($url,$sid,$token) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, $sid.":".$token);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
}

可能不是最优雅的解决方案,但它确实有效。