PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/twilio_notify.py |
""" Module for notifications via Twilio .. versionadded:: 2014.7.0 :depends: - twilio python module :configuration: Configure this module by specifying the name of a configuration profile in the minion config, minion pillar, or master config (with :conf_master:`pillar_opts` set to True). .. warning: Setting pillar_opts to True in the master config may be considered unsafe as it copies the master config to pillar For example: .. code-block:: yaml my-twilio-account: twilio.account_sid: AC32a3c83990934481addd5ce1659f04d2 twilio.auth_token: mytoken """ import logging HAS_LIBS = False try: import twilio # Grab version, ensure elements are ints twilio_version = tuple(int(x) for x in twilio.__version_info__) TWILIO_LT_5 = False if twilio_version > (6,): from twilio.base.exceptions import TwilioRestException from twilio.rest import Client as TwilioRestClient elif twilio_version > (5,): # pylint: disable=no-name-in-module from twilio.rest import Client as TwilioRestClient from twilio.rest import TwilioException as TwilioRestException # pylint: enable=no-name-in-module else: TWILIO_LT_5 = True from twilio import TwilioRestException # pylint: disable=no-name-in-module from twilio.rest import TwilioRestClient # pylint: disable=no-name-in-module HAS_LIBS = True except ImportError: pass log = logging.getLogger(__name__) __virtualname__ = "twilio" def __virtual__(): """ Only load this module if twilio is installed on this minion. """ if HAS_LIBS: return __virtualname__ return ( False, "The twilio_notify execution module failed to load: the twilio python library" " is not installed.", ) def _get_twilio(profile): """ Return the twilio connection """ creds = __salt__["config.option"](profile) client = TwilioRestClient( creds.get("twilio.account_sid"), creds.get("twilio.auth_token"), ) return client def send_sms(profile, body, to, from_): """ Send an sms CLI Example: twilio.send_sms my-twilio-account 'Test sms' '+18019999999' '+18011111111' """ ret = {} ret["message"] = {} ret["message"]["sid"] = None client = _get_twilio(profile) try: if TWILIO_LT_5: message = client.sms.messages.create(body=body, to=to, from_=from_) else: message = client.messages.create(body=body, to=to, from_=from_) except TwilioRestException as exc: ret["_error"] = {} ret["_error"]["code"] = exc.code ret["_error"]["msg"] = exc.msg ret["_error"]["status"] = exc.status log.debug("Could not send sms. Error: %s", ret) return ret ret["message"] = {} ret["message"]["sid"] = message.sid ret["message"]["price"] = message.price ret["message"]["price_unit"] = message.price_unit ret["message"]["status"] = message.status ret["message"]["num_segments"] = message.num_segments ret["message"]["body"] = message.body ret["message"]["date_sent"] = str(message.date_sent) ret["message"]["date_created"] = str(message.date_created) log.info(ret) return ret