当前状态...每天早上,我们都会登录 SendGrid,进行高级搜索,然后导出结果。搜索示例(按屏幕上显示的方式键入)...
未来状态...我们现在可以访问电子邮件活动源 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
所以我用额外的括号重复了上面的测试,但它们对结果没有影响。
根据API文档https://www.twilio.com/docs/sendgrid/for-developers/sending-email/segmentation-query-language#contains,CONTAINS函数主要用于查询数组(不是字符串)功能)。查询主题行的一种方法是使用 LIKE 运算符(编码)。