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

时间:2019-12-18 14:09:37

标签: twilio-flex

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

执行此操作似乎有三种可能的选择:

  1. 更改appConfig.js以添加不同的配置,并在帐户ID上键入。可能在运行TWILIO_ACCOUNT_ID时可以使用npm run deploy环境变量来添加适当的配置,尽管我不清楚这是如何工作的。
  2. 使用Twilio CLI或REST API将backend_service_url之类的新值推送到Flex配置。每个项目执行一次即可。尽管我不清楚如何将其放在配置JSON中以及如何在插件中读取它。
  3. 在插件加载时调用的每个项目中设置一个Twilio函数,并返回特定于项目的配置。

请让我知道最佳实践是什么,并让我开始了解如何实现该目标。

2 个答案:

答案 0 :(得分:1)

紧跟我们的电子邮件主题,以防他人使用。

选项2可能是实现此目的的最简单方法。第一步是检查Flex配置中已经存储了什么。如果安装了Twilio CLI,则可以通过运行以下命令来完成该操作:

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

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

    "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对象引用settings属性:

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

答案 1 :(得分:0)

我决定通过在运行时添加一个accountSid => baseURL对象来确定基本API URL:

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

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