Hi Kunaal,
For this use case you can leverage message templating.
Our Poll Bot implementation uses a data object which contains answers to a poll, which is a list of strings, https://github.com/SymphonyPlatformSolutions/symphony-poll-bot-java/blob/main/src/main/java/com/symphony/devrel/pollbot/command/CreatePollFormReply.java#L145-L152
// Construct poll form and blast to audience
Map<String, ?> data = Map.of("data", PollBlastData.builder()
.id(poll.getId())
.question(poll.getQuestionText())
.answers(poll.getAnswers())
.creatorDisplayName(poll.getCreatorDisplayName())
.timeLimit(poll.getTimeLimit())
.build());
Message message = Message.builder().content(pollService.getMessage("poll-blast-form", data)).build();
We then use a Freemarker template to iterate on the answers field to produce the respective number of buttons with labels, https://github.com/SymphonyPlatformSolutions/symphony-poll-bot-java/blob/main/src/main/resources/templates/poll-blast-form.ftl#L11-L13
<#list data.answers as answer>
<button name="option-${answer?index}" type="action">${answer}</button><br/>
</#list>
Facing such error what should i do?
Error:Error parsing EntityJSON: Syntax error in template "messageML" in line 4, column 48: The left hand operand of ?index must be a loop variable, but there's no loop variable in scope with this name: answer
code:
<MessageML>
<form id="raise-ticket">
<h2 style="color:white;">Application Name</h2>
<button name="option-${answer?index}" type="action">${answer}</button><br/>
</form>
</MessageML>
you will need to programtically use the below example in a chat bot as there is reliance on
data
also being parsed into the messageML for the templating engine to loop over.