Fix a bug where long sms messages get cut off (#34359)

* Fix a bug where long sms messages get cut off

* Clean up

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
pull/34400/head
Oscar Calvo 2020-04-18 13:26:22 -07:00 committed by GitHub
parent b78b705e32
commit a9bbc42981
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 8 deletions

View File

@ -34,14 +34,29 @@ class SMSNotificationService(BaseNotificationService):
def send_message(self, message="", **kwargs):
"""Send SMS message."""
# Prepare message data
# We tell that we want to use first SMSC number stored in phone
gammu_message = {
"Text": message,
"SMSC": {"Location": 1},
"Number": self.number,
smsinfo = {
"Class": -1,
"Unicode": False,
"Entries": [{"ID": "ConcatenatedTextLong", "Buffer": message}],
}
try:
self.gateway.SendSMS(gammu_message)
# Encode messages
encoded = gammu.EncodeSMS(smsinfo) # pylint: disable=no-member
except gammu.GSMError as exc: # pylint: disable=no-member
_LOGGER.error("Sending to %s failed: %s", self.number, exc)
_LOGGER.error("Encoding message %s failed: %s", message, exc)
return
# Send messages
for encoded_message in encoded:
# Prepare message data
gammu_message = {
"Text": encoded_message["Text"],
# We tell that we want to use first SMSC number stored in phone
"SMSC": {"Location": 1},
"Number": self.number,
}
try:
# Actually send the message
self.gateway.SendSMS(gammu_message)
except gammu.GSMError as exc: # pylint: disable=no-member
_LOGGER.error("Sending to %s failed: %s", self.number, exc)