Logo Wael's Digital Garden

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