# Solicitar la elección de una opción dinámica

Si bien es posible hacer que el usuario elija una opción por medio del tag `<options>`, las opciones a mostrar son estáticas en el sentido de que estas se encuentran definidas en el xml. Si se requiere que el usuario elija una opción de un conjunto de opciones que se generaron dinámicamente, por ejemplo luego de una ejecución de una API REST, se debe utilizar el tipo de acción `option-data-collect`:

```xml
  <action type="option-data-collect"
        key="state.chosen_phone"
        with_text="Por favor, elija el número de teléfono con el cual quiere operar:"
        with_options_from="state.phones"
        with_option_text="&#009;{{index}}. Teléfono {{iterator.phone_number}}"
    />
```

En detalle:

* El comando `&#009;`, especifica que se debe escribir un tab.
* El comando `{{index}}`, especifica que se debe mostrar el número de opción.
* El comando `{{iterator.phone_number}}` especifica que debe tomar el dato `phone_number` de la opción que se está iterando.
* Se pueden utilizar la cantidad de comandos que se desee, por ejemplo `with_option_text="&#009;{{index}}. Teléfono +{{iterator.country_code}} {{iterator.phone_number}}"`
* La variable `phones` debe ser una lista de objetos como la siguiente:

```xml
{
  "phones": [{
    "phone_number": "...",
    ...
  }, {
    "phone_number": "...",
    ...
  }]
}
```

* En la variable `state.chosen_phone` se guarda el objeto que corresponde a la opción seleccionada por el usuario.
