在对 SendGrid 电子邮件活动源 API 的复合查询请求中包含 CONTAINS 关键字的正确方法是什么?

问题描述 投票:0回答:1

当前状态...每天早上,我们都会登录 SendGrid,进行高级搜索,然后导出结果。搜索示例(按屏幕上显示的方式键入)...

  1. 日期在 2025/01/02 - 2025/01/02 之间
  2. 状态未送达
  3. 主题包含发票

未来状态...我们现在可以访问电子邮件活动源 API。 API 文档 有一个按状态和日期获取结果的清晰示例,我已经通过 Postman 成功获取结果。

但是,文档对于如何在复合查询中使用 CONTAINS 关键字不太清楚。 我无法弄清楚我是否错误地对请求进行了编码和/或错误地将三个标准组合在一起。

有人成功地将 CONTAINS (或其他关键字/函数之一)与其他查询条件结合起来吗? 如果是这样,您介意分享一个例子吗?

我尝试过的一些具体示例如下,但我还应该提到我尝试使用他们的实时聊天支持。 无论使用哪种浏览器,它都会卡在“正在为您连接实时代理...”。 在 StackOverflow 上,我发现一个问题可以使用独特的函数解决,但它并没有结合其他查询条件的完整示例。

示例

测试: 仅具有两个条件(日期和状态)的成功请求。

结果:200-OK。返回与高级搜索匹配的结果。

https://api.sendgrid.com/v3/messages?limit=10&query=status%3D%22not_delivered%22%20AND%20last_event_time%20BETWEEN%20TIMESTAMP%20%222025-01-02T00%3A00%3A00Z%22%20AND%20TIMESTAMP%20%222025-01-02T23%3A59%3A59Z%22

下面失败的例子是我尝试根据第三个标准(主题)进行过滤。

测试: 添加在“查询”末尾,使其读取为--> AND CONTAINS(subject, "Invoice")

结果: 400-错误请求。 "errors": [{"message": "CONTAINS 需要数组或映射类型作为第一个参数", "field": "query"}]

https://api.sendgrid.com/v3/messages?limit=10&query=status%3D%22not_delivered%22%20AND%20last_event_time%20BETWEEN%20TIMESTAMP%20%222025-01-02T00%3A00%3A00Z%22%20AND%20TIMESTAMP%20%222025-01-02T23%3A59%3A59Z%22
%20AND%20包含%28主题%2C%22发票%22%29

测试: 尝试使用 CONTAINS 本身,作为唯一的查询参数 --> CONTAINS(subject, "Invoice")

结果: 400-错误请求。 "errors": [{"message": "CONTAINS 需要数组或映射类型作为第一个参数", "field": "query"}]

https://api.sendgrid.com/v3/messages?limit=10&query=
包含%28主题%2C%22发票%22%29

测试:出于好奇,我删除了“query”参数名称,以便 URL 以编码函数结尾。

结果:令我惊讶的是,我的结果是 200-OK。然而,结果实际上并没有按预期过滤主题(即我得到的结果在主题中没有“发票”一词)。

https://api.sendgrid.com/v3/messages?limit=10&
包含%28主题%2C%22发票%22%29

文档显示了包含 CONTAINS 函数的额外括号,如 --> (CONTAINS(subject, "Invoice")) 编码后,它看起来像 --> %28CONTAINS%28subject%2C%22Invoice%22%29%29

所以我用额外的括号重复了上面的测试,但它们对结果没有影响。

sendgrid urlencode
1个回答
0
投票

根据API文档https://www.twilio.com/docs/sendgrid/for-developers/sending-email/segmentation-query-language#contains,CONTAINS函数主要用于查询数组(不是字符串)功能)。查询主题行的一种方法是使用 LIKE 运算符(编码)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.