{ "description": "Basic SMS and Call escalation", "states": [ { "name": "Trigger", "type": "trigger", "transitions": [ { "next": "send_alert_from_sms", "event": "incomingMessage" }, { "next": "describe_alert_from_call", "event": "incomingCall" }, { "event": "incomingConversationMessage" }, { "event": "incomingRequest" }, { "event": "incomingParent" } ], "properties": { "offset": { "x": 0, "y": 0 } } }, { "name": "send_alert_from_sms", "type": "make-http-request", "transitions": [ { "next": "send_alert_from_sms_success", "event": "success" }, { "next": "send_alert_from_sms_fail", "event": "failed" } ], "properties": { "offset": { "x": -180, "y": 250 }, "method": "POST", "content_type": "application/json;charset=utf-8", "body": "{\"from\":\"{{trigger.message.From}}\",\"message\":\"{{trigger.message.Body}}\"}", "url": "" } }, { "name": "send_alert_from_sms_success", "type": "send-message", "transitions": [ { "event": "sent" }, { "event": "failed" } ], "properties": { "offset": { "x": -410, "y": 590 }, "service": "{{trigger.message.InstanceSid}}", "channel": "{{trigger.message.ChannelSid}}", "from": "{{flow.channel.address}}", "message_type": "custom", "to": "{{contact.channel.address}}", "body": "Alert sent successfully" } }, { "name": "send_alert_from_sms_fail", "type": "send-message", "transitions": [ { "event": "sent" }, { "event": "failed" } ], "properties": { "offset": { "x": -60, "y": 590 }, "service": "{{trigger.message.InstanceSid}}", "channel": "{{trigger.message.ChannelSid}}", "from": "{{flow.channel.address}}", "message_type": "custom", "to": "{{contact.channel.address}}", "body": "Failed to send alert: Status({{widgets.send_escalation.status_code}})" } }, { "name": "describe_alert_from_call", "type": "gather-input-on-call", "transitions": [ { "event": "keypress" }, { "next": "send_alert_from_call", "event": "speech" }, { "event": "timeout" } ], "properties": { "speech_timeout": "auto", "offset": { "x": 350, "y": 240 }, "loop": 1, "finish_on_key": "#", "say": "Describe the alert to send. Press pound when finished.", "stop_gather": true, "gather_language": "en", "profanity_filter": "true", "timeout": 60 } }, { "name": "send_alert_from_call", "type": "make-http-request", "transitions": [ { "next": "send_alert_from_call_success", "event": "success" }, { "next": "send_alert_from_call_fail", "event": "failed" } ], "properties": { "offset": { "x": 360, "y": 590 }, "method": "POST", "content_type": "application/json;charset=utf-8", "body": "{\"from\":\"{{trigger.call.From}}\", \"message\":\"{{widgets.describe_alert_from_call.SpeechResult}} \"}", "url": "" } }, { "name": "send_alert_from_call_success", "type": "say-play", "transitions": [ { "event": "audioComplete" } ], "properties": { "offset": { "x": 90, "y": 900 }, "loop": 1, "say": "Alert sent successfully" } }, { "name": "send_alert_from_call_fail", "type": "say-play", "transitions": [ { "event": "audioComplete" } ], "properties": { "offset": { "x": 520, "y": 900 }, "loop": 1, "say": "Failed to send alert: Status ({{widgets.send_alert_from_call.status_code}})" } } ], "initial_state": "Trigger", "flags": { "allow_concurrent_calls": true } }