Ask Question Cards
The Ask Question group (ask_text, ask_number, ask_phone, ask_email, ask_date, ask_location) sends a prompt to the customer and pauses bot execution until a valid input is received.
Supported Question Types
| Card Type | Validation Rule | Auto-Retry Prompt |
|---|---|---|
ask_text |
Captures any non-empty text string | - |
ask_number |
Validates numeric value within min/max bounds | "Please provide a valid number." |
ask_phone |
Validates E.164 phone number format | "Please enter a valid 10-digit mobile number." |
ask_email |
Validates RFC-5322 email syntax | "Please enter a valid email address." |
ask_date |
Normalizes text to ISO YYYY-MM-DD |
"Please specify a valid date (e.g., DD/MM/YYYY)." |
ask_location |
Expects WhatsApp location pin payload | "Please share your location using the WhatsApp attach menu." |
Configuration Parameters
prompt_text: The question sent to the customer.variable_name: Target variable key where the validated answer will be stored in workflow memory (e.g.patient_age,preferred_date).max_retries: Number of invalid attempts before triggering the fallback branch (default: 3).timing.delay: Optional pre-execution delay with typing indicator (e.g.,{ enabled: true, duration: 1, unit: "seconds", typingIndicator: true }).timing.timeout: Automated inactivity timeout and fallback routing (e.g.,{ enabled: true, duration: 15, unit: "minutes", action: "goto_node" | "handoff" | "end", fallbackNodeId: "node_handoff" }).
Response Timeout & Lead Drop-off Recovery
If a user goes idle without responding to a question, the response timeout automatically rescues the session:
- Branch to Node (
goto_node): Routes to a polite reminder or alternate questionnaire. - Handoff to Human (
handoff): Immediately transfers the chat to the live team queue so agents can follow up. - End Flow (
end): Concludes the conversation cleanly.
Note: If the user replies before the timer expires, the pending timeout is atomically invalidated.
📖 See the complete Node Delay & Timeout System Guide.
Output Data Schema (Codex)
{
"variable_key": "patient_age",
"raw_input": "34",
"normalized_value": 34,
"validation_passed": true,
"attempts": 1
}