Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 14 additions & 10 deletions source/_components/notify.telegram.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ action:
service: notify.NOTIFIER_NAME
data:
title: '*Send a message*'
message: 'That's an example that _sends_ a *formatted* message with a custom keyboard.'
message: 'That's an example that _sends_ a *formatted* message with a custom inline keyboard.'
data:
keyboard:
- '/command1, /command2'
- '/command3, /command4'
inline_keyboard:
- 'Task 1:/command1, Task 2:/command2'
- 'Task 3:/command3, Task 4:/command4'
```

Configuration variables:
Expand Down Expand Up @@ -115,8 +115,9 @@ Configuration variables:

- **url** or **file** (*Required*): For local or remote path to an image.
- **caption** (*Optional*): The title of the image.
- **username** (*Optional*): Username for a URL which require HTTP basic authentication.
- **password** (*Optional*): Username for a URL which require HTTP basic authentication.
- **username** (*Optional*): Username for a URL which require HTTP authentication.
- **password** (*Optional*): Username for a URL which require HTTP authentication.
- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'.
- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard.
- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with asociated callback data.

Expand All @@ -129,19 +130,23 @@ action:
service: notify.NOTIFIER_NAME
data:
title: Send a document
message: That's an example that sends a document.
message: That's an example that sends a document and a custom keyboard.
data:
document:
file: /tmp/whatever.odf
caption: Document Title xy
keyboard:
- '/command1, /command2'
- '/command3, /command4'
```

Configuration variables:

- **url** or **file** (*Required*): For local or remote path to a document.
- **caption** (*Optional*): The title of the document.
- **username** (*Optional*): Username for a URL which require HTTP basic authentication.
- **password** (*Optional*): Username for a URL which require HTTP basic authentication.
- **username** (*Optional*): Username for a URL which require HTTP authentication.
- **password** (*Optional*): Username for a URL which require HTTP authentication.
- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'.
- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard.
- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with asociated callback data.

Expand All @@ -163,7 +168,6 @@ action:

Configuration variables:

- **location** (*Required*): For local or remote path to an image.
- **latitude** (*Required*): The latitude to send.
- **longitude** (*Required*): The longitude to send.
- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard.
Expand Down
32 changes: 20 additions & 12 deletions source/_components/telegram_bot.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ from_first: "<first name of the sender>"
from_last: "<last name of the sender>"
user_id: "<id of the sender>"
chat_id: "<origin chat id>"
chat: "<chat info>"
```

Any other message not starting with `/` will be processed as simple text, firing a `telegram_text` event on the event bus with the following `event_data`:
Expand All @@ -156,6 +157,7 @@ from_first: "<first name of the sender>"
from_last: "<last name of the sender>"
user_id: "<id of the sender>"
chat_id: "<origin chat id>"
chat: "<chat info>"
```

if the message is sent from a [press from an inline button](https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), for example, a callback query is received, and Home Assistant will fire a `telegram_callback` event with:
Expand Down Expand Up @@ -263,8 +265,8 @@ Text repeater:
message: 'You said: {% raw %}{{ trigger.event.data.text }}{% endraw %}'
disable_notification: true
inline_keyboard:
- '/edit,/NO'
- '/remove button'
- "Edit message:/edit_msg, Don't:/do_nothing"
- "Remove this button:/remove button"
```

Message editor:
Expand All @@ -275,7 +277,7 @@ Message editor:
platform: event
event_type: telegram_callback
event_data:
data: '/edit'
data: '/edit_msg'
action:
- service: telegram_bot.answer_callback_query
data_template:
Expand All @@ -288,8 +290,8 @@ Message editor:
chat_id: {% raw %}'{{ trigger.event.data.user_id }}'{% endraw %}
title: '*Message edit*'
inline_keyboard:
- '/edit,/NO'
- '/remove button'
- "Edit message:/edit_msg, Don't:/do_nothing"
- "Remove this button:/remove button"
message: >
{% raw %}Callback received from {% raw %}{{ trigger.event.data.from_first }}{% endraw %}.
Message id: {% raw %}{{ trigger.event.data.message.message_id }}{% endraw %}.
Expand All @@ -315,7 +317,7 @@ Keyboard editor:
message_id: 'last'
chat_id: {% raw %}'{{ trigger.event.data.user_id }}'{% endraw %}
inline_keyboard:
- '/edit,/NO'
- "Edit message:/edit_msg, Don't:/do_nothing"
```

Only acknowledges the 'NO' answer:
Expand All @@ -326,7 +328,7 @@ Only acknowledges the 'NO' answer:
platform: event
event_type: telegram_callback
event_data:
data: '/NO'
data: '/do_nothing'
action:
- service: telegram_bot.answer_callback_query
data_template:
Expand Down Expand Up @@ -354,7 +356,9 @@ class TelegramBotEventListener(appapi.AppDaemon):
assert event_id == 'telegram_text'
user_id = payload_event['user_id']
msg = 'You said: ``` %s ```' % payload_event['text']
keyboard = ['/edit,/NO', '/remove button']
keyboard = [[("Edit message", "/edit_msg"),
("Don't", "/do_nothing")],
[("Remove this button", "/remove button")]]
self.call_service('telegram_bot/send_message',
title='*Dumb automation*',
target=user_id,
Expand All @@ -368,8 +372,13 @@ class TelegramBotEventListener(appapi.AppDaemon):
data_callback = payload_event['data']
callback_id = payload_event['id']
user_id = payload_event['user_id']
# keyboard = ["Edit message:/edit_msg, Don't:/do_nothing",
# "Remove this button:/remove button"]
keyboard = [[("Edit message", "/edit_msg"),
("Don't", "/do_nothing")],
[("Remove this button", "/remove button")]]

if data_callback == '/edit': # Message editor:
if data_callback == '/edit_msg': # Message editor:
# Answer callback query
self.call_service('telegram_bot/answer_callback_query',
message='Editing the message!',
Expand All @@ -381,7 +390,6 @@ class TelegramBotEventListener(appapi.AppDaemon):
user = payload_event['from_first']
title = '*Message edit*'
msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```'
keyboard = ['/edit,/NO', '/remove button']
self.call_service('telegram_bot/edit_message',
chat_id=user_id,
message_id=msg_id,
Expand All @@ -397,13 +405,13 @@ class TelegramBotEventListener(appapi.AppDaemon):
callback_query_id=callback_id)

# Edit the keyboard
new_keyboard = ['/edit,/NO']
new_keyboard = keyboard[:1]
self.call_service('telegram_bot/edit_replymarkup',
chat_id=user_id,
message_id='last',
inline_keyboard=new_keyboard)

elif data_callback == '/NO': # Only Answer to callback query
elif data_callback == '/do_nothing': # Only Answer to callback query
self.call_service('telegram_bot/answer_callback_query',
message='OK, you said no!',
callback_query_id=callback_id)
Expand Down