예제 #1
0
def beacon(config):
    """
    Emit a dict name "texts" whose value is a list
    of texts.

    .. code-block:: yaml

        beacons:
          twilio_txt_msg:
            - account_sid: "<account sid>"
            - auth_token: "<auth token>"
            - twilio_number: "+15555555555"
            - interval: 10

    """
    log.trace("twilio_txt_msg beacon starting")

    _config = {}
    list(map(_config.update, config))

    ret = []
    if not all([
            _config["account_sid"], _config["auth_token"],
            _config["twilio_number"]
    ]):
        return ret
    output = {}
    output['texts'] = []
    client = TwilioRestClient(_config['account_sid'], _config['auth_token'])
    messages = client.messages.list(to=_config['twilio_number'])
    num_messages = len(messages)
    log.trace('Num messages: %d', num_messages)
    if not num_messages:
        log.trace('Twilio beacon has no texts')
        return ret

    for message in messages:
        item = {}
        item["id"] = six.text_type(message.sid)
        item["body"] = six.text_type(message.body)
        item["from"] = six.text_type(message.from_)
        item["sent"] = six.text_type(message.date_sent)
        item["images"] = []

        if int(message.num_media):
            media = client.media(message.sid).list()
            if media:
                for pic in media:
                    item["images"].append(six.text_type(pic.uri))
        output["texts"].append(item)
        message.delete()
    ret.append(output)
    return ret
예제 #2
0
def beacon(config):
    '''
    Emit a dict name "texts" whose value is a list
    of texts.

    .. code-block:: yaml

        beacons:
          twilio_txt_msg:
            - account_sid: "<account sid>"
            - auth_token: "<auth token>"
            - twilio_number: "+15555555555"
            - interval: 10

    '''
    log.trace('twilio_txt_msg beacon starting')

    _config = {}
    list(map(_config.update, config))

    ret = []
    if not all([
            _config['account_sid'], _config['auth_token'],
            _config['twilio_number']
    ]):
        return ret
    output = {}
    output['texts'] = []
    client = TwilioRestClient(_config['account_sid'], _config['auth_token'])
    messages = client.messages.list(to=_config['twilio_number'])
    log.trace('Num messages: {0}'.format(len(messages)))
    if len(messages) < 1:
        log.trace('Twilio beacon has no texts')
        return ret

    for message in messages:
        item = {}
        item['id'] = str(message.sid)
        item['body'] = str(message.body)
        item['from'] = str(message.from_)
        item['sent'] = str(message.date_sent)
        item['images'] = []

        if int(message.num_media):
            media = client.media(message.sid).list()
            if len(media):
                for pic in media:
                    item['images'].append(str(pic.uri))
        output['texts'].append(item)
        message.delete()
    ret.append(output)
    return ret
예제 #3
0
def beacon(config):
    """
    Emit a dict name "texts" whose value is a list
    of texts.

    .. code-block:: yaml

        beacons:
          twilio_txt_msg:
            - account_sid: "<account sid>"
            - auth_token: "<auth token>"
            - twilio_number: "+15555555555"
            - interval: 10

    """
    log.trace("twilio_txt_msg beacon starting")

    config = salt.utils.beacons.list_to_dict(config)

    ret = []
    if not all(
        [config["account_sid"], config["auth_token"], config["twilio_number"]
         ]):
        return ret
    output = {}
    output["texts"] = []
    client = TwilioRestClient(config["account_sid"], config["auth_token"])
    messages = client.messages.list(to=config["twilio_number"])
    log.trace("Num messages: %d", len(messages))
    if not messages:
        log.trace("Twilio beacon has no texts")
        return ret

    for message in messages:
        item = {}
        item["id"] = str(message.sid)
        item["body"] = str(message.body)
        item["from"] = str(message.from_)
        item["sent"] = str(message.date_sent)
        item["images"] = []

        if int(message.num_media):
            media = client.media(message.sid).list()
            if media:
                for pic in media:
                    item["images"].append(str(pic.uri))
        output["texts"].append(item)
        message.delete()
    ret.append(output)
    return ret