Add telegram_sent event (#41159)

Co-authored-by: Heine Furubotten <hfurubotten@users.noreply.github.com>
This commit is contained in:
Nikolai 2020-10-30 01:55:25 +03:00 committed by GitHub
parent 7027b01a29
commit a396f8f76f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View File

@ -67,6 +67,7 @@ ATTR_USER_ID = "user_id"
ATTR_USERNAME = "username"
ATTR_VERIFY_SSL = "verify_ssl"
ATTR_TIMEOUT = "timeout"
ATTR_MESSAGE_TAG = "message_tag"
CONF_ALLOWED_CHAT_IDS = "allowed_chat_ids"
CONF_PROXY_URL = "proxy_url"
@ -91,6 +92,7 @@ SERVICE_LEAVE_CHAT = "leave_chat"
EVENT_TELEGRAM_CALLBACK = "telegram_callback"
EVENT_TELEGRAM_COMMAND = "telegram_command"
EVENT_TELEGRAM_TEXT = "telegram_text"
EVENT_TELEGRAM_SENT = "telegram_sent"
PARSER_HTML = "html"
PARSER_MD = "markdown"
@ -136,6 +138,7 @@ BASE_SERVICE_SCHEMA = vol.Schema(
vol.Optional(ATTR_KEYBOARD): vol.All(cv.ensure_list, [cv.string]),
vol.Optional(ATTR_KEYBOARD_INLINE): cv.ensure_list,
vol.Optional(ATTR_TIMEOUT): cv.positive_int,
vol.Optional(ATTR_MESSAGE_TAG): cv.string,
},
extra=vol.ALLOW_EXTRA,
)
@ -508,6 +511,7 @@ class TelegramNotificationService:
ATTR_REPLY_TO_MSGID: None,
ATTR_REPLYMARKUP: None,
ATTR_TIMEOUT: None,
ATTR_MESSAGE_TAG: None,
}
if data is not None:
if ATTR_PARSER in data:
@ -522,6 +526,8 @@ class TelegramNotificationService:
params[ATTR_DISABLE_WEB_PREV] = data[ATTR_DISABLE_WEB_PREV]
if ATTR_REPLY_TO_MSGID in data:
params[ATTR_REPLY_TO_MSGID] = data[ATTR_REPLY_TO_MSGID]
if ATTR_MESSAGE_TAG in data:
params[ATTR_MESSAGE_TAG] = data[ATTR_MESSAGE_TAG]
# Keyboards:
if ATTR_KEYBOARD in data:
keys = data.get(ATTR_KEYBOARD)
@ -548,12 +554,22 @@ class TelegramNotificationService:
out = func_send(*args_msg, **kwargs_msg)
if not isinstance(out, bool) and hasattr(out, ATTR_MESSAGEID):
chat_id = out.chat_id
self._last_message_id[chat_id] = out[ATTR_MESSAGEID]
message_id = out[ATTR_MESSAGEID]
self._last_message_id[chat_id] = message_id
_LOGGER.debug(
"Last message ID: %s (from chat_id %s)",
self._last_message_id,
chat_id,
)
event_data = {
ATTR_CHAT_ID: chat_id,
ATTR_MESSAGEID: message_id,
}
message_tag = kwargs_msg.get(ATTR_MESSAGE_TAG)
if message_tag is not None:
event_data[ATTR_MESSAGE_TAG] = message_tag
self.hass.bus.async_fire(EVENT_TELEGRAM_SENT, event_data)
elif not isinstance(out, bool):
_LOGGER.warning(
"Update last message: out_type:%s, out=%s", type(out), out

View File

@ -30,6 +30,9 @@ send_message:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or ["Text button1:/button1, Text button2:/button2", "Text button3:/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
send_photo:
description: Send a photo.
@ -67,6 +70,9 @@ send_photo:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
send_sticker:
description: Send a sticker.
@ -101,6 +107,9 @@ send_sticker:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
send_video:
description: Send a video.
@ -138,6 +147,9 @@ send_video:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
send_document:
description: Send a document.
@ -175,6 +187,9 @@ send_document:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
send_location:
description: Send a location.
@ -200,6 +215,9 @@ send_location:
inline_keyboard:
description: List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
example: '["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]]'
message_tag:
description: 'Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}'
example: "msg_to_edit"
edit_message:
description: Edit a previously sent message.