Loops a sequence of prompts while a customer or agent is on hold or in queue. This block can be configured with an interruption timeout when in a Queue flow that interrupts the message loop to run other flow logic. The message loop can include entries for both Text and Prompts.
Factories
MessageParticipantIteratively
MessageParticipantIteratively() -> MessageParticipantIterativelyHandle
Construct a fresh MessageParticipantIteratively block with an auto-generated id.
Use this when authoring from scratch, the runtime picks a UUID automatically.
MessageParticipantIteratively
MessageParticipantIteratively(id: String) -> MessageParticipantIterativelyHandle
Construct a MessageParticipantIteratively block with an operator-supplied id.
| Parameter | Type | Required | Description |
id | String | yes | Wire identifier, typically a Connect UUID restored by decompile so round-trips stay byte-stable. |
Methods
messages
messages(value: Array<Map (MessagesElement)>) -> MessageParticipantIterativelyHandle
Set the Messages parameter. Ordered list of prompts the action iterates through. Each element carries exactly one of Text, SSML, PromptId, or Media. Operators authoring in Rhai pass a Vec<MessagesElement> (Rhai array of map literals) directly. Measured 2026-10-14: Connect accepts one message in place of the array, and refuses [], a string and a number.
| Parameter | Type | Required | Description |
value | Array<Map (MessagesElement)> | yes | Ordered list of prompts the action iterates through. Each element carries exactly one of Text, SSML, PromptId, or Media. Operators authoring in Rhai pass a Vec<MessagesElement> (Rhai array of map literals) directly. Measured 2026-10-14: Connect accepts one message in place of the array, and refuses [], a string and a number. |
interrupt_frequency_seconds
interrupt_frequency_seconds(value?: String) -> MessageParticipantIterativelyHandle
Set the InterruptFrequencySeconds parameter. Time to elapse before the action completes with "MessagesInterrupted" run result
| Parameter | Type | Required | Description |
value | String | no | Time to elapse before the action completes with "MessagesInterrupted" run result |
next
next(target: Handle) -> MessageParticipantIterativelyHandle
Wire the success-path transition. Substitutes the target's auto-generated UUID into the wire Transitions.NextAction slot.
| Parameter | Type | Required | Description |
target | Handle | yes | The block to route to once this block completes successfully. |
when
when(cond: ConditionHandle, target: Handle) -> MessageParticipantIterativelyHandle
Append a Conditions[] branch. Multiple .when(...) calls chain, evaluation runs in source order, first match wins.
| Parameter | Type | Required | Description |
cond | ConditionHandle | yes | Built from the Cond::<op>(...) namespace, e.g. Cond::equals("42"). |
target | Handle | yes | Block to route to when the condition matches. |
on_no_matching
on_no_matching(target: Handle) -> MessageParticipantIterativelyHandle
Wire an error transition for NoMatchingError: if no other Error matches.
| Parameter | Type | Required | Description |
target | Handle | yes | Block to route to on NoMatchingError. if no other Error matches. |
set_id
set_id(id: String) -> MessageParticipantIterativelyHandle
Override the auto-generated identifier with a specific wire id.
| Parameter | Type | Required | Description |
id | String | yes | Wire identifier override. Decompile threads this through to round-trip Connect-side UUIDs. |
meta_position
meta_position(x: i64, y: i64) -> MessageParticipantIterativelyHandle
Set the block's canvas position. Mostly auto-emitted by decompile; authored scripts call Flow.auto_layout() instead and let the layout pass fill positions in.
| Parameter | Type | Required | Description |
x | i64 | yes | Canvas X coordinate. |
y | i64 | yes | Canvas Y coordinate. |
set_meta
set_meta(key: String, value: Dynamic) -> MessageParticipantIterativelyHandle
Single-key escape hatch, set one ActionMetadata key by name when the typed meta_* setters don't cover it.
| Parameter | Type | Required | Description |
key | String | yes | Wire key name (under Metadata.ActionMetadata[<id>]). |
value | Dynamic | yes | Any JSON-serializable Rhai value. |
overwrite_meta
overwrite_meta(value: Map) -> MessageParticipantIterativelyHandle
Full-replace escape hatch, overwrite the entire ActionMetadata blob.
| Parameter | Type | Required | Description |
value | Map | yes | Replacement map for the entire ActionMetadata sub-object. |
set_meta_param
set_meta_param(param: String, flag: String, value: Dynamic) -> MessageParticipantIterativelyHandle
Set a single per-parameter ActionMetadata flag.
| Parameter | Type | Required | Description |
param | String | yes | Parameter name (e.g. "Text"). |
flag | String | yes | Flag name ("useDynamic", "MFLAG_*", etc.). |
value | Dynamic | yes | Flag value. |
overwrite_meta_param
overwrite_meta_param(param: String, value: Map) -> MessageParticipantIterativelyHandle
Replace the entire flag map for one parameter.
| Parameter | Type | Required | Description |
param | String | yes | Parameter name. |
value | Map | yes | Replacement flag map for the parameter. |
overwrite_parameters
overwrite_parameters(value: Map) -> MessageParticipantIterativelyHandle
Wire-shape escape hatch, overwrite the entire Parameters blob.
| Parameter | Type | Required | Description |
value | Map | yes | Replacement parameter map for the block. |
raw_transitions
raw_transitions(value: Map) -> MessageParticipantIterativelyHandle
Wire-shape escape hatch for non-canonical transition objects.
| Parameter | Type | Required | Description |
value | Map | yes | Replacement transitions map (raw JSON shape). |