Last updated: 08 April 2022

To help us understand the power of dynamically creating a composer, let’s go through a quick example.

Example - Dynamic fuzzy composer (for statement)

For this example, we will use a spreadsheet integration.

Let’s imagine you have a spreadsheet with a list of animals. You’d like to use this list to dynamically create a fuzzy composer. Why? Because doing it the manual way would require copy and pasting potentially tens or hundreds of options into your CMS. Not fun, not fun at all.

Data

Grab your spreadsheet and make sure it:

  • Is saved as a .CSV (Excel sheets will not work).

  • Has data (e.g. the list of animals) in the first column.

  • Has a column name (e.g. animals).

Create the spreadsheet lookup

Go to Integrations and click Add spreadsheet integration.

Find (or upload) your spreadsheet and hit Save.

Once you’ve got your spreadsheet added to the platform, click Lookups and create the following rule:

If name_of_column has more letters than 1.

Make sure you change name_of_column to the actual name of your column in your spreadsheet. In our example, we use animals (cell A1).

Create the custom composer

Go to EngageComposers.

On the right-hand side, you will see your custom composers section. Click Create composer.

Select the dynamic composer option in the dropdown.

Pull the data

Give your composer a name (e.g. “Animals”).

Under Variables, we will grab our integration. This is the section we use to tell our chatbot where it should go and fetch the data to populate our fuzzy composer.

Because we’re working with a spreadsheet integration, select Use spreadsheet values. Grab your spreadsheet name and lookup from their respective dropdowns.

Create a dynamic fuzzy composer

Delete everything from the code editor, as we’ll start from scratch.

Our platform allows you to create a dynamic version of any of our composers. For this example, we need a fuzzy composer, so using the Add composer… dropdown, select Fuzzy.

Learn about the fuzzy composer and its associated values.

Write the template

We will use a for loop to populate the value inside the items section. Put your cursor below the first [ and click the </> For tag button. Grab the {"label": "", "value": ""} and paste it inside the for loop.

{
    "type": "fuzzy",
    "content": {
      "placeholder": "Choose an option...",
      "disabled": false,
      "multi": false,
      "items": [
		{% for variable in variables %}
            {"label": "", "value": ""}
 		{% endfor %}
      ]
    } 
}
CODE

Looking good. Now, we just need to add our variables in there.

Spreadsheet integrations work with rows, so instead of variable we will write row. The variables value is also set in stone with spreadsheets; we’re looking for lookup.data.

Now, we can write the value the composer will display, i.e. the animal names.

Simple too: we enter row.animals. Simply put, we’re telling the code to go and fetch whatever value we have in every row under the column animals.

Finally, we close the loop.

This gives us:

{
    "type": "fuzzy",
    "content": {
      "placeholder": "Choose an animal...",
      "disabled": false,
      "multi": false,
      "items": [
			{% for row in lookup.data %}
        		{
					"label": "{{row.animals}}", 
					"value": "{{row.animals}}"
				}{% if not loop.last %},{% endif %}
  {% endfor %}
      ]
    } 
}
CODE

Beautiful, all done. Now, attach that composer to a conversation step and voila: