如何为生产和暂存 Twilio Flex 项目设置不同的插件配置?

How do I set up different plugin configuration for production and staging Twilio Flex projects?

我创建了一个新的 Flex 项目作为我们现有生产 Flex 项目的临时环境。我们有一个我们的 flex 插件调用的后端服务,我也创建了一个后端服务的暂存版本。我想了解如何在我们的 flex 插件中进行特定于环境的配置,以便我可以部署相同的插件,但将它们指向不同的后端服务 URL。

似乎有三种可能的选择:

  1. 更改 appConfig.js 以添加不同的配置,以帐户 ID 为关键字。可能这可以在 npm run deploy 为 运行 时利用 TWILIO_ACCOUNT_ID 环境变量添加适当的配置,但我不清楚它是如何工作的。
  2. 使用 Twilio CLI 或 REST API 将 backend_service_url 等新值推送到 Flex 配置。每个项目执行一次应该可行。虽然我不清楚我将把它放在配置 JSON 中的什么位置,以及如何在插件中读回它。
  3. 在插件加载时调用的每个项目中设置一个 Twilio 函数,以及 returns 项目特定的配置。

请告诉我最佳做法是什么,并让我开始实施。

跟进我们的电子邮件线程,以防对其他人有用。

选项 2 可能是实现此目的的最简单方法。第一步是检查已经存储在您的 Flex 配置中的内容。如果你安装了 Twilio CLI,你可以通过 运行:

twilio api:flex:v1:configuration:fetch -o=json

您应该会收到配置标志列表。 attributes 键是我们有兴趣更新的键。它看起来像这样:

    "attributes": {
      "seenOnboarding": true,
      "demoPhoneNumber": "+1 203 941 6714"
    }

下一步将用我们在请求中包含的任何内容替换这些属性,因此您需要在下一个请求中包含现有属性。

您可以使用以下 API 请求更新您的 Flex 配置:

curl https://flex-api.twilio.com/v1/Configuration -X POST -u ACxxx:auth_token \
    -H 'Content-Type: application/json' \
    -d '{
        "account_sid": "ACxxx",
        "attributes": {
            "myCustomVariable": "My custom value",
            "seenOnboarding": true,
            "demoPhoneNumber": "+1 234 567 8900"
        }
    }'

在您的 Flex 插件中,您可以通过 manager 对象引用设置属性:

init(flex, manager) {
   console.log(manager.serviceConfiguration.attributes.myCustomVariable);
}

我决定在运行时通过包含 accountSid => baseURL 对象来确定基数 API URL:

const BASE_URL_BY_ACCOUNT_SID = {
  AC123: "mystagingurl.com/api/v3",
  AC888: "myprodurl.com/api/v3"
}

然后您可以使用此哈希在运行时使用存储在 Redux 存储(或 Flex 配置,也许)中的帐户 SID 进行查找。