Использование переменной потока в качестве индекса в массиве - PullRequest
0 голосов
/ 15 января 2019

Я передаю данные JSON в поток Twilio Studio, содержащий данные массива. Допустим, это адреса. Я хотел бы выполнить итерацию по этому массиву и иметь несколько виджетов внутри каждой итерации, чтобы сказать адрес, а затем захватить пользователя, говорящего «да» или «нет», чтобы подтвердить, что каждый адрес правильный.

Там, где я, кажется, терплю неудачу, используется переменная потока в качестве индекса для массива. Ниже приведен код внутри виджета Say / Play. flow.variables.address_idx определен в предыдущем виджете Set Variables как {{0}}. flow.variables.idx определяется как 0. Комментарии не являются частью кода, но являются более краткими, чем синтаксис 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, а вместо этого обрабатывается как строка. Кажется, что строковые ключи для хэшей работают нормально.

Есть ли у меня синтаксическая хитрость? Или есть другой подход для использования нескольких виджетов в теле итерации массива?

1 Ответ

0 голосов
/ 19 января 2019

Разработчик Twilio здесь.

Возможно, что виджет потока сериализует ваш целочисленный индекс в строку. Вы пытались привести переменную к целому числу?

Согласно этому ответу , вы можете сделать это с помощью математического фильтра:

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

Дайте мне знать, если это поможет.

...