[英]Is there a way to use SendGrid Template Versioning with different development life-cycle environments?
SendGrid 中的版本控制允许 API 个客户端仅通过此处记录的模板 ID 发出模板请求,但是,一次只能有一个模板版本处于“活动”状态。 显然,用于我们的生产应用程序的模板需要始终设置为活动的,但是如何添加我们在即将发布的版本中使用的新模板版本呢? 我如何利用模板版本在我们的测试环境中测试这个“非活动”版本? 此处讨论了该问题,但当您开始关注这些链接时,它似乎就被关闭并丢失了。
如果没有办法指定版本控制,那么只剩下几个选项需要创建特定于环境的模板并在发布完成后将它们提升为特定于生产的模板,或者为不同的 SDLC 环境创建单独的帐户并将它们迁移为该过程向前推进。
关于语言版本控制,这里也讨论了这个问题,但它确实对我的问题没有帮助。
鉴于 SendGrid 的 API 提供的工具利用版本控制的最佳实践是什么? 拥有不同的 SDLC 步骤命名模板似乎是维护数百个模板(更不用说每个环境的多个)的灾难了。 在转移到生产环境时进行测试时,管理多个帐户就像一场噩梦。 我只是在这里遗漏了一些非常明显的东西吗?
我与 SendGrid 的技术代表进行了交谈,他们的 API 或 UI 不提供此功能。 一次只能“激活”一个模板。 您需要为每个环境使用单独的模板,或者需要从您的 API 使用者管理模板。 如果有人阅读本文并对不同的解决方案有疑问,请随时发布,我将解释我如何根据应用程序的需求解决此问题。
显然有未记录的方法来处理这个问题。
我有一些库代码可以解析动态模板的句柄逻辑并以编程方式注入绑定任何变量所需的最少数据量。 因此,如果我们希望在设计时可以在模板中添加您喜欢的任何随机项目,而无需每次都更新后端。
因此,后端的所有逻辑都至关重要,以确保交付的 email 实际上与我绑定数据的版本相同,而且我不会经常刷新缓存。 . .
今天深入研究了这一点,
我没有看到它在任何 sendgrids 回购或文档中的任何地方记录,因此该功能将来可能会更改或中断,但您可以使用:
{"template_id": "d-#{template-guid}.#{version-guid}"
控制在 v3/send/mail 调用中使用哪个版本的模板。
我想通过我们对小型电子邮件活动的实施来扩展实际答案
正如 CodeKiller 所写的一种可能的解决方法是You need a separate template for every environment
问题是应用程序通过 id 引用模板,但是在将模板从 env 移动到 env 时无法保留模板 id。
您可以保留模板名称。 SendGrid API 不允许按名称检索模板,而您可以检索所有模板并按名称查找模板。
var templatesRaw = await client.RequestAsync(
BaseClient.Method.GET,
null,
"{'page_size': 200, 'generations': 'dynamic'}",
"templates");
var templatesJson = await templatesRaw.DeserializeResponseBodyAsync(templatesRaw.Body);
var templates = (JArray)templatesJson["result"];
var template = templates.Single(templ => templ["name"].ToString() == name);
return template["id"].ToString();
为什么我不建议将它用于中/大型广告系列:
从最初的帖子到这个问题,我们已经过去了两年,我不得不说,虽然 SendGrid 很好用并且很容易集成,但我们应该使用版本和多个 email 模板的方式令人震惊。
我们有 20 个 email 模板。 我们需要做的是修改模板(创建新版本),然后通过我们的环境对其进行测试。 就目前情况而言,在不影响生产的情况下通过不同的环境进行工作几乎是不可能的。
Twillio 需要解决这个问题。
我需要针对每种环境的单独模板。 如何解决这个问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.