From 32685f16bfa68b5d0f41177955978a5f47a1e76a Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Mon, 8 Jul 2019 05:05:15 -0700 Subject: [PATCH] Implement Twilio SMS notify MediaUrl support (#24971) * Implement Twilio SMS notify MediaUrl support Adds support for setting the `media_url` parameter of the twilio API client with an optional attribute under the notify `data` attribute. Per the twilio docs (https://www.twilio.com/docs/sms/send-messages#include-medi$ this feature is only available in the US and Canada, for GIF, PNG, or JPEG content. * lint: fix 80 char ruler * use kwargs to set the media_url after testing locally, seems like the previous way of using object() was not working. this seems to be working * re-use the ATTR_MEDIAURL attribute --- homeassistant/components/twilio_sms/notify.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/twilio_sms/notify.py b/homeassistant/components/twilio_sms/notify.py index 6ac6d085de5..b8d0c4db06a 100644 --- a/homeassistant/components/twilio_sms/notify.py +++ b/homeassistant/components/twilio_sms/notify.py @@ -7,11 +7,13 @@ from homeassistant.components.twilio import DATA_TWILIO import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import (ATTR_TARGET, PLATFORM_SCHEMA, - BaseNotificationService) + BaseNotificationService, + ATTR_DATA) _LOGGER = logging.getLogger(__name__) CONF_FROM_NUMBER = "from_number" +ATTR_MEDIAURL = "media_url" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_FROM_NUMBER): @@ -39,6 +41,14 @@ class TwilioSMSNotificationService(BaseNotificationService): def send_message(self, message="", **kwargs): """Send SMS to specified target user cell.""" targets = kwargs.get(ATTR_TARGET) + data = kwargs.get(ATTR_DATA) or {} + twilio_args = { + 'body': message, + 'from_': self.from_number + } + + if ATTR_MEDIAURL in data: + twilio_args[ATTR_MEDIAURL] = data[ATTR_MEDIAURL] if not targets: _LOGGER.info("At least 1 target is required") @@ -46,4 +56,4 @@ class TwilioSMSNotificationService(BaseNotificationService): for target in targets: self.client.messages.create( - to=target, body=message, from_=self.from_number) + to=target, **twilio_args)