165 lines
5.0 KiB
YAML
165 lines
5.0 KiB
YAML
blueprint:
|
|
name: "Custom: Telegram Commands"
|
|
description: >
|
|
Sends a Telegram message with inline keyboard buttons to multiple chat IDs
|
|
when executed manually, and reacts to button presses by performing
|
|
the corresponding action (one per button).
|
|
domain: automation
|
|
input:
|
|
commands_group:
|
|
name: "Commands"
|
|
collapsed: false
|
|
input:
|
|
commands:
|
|
name: Commands
|
|
description: List of commands
|
|
default: []
|
|
selector:
|
|
text:
|
|
multiple: true
|
|
|
|
answers:
|
|
name: Answers
|
|
description: List of answers (optional)
|
|
default: []
|
|
selector:
|
|
text:
|
|
multiple: true
|
|
|
|
callbacks_group:
|
|
name: "Callbacks"
|
|
collapsed: false
|
|
input:
|
|
button_1_callback:
|
|
name: Button 1 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_2_callback:
|
|
name: Button 2 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_3_callback:
|
|
name: Button 3 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_4_callback:
|
|
name: Button 4 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_5_callback:
|
|
name: Button 5 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_6_callback:
|
|
name: Button 6 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_7_callback:
|
|
name: Button 7 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
button_8_callback:
|
|
name: Button 8 Callback
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
mode: parallel
|
|
|
|
variables:
|
|
commands: !input commands
|
|
answers: !input answers
|
|
|
|
is_debug: false
|
|
command: "{{ trigger.event.data.command }}"
|
|
chat_id: "{{ trigger.event.data.chat_id }}"
|
|
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_command
|
|
|
|
action:
|
|
- variables:
|
|
command_index: >
|
|
{% set res = -1 %}
|
|
{% if (commands | length >= 1 and command == commands[0] and button_1_callback != []) %}
|
|
{% set res = 0 %}
|
|
{% elif (commands | length >= 2 and command == commands[1] and button_2_callback != []) %}
|
|
{% set res = 1 %}
|
|
{% elif (commands | length >= 3 and command == commands[2] and button_3_callback != []) %}
|
|
{% set res = 2 %}
|
|
{% elif (commands | length >= 4 and command == commands[3] and button_4_callback != []) %}
|
|
{% set res = 3 %}
|
|
{% elif (commands | length >= 5 and command == commands[4] and button_5_callback != []) %}
|
|
{% set res = 4 %}
|
|
{% elif (commands | length >= 6 and command == commands[5] and button_6_callback != []) %}
|
|
{% set res = 5 %}
|
|
{% elif (commands | length >= 7 and command == commands[6] and button_7_callback != []) %}
|
|
{% set res = 6 %}
|
|
{% elif (commands | length >= 8 and command == commands[7] and button_8_callback != []) %}
|
|
{% set res = 7 %}
|
|
{% endif %}
|
|
{{ res }}
|
|
- choose:
|
|
- conditions: "{{ command_index == 0 }}"
|
|
sequence: !input button_1_callback
|
|
- conditions: "{{ command_index == 1 }}"
|
|
sequence: !input button_2_callback
|
|
- conditions: "{{ command_index == 2 }}"
|
|
sequence: !input button_3_callback
|
|
- conditions: "{{ command_index == 3 }}"
|
|
sequence: !input button_4_callback
|
|
- conditions: "{{ command_index == 4 }}"
|
|
sequence: !input button_5_callback
|
|
- conditions: "{{ command_index == 5 }}"
|
|
sequence: !input button_6_callback
|
|
- conditions: "{{ command_index == 6 }}"
|
|
sequence: !input button_7_callback
|
|
- conditions: "{{ command_index == 7 }}"
|
|
sequence: !input button_8_callback
|
|
|
|
- variables:
|
|
message: >
|
|
{% if command_index == -1 or answers | length <= command_index %}
|
|
{% else %}
|
|
{{ answers[command_index] }}
|
|
{% endif %}
|
|
|
|
# Debug info (log if required)
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ is_debug }}"
|
|
sequence:
|
|
- service: persistent_notification.create
|
|
data:
|
|
title: "Debug Info (Telegram Commands)"
|
|
message: >
|
|
command_index = {{ command_index }},
|
|
commands = {{ commands }},
|
|
answers = {{ answers }},
|
|
message = {{ message }}
|
|
|
|
- choose:
|
|
- conditions: "{{ message != '' }}"
|
|
sequence:
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: "{{ chat_id }}"
|
|
message: "{{ message }}"
|
|
|