【问题标题】:Using a flow variable as the index in an array使用流变量作为数组中的索引
【发布时间】:2019-06-09 02:33:42
【问题描述】:

我将 JSON 数据传递给具有数组数据的 Twilio Studio 流。假设它们是地址。我想遍历这个数组,并在每次迭代中有多个小部件来说出地址,然后捕捉用户说“是”或“否”以确认每个地址是正确的。

我似乎失败的地方是使用流变量作为数组的索引。下面是 Say/Play 小部件内部的代码。 flow.variables.address_idx 在之前的 Set Variables 小部件中定义为 {{ 0 }}。 flow.variables.idx 定义为 0。cmets 不是代码的一部分,但比 Liquid 语法更简洁。

//this says 'zero'
The current index is {{flow.variables.address_idx}}.

//nothing
The address is
{{flow.data.addresses[flow.variables.address_idx].service_address_street_1}}

//nothing
The address is 
{{flow.data.addresses[flow.variables.idx].service_address_street_1}}

//this works
The address is {{flow.data.addresses[0].service_address_street_1}}

//this works
{% assign foo = 0 %}
The address is {{flow.data.addresses[foo].service_address_street_1}}

当我在 flow.variables 范围内使用变量时,索引似乎没有被视为整数,而是被视为字符串。哈希的字符串键似乎可以正常工作。

我缺少语法技巧吗?或者是否有另一种方法可以在数组迭代的主体中使用多个小部件?

【问题讨论】:

    标签: twilio liquid


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    流小部件可能会将您的整数索引序列化为字符串。您是否尝试过将变量转换为整数?

    根据this answer,你可以用数学过滤器做到这一点:

    {% assign foo = flow.variables.address_idx | plus: 0 %}
    The address is {{flow.data.addresses[foo].service_address_street_1}}
    

    让我知道这是否有帮助。

    【讨论】:

    • 太棒了,感谢您提供额外的眼睛 - 它有效。我有类似的想法,但试图在数组索引本身中使用数学过滤器,而不是将其分配给中间变量。这种方法破坏了解析器。在文档中包含此配方会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多