Automation
alias: "OnCall: Page Wael"
description: "Pager is triggered with a Webhook and notifies me until I ack the page"
triggers:
- trigger: webhook
allowed_methods:
- POST
webhook_id: "-13dy9GK4x2S9t7gDzwMNqClO"
local_only: false
conditions: []
actions:
- sequence:
- variables:
ack_code: "{{ range(1000, 9999) | random }}"
acked: false
signal_messages_sent: 0
call_frequency: 2
- action: notify.signal_wael
metadata: {}
data:
message: >-
You are being paged by {{ trigger.json.email }} because {{
trigger.json.reason }}. Reply with code {{ ack_code }} to ack the
page.
- variables:
signal_messages_sent: "{{ signal_messages_sent + 1 }}"
- repeat:
sequence:
- sequence:
- wait_template: >-
{% set received_code =
states('sensor.signal_message_received') | trim | int(0) %}
{% set expected_code = ack_code | int(0) %}
{{ state_attr('sensor.signal_message_received',
'sourceNumber') == '+15554443333' and
received_code == expected_code and received_code != 0 }}
continue_on_timeout: true
timeout: "00:02:00"
- if:
- condition: template
value_template: "{{ wait.completed }}"
then:
- variables:
acked: true
else:
- sequence:
- if:
- condition: template
value_template: "{{ signal_messages_sent == call_frequency }}"
then:
- sequence:
- action: notify.twilio_call
metadata: {}
data:
message: >-
You are being paged by {{
trigger.json.email }} because {{
trigger.json.reason }}.
target:
- 16509333448
- variables:
call_frequency: "{{ [ call_frequency + 1, 5] | min }}"
signal_messages_sent: 0
else:
- sequence:
- action: notify.signal_wael
data:
message: >-
You are being paged by {{
trigger.json.email }} because {{
trigger.json.reason }}. Reply with code {{
ack_code }} to ack the page.
- variables:
signal_messages_sent: "{{ signal_messages_sent + 1 }}"
until:
- condition: template
value_template: "{{ acked == true }}"
- action: notify.signal_wael
metadata: {}
data:
message: The page {{ ack_code }} was acked!
mode: queued
max: 5