'Send a message to a user.'

def send_message(self, message='', **kwargs):

    service_data = dict(target=kwargs.get(ATTR_TARGET, self._chat_id))
    if (ATTR_TITLE in kwargs):
        service_data.update({ATTR_TITLE: kwargs.get(ATTR_TITLE)})
    if message:
        service_data.update({ATTR_MESSAGE: message})
    data = kwargs.get(ATTR_DATA)
    if ((data is not None) and (ATTR_KEYBOARD in data)):
        keys = data.get(ATTR_KEYBOARD)
        keys = (keys if isinstance(keys, list) else [keys])
        service_data.update(keyboard=keys)
    elif ((data is not None) and (ATTR_INLINE_KEYBOARD in data)):
        keys = data.get(ATTR_INLINE_KEYBOARD)
        keys = (keys if isinstance(keys, list) else [keys])
        service_data.update(inline_keyboard=keys)
    if ((data is not None) and (ATTR_PHOTO in data)):
        photos = data.get(ATTR_PHOTO, None)
        photos = (photos if isinstance(photos, list) else [photos])
        for photo_data in photos:
            service_data.update(photo_data)
            self.hass.services.call(DOMAIN, 'send_photo', service_data=service_data)
        return
    elif ((data is not None) and (ATTR_LOCATION in data)):
        service_data.update(data.get(ATTR_LOCATION))
        return self.hass.services.call(DOMAIN, 'send_location', service_data=service_data)
    elif ((data is not None) and (ATTR_DOCUMENT in data)):
        service_data.update(data.get(ATTR_DOCUMENT))
        return self.hass.services.call(DOMAIN, 'send_document', service_data=service_data)
    _LOGGER.debug('TELEGRAM    NOTIFIER    calling    %s.send_message    with    %s', DOMAIN, service_data)
    return self.hass.services.call(DOMAIN, 'send_message', service_data=service_data)
