question

Jean Vence avatar image
Jean Vence asked

Applying transformers to lists

I'm trying to use the SpeakList command and was wondering how to apply transformers to a list.


Here's my list:

{
    "listTemplate2Metadata": {
        "type": "object",
        "objectId": "lt1Metadata",
        "backgroundImage": {
            "contentDescription": null,
            "smallSourceUrl": null,
            "largeSourceUrl": null,
            "sources": [
                {
                    "url": "https://d2o906d8ln7ui1.cloudfront.net/images/LT2_Background.png",
                    "size": "small",
                    "widthPixels": 0,
                    "heightPixels": 0
                },
                {
                    "url": "https://d2o906d8ln7ui1.cloudfront.net/images/LT2_Background.png",
                    "size": "large",
                    "widthPixels": 0,
                    "heightPixels": 0
                }
            ]
        },
        "title": "Results for \"Cow's Milk Cheese\"",
        "logoUrl": "https://d2o906d8ln7ui1.cloudfront.net/images/cheeseskillicon.png"
    },
    "listTemplate2ListData": {
        "type": "list",
        "listId": "lt2Sample",
        "totalNumberOfItems": 10,
        "hintText": "Try, \"Alexa, select number 1\"",
        "listPage": {
            "listItems": [
                {
                    "listItemIdentifier": "brie",
                    "speech": "my first",
                    "ordinalNumber": 1,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Title"
                        },
                        "secondaryText": {
                            "type": "PlainText",
                            "text": "Description"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "brie"
                },
                {
                    "listItemIdentifier": "brie",
                    "speech": "my second",
                    "ordinalNumber": 2,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Title"
                        },
                        "secondaryText": {
                            "type": "PlainText",
                            "text": "Description"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "brie"
                },
                {
                    "listItemIdentifier": "brie",
                    "speech": "my third",
                    "ordinalNumber": 3,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Title"
                        },
                        "secondaryText": {
                            "type": "PlainText",
                            "text": "Description"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "brie"
                }
            ]
        }
    }
}


Tried adding the following to a list item with no success:

            "mySpeechData": {
              "type": "object",
              "properties": {
                "title": "Sam Lee"
              },
              "transformers": [
                {
                  "inputPath": "title",
                  "outputName": "outputTitle",
                  "transformer": "textToSpeech"
                }
              ]
            }

Is it even possible to apply transformers to a list object?

Thank you for your assistance in this matter.

apllist api
10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Gaetano@Amazon avatar image
Gaetano@Amazon answered

Hi all,

back to the original question, I have created a layout with just one transformer, that is accepting dynamic data input:

"datasources": {
        "data": {
            "properties": {
                "values": [
                    {
                        "text": "This is the text one"
                    },
                    {
                        "text": "This is the text two"
                    },
                    {
                        "text": "This is the text three"
                    }
                ]
            },
            "transformers": [
                {
                    "inputPath": "values[*].text",
                    "outputName": "speech",
                    "transformer": "textToSpeech"
                }
            ]
        }
    }

You can find the full layout here, it is importable into the Authoring tool by selecting the "Upload Code" button.

Kind regards,
Gaetano

10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Gaetano@Amazon avatar image
Gaetano@Amazon answered

Hi,

thanks for your post.

The SpeakList command lets you read out loud the content of range of items inside Container or a Sequence.

However, each item should have his own "Speech" property filled, it means that there must be a textToSpeech transformer for every element.

Kind regards,
Gaetano

12 comments
10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

How would you add a transformer to each item in the listTemplate2ListData list above? Tried adding the following to each item in the list:

  1. "mySpeechData": {
  2. "type": "object",
  3. "properties": {
  4. "title": "Sam Lee"
  5. },
  6. "transformers": [
  7. {
  8. "inputPath": "title",
  9. "outputName": "outputTitle",
  10. "transformer": "textToSpeech"
  11. }
  12. ]
  13. }

But could not get it to work. Also added:

"speech":"${data.mySpeechData.outputTitle}" in the text field of my HorizontalListItem definition. Any ideas?


0 Likes 0 ·

Hi,

please share the full APL document and datasources so we can provide you the best solution.

Thanks.

0 Likes 0 ·

There's a limit on the forums so I created gists:

https://gist.github.com/jvence/0116a6287aa8d5f35ce87ecf6ef84e27

https://gist.github.com/jvence/64689576f5b31a83ab09ff78a7281a2a

When a SpeakList command is issued, scrolling works fine but nothing is spoken.

Thanks


0 Likes 0 ·
Show more comments
Show more comments
Jean Vence avatar image
Jean Vence answered

Thanks but how would it look in the 'listTemplate2ListData' list above?


As you can see I tried to add the following to each element:


 "mySpeechData": {
              "type": "object",
              "properties": {
                "title": "Sam Lee"
              },
              "transformers": [
                {
                  "inputPath": "title",
                  "outputName": "outputTitle",
                  "transformer": "textToSpeech"
                }
              ]
            }
10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Jean Vence avatar image
Jean Vence answered
{
    "type": "APL",
    "version": "1.1",
    "settings": {},
    "theme": "dark",
    "import": [
        {
            "name": "alexa-layouts",
            "version": "1.0.0"
        }
    ],
    "resources": [
        {
            "description": "Stock color for the light theme",
            "colors": {
                "colorTextPrimary": "#151920"
            }
        },
        {
            "description": "Stock color for the dark theme",
            "when": "${viewport.theme == 'dark'}",
            "colors": {
                "colorTextPrimary": "#f0f1ef"
            }
        },
        {
            "description": "Standard font sizes",
            "dimensions": {
                "textSizeBody": 48,
                "textSizePrimary": 27,
                "textSizeSecondary": 23,
                "textSizeDetails": 20,
                "textSizeSecondaryHint": 25
            }
        },
        {
            "description": "Common spacing values",
            "dimensions": {
                "spacingThin": 6,
                "spacingSmall": 12,
                "spacingMedium": 24,
                "spacingLarge": 48,
                "spacingExtraLarge": 72
            }
        },
        {
            "description": "Common margins and padding",
            "dimensions": {
                "marginTop": 40,
                "marginLeft": 60,
                "marginRight": 60,
                "marginBottom": 40
            }
        }
    ],
    "styles": {
        "textStyleBase": {
            "description": "Base font description; set color",
            "values": [
                {
                    "color": "@colorTextPrimary"
                }
            ]
        },
        "textStyleBase0": {
            "description": "Thin version of basic font",
            "extend": "textStyleBase",
            "values": {
                "fontWeight": "100"
            }
        },
        "textStyleBase1": {
            "description": "Light version of basic font",
            "extend": "textStyleBase",
            "values": {
                "fontWeight": "300"
            }
        },
        "textStyleBase2": {
            "description": "Regular version of basic font",
            "extend": "textStyleBase",
            "values": {
                "fontWeight": "500"
            }
        },
        "mixinBody": {
            "values": {
                "fontSize": "@textSizeBody"
            }
        },
        "mixinPrimary": {
            "values": {
                "fontSize": "@textSizePrimary"
            }
        },
        "mixinDetails": {
            "values": {
                "fontSize": "@textSizeDetails"
            }
        },
        "mixinSecondary": {
            "values": {
                "fontSize": "@textSizeSecondary"
            }
        },
        "textStylePrimary": {
            "extend": [
                "textStyleBase1",
                "mixinPrimary"
            ]
        },
        "textStyleSecondary": {
            "extend": [
                "textStyleBase0",
                "mixinSecondary"
            ]
        },
        "textStyleBody": {
            "extend": [
                "textStyleBase1",
                "mixinBody"
            ]
        },
        "textStyleSecondaryHint": {
            "values": {
                "fontFamily": "Bookerly",
                "fontStyle": "italic",
                "fontSize": "@textSizeSecondaryHint",
                "color": "@colorTextPrimary"
            }
        },
        "textStyleDetails": {
            "extend": [
                "textStyleBase2",
                "mixinDetails"
            ]
        }
    },
    "onMount": [],
    "graphics": {},
    "commands": {},
    "layouts": {
        "FullHorizontalListItem": {
            "parameters": [
                "listLength"
            ],
            "item": [
                {
                    "type": "Container",
                    "height": "100vh",
                    "width": "100vw",
                    "alignItems": "center",
                    "justifyContent": "end",
                    "items": [
                        {
                            "type": "Image",
                            "position": "absolute",
                            "height": "100vh",
                            "width": "100vw",
                            "overlayColor": "rgba(0, 0, 0, 0.6)",
                            "source": "${data.image.sources[0].url}",
                            "scale": "best-fill"
                        },
                        {
                            "type": "AlexaHeader",
                            "headerTitle": "${title}",
                            "headerAttributionImage": "${logo}",
                            "grow": 1
                        },
                        {
                            "type": "Text",
                            "text": "${data.textContent.primaryText.text}",
                            "speech":"${data.mySpeechData.properties.outputTitle}",
                            "style": "textStyleBody",
                            "maxLines": 1
                        },
                        {
                            "type": "Text",
                            "text": "${data.textContent.secondaryText.text}",
                            "style": "textStyleDetails"
                        },
                        {
                            "type": "Text",
                            "text": "${ordinal} | ${listLength}",
                            "paddingBottom": "20dp",
                            "color": "white",
                            "spacing": "5dp"
                        }
                    ]
                }
            ]
        },
        "HorizontalListItem": {
            "item": [
                {
                    "type": "Container",
                    "maxWidth": 528,
                    "minWidth": 312,
                    "paddingLeft": 16,
                    "paddingRight": 16,
                    "height": "100%",
                    "items": [
                        {
                            "type": "Image",
                            "source": "${data.image.sources[0].url}",
                            "height": "40vh",
                            "width": "40vh"
                        },
                        {
                            "type": "Text",
                            "text": "<b>${ordinal}.</b> ${data.textContent.primaryText.text}",
                            "speech":"${data.mySpeechData.properties.outputTitle}",
                            "style": "textStyleSecondary",
                            "maxLines": 1,
                            "spacing": 12
                        },
                        {
                            "type": "Text",
                            "text": "${data.textContent.secondaryText.text}",
                            "style": "textStyleDetails",
                            "spacing": 4
                        }
                    ]
                }
            ]
        },
        "ListTemplate2": {
            "parameters": [
                "backgroundImage",
                "title",
                "logo",
                "hintText",
                "listData"
            ],
            "items": [
                {
                    "when": "${viewport.shape == 'round'}",
                    "type": "Container",
                    "height": "100%",
                    "width": "100%",
                    "items": [
                        {
                            "type": "Sequence",
                            "id": "mySequence",
                            "scrollDirection": "horizontal",
                            "data": "${listData}",
                            "height": "100%",
                            "width": "100%",
                            "numbered": true,
                            "item": [
                                {
                                    "type": "FullHorizontalListItem",
                                    "listLength": "${payload.listTemplate2ListData.listPage.listItems.length}"
                                }
                            ]
                        }
                    ]
                },
                {
                    "type": "Container",
                    "height": "100vh",
                    "width": "100vw",
                    "items": [
                        {
                            "type": "Image",
                            "source": "${backgroundImage}",
                            "scale": "best-fill",
                            "width": "100vw",
                            "height": "100vh",
                            "position": "absolute"
                        },
                        {
                            "type": "AlexaHeader",
                            "headerTitle": "${title}",
                            "headerAttributionImage": "${logo}"
                        },
                        {
                            "type": "Sequence",
                            "scrollDirection": "horizontal",
                            "paddingLeft": "@marginLeft",
                            "paddingRight": "@marginRight",
                            "data": "${listData}",
                            "height": "70vh",
                            "width": "100%",
                            "numbered": true,
                            "item": [
                                {
                                    "type": "HorizontalListItem"
                                }
                            ]
                        },
                        {
                            "type": "AlexaFooter",
                            "footerHint": "${payload.listTemplate2ListData.hintText}",
                            "position": "absolute",
                            "top": "85vh"
                        }
                    ]
                }
            ]
        }
    },
    "mainTemplate": {
        "parameters": [
            "payload"
        ],
        "item": [
            {
                "type": "ListTemplate2",
                "backgroundImage": "${payload.listTemplate2Metadata.backgroundImage.sources[0].url}",
                "title": "${payload.listTemplate2Metadata.title}",
                "hintText": "${payload.listTemplate2Metadata.hintText}",
                "logo": "${payload.listTemplate2Metadata.logoUrl}",
                "listData": "${payload.listTemplate2ListData.listPage.listItems}"
            }
        ]
    }
}

Data:

{
    "listTemplate2Metadata": {
        "type": "object",
        "objectId": "lt1Metadata",
        "backgroundImage": {
            "contentDescription": null,
            "smallSourceUrl": null,
            "largeSourceUrl": null,
            "sources": [
                {
                    "url": "https://d2o906d8ln7ui1.cloudfront.net/images/LT2_Background.png",
                    "size": "small",
                    "widthPixels": 0,
                    "heightPixels": 0
                },
                {
                    "url": "https://d2o906d8ln7ui1.cloudfront.net/images/LT2_Background.png",
                    "size": "large",
                    "widthPixels": 0,
                    "heightPixels": 0
                }
            ]
        },
        "title": "Results for \"Cow's Milk Cheese\"",
        "logoUrl": "https://d2o906d8ln7ui1.cloudfront.net/images/cheeseskillicon.png"
    },
    "listTemplate2ListData": {
        "type": "list",
        "listId": "lt2Sample",
        "totalNumberOfItems": 10,
        "hintText": "Try, \"Alexa, select number 1\"",
        "listPage": {
            "listItems": [
                {
                    "listItemIdentifier": "brie",
                    "ordinalNumber": 1,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Brie"
                        },
                        "secondaryText": {
                            "type": "PlainText",
                            "text": "Origin: France"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "brie",
                    "mySpeechData": {
                        "type": "object",
                        "properties": {
                            "title": "Sam Lee"
                        },
                        "transformers": [
                            {
                                "inputPath": "title",
                                "outputName": "outputTitle",
                                "transformer": "textToSpeech"
                            }
                        ]
                    }
                },
                {
                    "listItemIdentifier": "gruyere",
                    "ordinalNumber": 2,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Gruyere"
                        },
                        "secondaryText": {
                            "type": "RichText",
                            "text": "Origin: Switzerland"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gruyere.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gruyere.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "gruyere",
                    "mySpeechData": {
                        "type": "object",
                        "properties": {
                            "title": "Sam Lee"
                        },
                        "transformers": [
                            {
                                "inputPath": "title",
                                "outputName": "outputTitle",
                                "transformer": "textToSpeech"
                            }
                        ]
                    }
                },
                {
                    "listItemIdentifier": "gorgonzola",
                    "ordinalNumber": 3,
                    "textContent": {
                        "primaryText": {
                            "type": "PlainText",
                            "text": "Gorgonzola"
                        },
                        "secondaryText": {
                            "type": "RichText",
                            "text": "Origin: Italy"
                        }
                    },
                    "image": {
                        "contentDescription": null,
                        "smallSourceUrl": null,
                        "largeSourceUrl": null,
                        "sources": [
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gorgonzola.png",
                                "size": "small",
                                "widthPixels": 0,
                                "heightPixels": 0
                            },
                            {
                                "url": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gorgonzola.png",
                                "size": "large",
                                "widthPixels": 0,
                                "heightPixels": 0
                            }
                        ]
                    },
                    "token": "gorgonzola",
                    "mySpeechData": {
                        "type": "object",
                        "properties": {
                            "title": "Sam Lee"
                        },
                        "transformers": [
                            {
                                "inputPath": "title",
                                "outputName": "outputTitle",
                                "transformer": "textToSpeech"
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Just modified the template created in developer tool. I issue a SpeakList command which actually scrolls through the list but nothing is spoken.

Your assistance is greatly appreciated as I have an urgent demo tomorrow

10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Jean Vence avatar image
Jean Vence answered
    Map<String, Object> document;
        try {
            document = mapper.readValue(new File("List.json"), documentMapType);

            TypeReference<HashMap<String, Object>> dataSourceMapType = new TypeReference<HashMap<String, Object>>() {
            };
            Map<String, Object> dataSource = mapper.readValue(new File("ListData.json"), dataSourceMapType);

            RenderDocumentDirective documentDirective = RenderDocumentDirective.builder().withToken("documentToken")
                    .withDocument(document).withDatasources(dataSource).build();

            List<com.amazon.ask.model.interfaces.alexa.presentation.apl.Command> commands = new ArrayList<>();
            commands.add(SpeakListCommand.builder().withStart(0).withCount(3).withComponentId("mySequence")
                    .withMinimumDwellTime(1000).withAlign(Align.CENTER).build());

            ExecuteCommandsDirective commandsDirective = ExecuteCommandsDirective.builder().withToken("documentToken")
                    .withCommands(commands).build();

            return input.getResponseBuilder().addDirective(documentDirective).addDirective(commandsDirective).build();

        } catch (IOException e) {
            throw new AskSdkException("Unable to read or deserialize karaoke data", e);
        }

As you can see, the component id is "mySequence"

Thanks

10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Jean Vence avatar image
Jean Vence answered

Can anyone shed any light on this? Thanks

10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Gaetano@Amazon avatar image
Gaetano@Amazon answered

Hi,

Thanks for your patience.

I have created a brand new layout with using "default" components.

It consists of a Sequence of 3 Container(s), each of them containing an Image and 2 Text(s).

Here is the full importable layout:

{
    "document": {
        "type": "APL",
        "version": "1.1",
        "settings": {},
        "theme": "dark",
        "import":[],
        "resources": [],
        "styles": {},
        "graphics": {},
        "commands": {},
        "layouts": {},
        "mainTemplate": {
            "parameters": [
                "payload"
            ],
            "items": [
                {
                    "type": "Container",
                    "height": "100vh",
                    "width": "100vw",
                    "items": [
                        {
                            "type": "Image",
                            "source": "https://d2o906d8ln7ui1.cloudfront.net/images/LT2_Background.png",
                            "scale": "best-fill",
                            "width": "100vw",
                            "height": "100vh",
                            "position": "absolute"
                        },
                        {
                            "type": "Sequence",
                            "id": "SequenceToSpeak",
                            "width": "100%",
                            "height": "70vh",
                            "paddingLeft": "20",
                            "paddingRight": "20",
                            "paddingTop": "20",
                            "scrollDirection": "horizontal",
                            "item": [
                                {
                                    "type": "Container",
                                    "id": "ContainerOne",
                                    "alignItems": "center",
                                    "width": "100vw",
                                    "speech": "${payload.newData.properties.ssmlSpeech1_out}",
                                    "height": "100%",
                                    "paddingLeft": "16",
                                    "paddingRight": "16",
                                    "items": [
                                        {
                                            "type": "Image",
                                            "width": "40vh",
                                            "height": "40vh",
                                            "source": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png"
                                        },
                                        {
                                            "type": "Text",
                                            "maxLines": 1,
                                            "text": "Brie",
                                            "spacing": "12"
                                        },
                                        {
                                            "type": "Text",
                                            "style": "textStyleDetails",
                                            "text": "Origin: France",
                                            "spacing": "4"
                                        }
                                    ]
                                },
                                {
                                    "type": "Container",
                                    "id": "ContainerTwo",
                                    "alignItems": "center",
                                    "width": "100vw",
                                    "speech": "${payload.newData.properties.ssmlSpeech2_out}",
                                    "height": "100vh",
                                    "paddingLeft": "16",
                                    "paddingRight": "16",
                                    "items": [
                                        {
                                            "type": "Image",
                                            "width": "40vh",
                                            "height": "40vh",
                                            "source": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gruyere.png"
                                        },
                                        {
                                            "type": "Text",
                                            "maxLines": 1,
                                            "text": "Gruyere",
                                            "spacing": "12"
                                        },
                                        {
                                            "type": "Text",
                                            "style": "textStyleDetails",
                                            "text": "Origin: Switzerland",
                                            "spacing": "4"
                                        }
                                    ]
                                },
                                {
                                    "type": "Container",
                                    "id": "ContainerThree",
                                    "alignItems": "center",
                                    "width": "100vw",
                                    "speech": "${payload.newData.properties.ssmlSpeech3_out}",
                                    "height": "100vh",
                                    "paddingLeft": "16",
                                    "paddingRight": "16",
                                    "items": [
                                        {
                                            "type": "Image",
                                            "width": "40vh",
                                            "height": "40vh",
                                            "source": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gorgonzola.png"
                                        },
                                        {
                                            "type": "Text",
                                            "maxLines": 1,
                                            "text": "Gorgonzola",
                                            "spacing": "12"
                                        },
                                        {
                                            "type": "Text",
                                            "style": "textStyleDetails",
                                            "text": "Origin: Italy",
                                            "spacing": "4"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    },
    "datasources": {
        "newData": {
        "type": "object",
        "properties": {
            "ssmlSpeech1": "Brie",
            "ssmlSpeech2": "Gruyere",
            "ssmlSpeech3": "Gorgonzola"
        },
        "transformers": [
            {
                "inputPath": "ssmlSpeech1",
                "outputName": "ssmlSpeech1_out",
                "transformer": "textToSpeech"
            },
            {
                "inputPath": "ssmlSpeech2",
                "outputName": "ssmlSpeech2_out",
                "transformer": "textToSpeech"
            },
            {
                "inputPath": "ssmlSpeech3",
                "outputName": "ssmlSpeech3_out",
                "transformer": "textToSpeech"
            }
        ]
    }
    }
}

and the SpeakList command to be sent:

{
                        "type": "SpeakList",
                        "componentId": "SequenceToSpeak",
                        "start": 0,
                        "count": 4,
                        "minimumDwellTime": 1000,
                        "align": "center"
}

This will let Alexa go through all the elements of the Sequence, and read out loud the content of the "speech" property, so it should be a good fit for your demo.

Back to your question, applying a transformer to a list object should be technically possible, I will update this thread once I get an answer from our internal team.

Kind regards,
Gaetano

10 |3000 characters needed characters left characters exceeded

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.