[英]Error when get email activity by using sendgrid API
我想通过使用 Sendgrid API 获得 email 活动,但它不能按收件人和日期范围进行过滤(此代码可以获得 3 个活动,但不能过滤参数:from_email: khoa.do.netlink.vn 而不是范围从日期 - 到日期)。
这是代码:
function filter_activity()
{
$apiKey = 'SG.xxx';
$sg = new \SendGrid($apiKey);
$str_query = "last_event_time BETWEEN TIMESTAMP '2022-02-13T00:00:00.000Z' AND TIMESTAMP '2022-03-13T00:00:00.000Z' AND from_email='khoa.do@netlink.vn'";
$query_params = array(
"query" => $str_query,
"limit"=> 3
);
try
{
$response = $sg->client->messages()->get(null, $query_params);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
var_dump($response->body()); die();
}
catch (Exception $ex)
{
echo 'Caught exception: '. $ex->getMessage();
}
}
我尝试使用 postman,但出现错误:
如果有人知道这个问题,请告诉我如何输入正确的参数。 感谢您的支持,
我认为这里的问题是您在时间戳中包含了大括号。 文档显示如下:
curl --request GET \
--url 'https://api.sendgrid.com/v3/messages?limit=10&query=last_event_time%20BETWEEN%20TIMESTAMP%20%22{start_date}%22%20AND%20TIMESTAMP%20%22{end_date}%22' \
--header 'authorization: Bearer <<your API key>>'
但我认为整个{start_date}
和{end_date}
字符串应该用时间戳替换,而不仅仅是在括号内。
此外,虽然您正在进行的查询可能有很多部分,但它们都作为一个query
URL 参数出现。 因此,您需要构建查询,然后对其进行urlencode
并将其设置为 URL 中的query
参数。
像这样尝试:
function filter_activity()
{
$apiKey = 'SG.xxx';
$sg = new \SendGrid($apiKey);
$start_date = "2022-03-12T00:00:00.000Z";
$end_date = "2022-03-13T00:00:00.000Z";
$str = "BETWEEN TIMESTAMP '".$start_date."' AND TIMESTAMP '".$end_date."'";
$query_params = array(
"query" => urlencode('last_event_time="' . $str . '" AND from_email="khoa.do@netlink.vn"'),
"limit"=> 3
);
try
{
$response = $sg->client->messages()->get(null, $query_params);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
var_dump(json_decode($response->body(), true)); die();
}
catch (Exception $ex)
{
echo 'Caught exception: '. $ex->getMessage();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.