我正在尝试使用PHP帮助程序库(最新的GitHub)检索邮件历史记录,但我似乎无法使过滤器正常工作。我想只看2016-11-02之后的消息。如果我删除" grater而不是"符号,我看到2016-11-02创建的消息。如果我包括" grater而不是"符号,我收到所有消息(即使是那些比2016-11-02更早的消息)。这是我的代码;
使用此功能,我会看到所有消息(包括2016-11-02之前和之后的消息)
$client = new Client($account_sid, $auth_token);
echo "<pre>\n";
foreach ($client->messages->read(array( 'dateSent>' => date('2016-11-02'))) as $message) {
echo $message->from . "\n";
echo $message->to . "\n";
echo $message->body . "\n";
echo $message->status . "\n";
echo $message->dateSent->format('Y-m-d H:i:s') . "\n";
echo "<br />\n";
}
echo "</pre>\n";
使用此功能,我只会在2016-11-02
中看到消息 $client = new Client($account_sid, $auth_token);
echo "<pre>\n";
foreach ($client->messages->read(array( 'dateSent' => date('2016-11-02'))) as $message) {
echo $message->from . "\n";
echo $message->to . "\n";
echo $message->body . "\n";
echo $message->status . "\n";
echo $message->dateSent->format('Y-m-d H:i:s') . "\n";
echo "<br />\n";
}
echo "</pre>\n";
我已经尝试过了;
array( 'dateSent>' => date('2016-11-02'))
array( 'dateSent >' => date('2016-11-02'))
array( 'DateSent>' => date('2016-11-02'))
array( 'DateSent >' => date('2016-11-02'))
array( 'date_sent>' => date('2016-11-02'))
array( 'date_sent >' => date('2016-11-02'))
答案 0 :(得分:2)
我从这里开始挖掘https://www.twilio.com/docs/api/rest/message#list-get-filters
乍一看,似乎至少有一个你尝试过的应该有效。具体来说是array( 'DateSent>' => date('2016-11-02'))
。然而,有两件事似乎很奇怪。首先,该文档提到将过滤器作为查询字符串参数发送,这不是这里发生的事情。其次,它清楚地表明参数区分大小写。但是,您开始工作的示例有array( 'dateSent' => date('2016-11-02'))
,与DateSent
的指示情况不符。
所以API文档很糟糕。关闭实际代码!
在跟踪了一系列类和方法之后,我们最终在https://twilio.github.io/twilio-php/source-class-Twilio.Rest.Api.V2010.Account.MessageList.html#99-117。现在,read()
方法本身对于解决这个谜团再次无益。我们按照stream()
然后转到page()
,最终为我们提供了所需内容:
$params = Values::of(array(
'To' => $options['to'],
'From' => $options['from'],
'DateSent<' => $options['dateSentBefore'],
'DateSent' => $options['dateSent'],
'DateSent>' => $options['dateSentAfter'],
'PageToken' => $pageToken,
'Page' => $pageNumber,
'PageSize' => $pageSize,
));
啊哈!您在代码中成功使用了dateSent
,在这里我们看到它被使用了!所以,如果我们足够幸运,我们找到了你需要使用的数组索引。
最终,您的问题的答案是您需要使用$client->messages->read(array( 'dateSentAfter' => '2016-11-02'))
(实际上没有必要像您在原始代码中那样调用date()
函数)