Ejemplo n.º 1
0
def read_in():
    modems, device, info = list_devices()
    i=0
    for m in modems:
        modem = m['modem']
        sim   = m['sim']
        if not modem:
            continue
        texts = full_sms_list(modem, 'inbox')
        for t in texts:
            try:
                txt = t['txt'].encode('ascii', 'ignore')
            except UnicodeDecodeError: # MMS or OTA update
                txt = 'Can not decode MMS'
            sms = Sms(
                sim = sim,
                no  = safe_no(t['no']),
                txt = txt,
                at  = t['at'],
                typ = 'r'
            )
            sms.cat = get_cat(sms)
            sms.save()
            modem.sms_del(int(t['id']))
            i+=1
    if i:
        msg = 'Saved %d replies.' % i
        print(msg)
        return msg
Ejemplo n.º 2
0
    def get_messages(self, start=None, max=None):
        params = {'method':'inbox','username':self.get_username(),'password':self.get_password()}

        if start:
            params.update({'first': int(start)})

        if max:
            params.update({'max': int(max)})

        params = urlencode(params)
        response = requests.get(self.get_api_url(), params=params, verify=False)

        if not response.ok:
            if not self.fail_silently:
                raise Exception("Digicel get inbox sms response header returned status code of %d" % response.status_code)
            else:
                return False

        response_dom = minidom.parseString(response.content)
        response_status_code = int(response_dom.getElementsByTagName('status')[0].firstChild.data)
        if response_status_code != 0:
            if not self.fail_silently:
                raise Exception("Digicel Inbox response status code error %d: %s" % (response_status_code,
                    DIGICEL_RESPONSE_STATUS_CODES[response_status_code]))
            else:
                return False
        else:
            eastern = pytz.timezone('US/Eastern')
            records = response_dom.getElementsByTagName('record')
            records.reverse()
            for record in records:
                sent_date = datetime.datetime.strptime(
                    record.getElementsByTagName('datetime')[0].firstChild.data, '%d-%m-%Y %H:%M')
                loc_dt = eastern.localize(sent_date)
                try:
                    Sms.objects.get(
                        from_number=record.getElementsByTagName('tel')[0].firstChild.data,
                        to_number=settings.SMS_USERNAME,
                        message=record.getElementsByTagName('message')[0].firstChild.data,
                        sent_date=loc_dt,
                    )
                    break
                except Sms.DoesNotExist:
                    sms = Sms(
                        from_number=record.getElementsByTagName('tel')[0].firstChild.data,
                        to_number=settings.SMS_USERNAME,
                        message=record.getElementsByTagName('message')[0].firstChild.data,
                        sent_date=loc_dt,
                    )
                    sms.save()
            return True
Ejemplo n.º 3
0
 def get_messages(self, *args, **kwargs):
     if self.phone_number:
         kwargs.update({'to': self.phone_number})
     messages = self.connection.sms.messages.list(*args, **kwargs)
     for message in messages:
         try:
             Sms.objects.get(
                 from_number=message.from_,
                 to_number=message.to,
                 message=message.body,
                 sent_date=parser.parse(message.date_sent),
             )
             break
         except Sms.DoesNotExist:
             sms = Sms(
                 from_number=message.from_,
                 to_number=message.to,
                 message=message.body,
                 sent_date=parser.parse(message.date_sent),
             )
             sms.save()
     return True
Ejemplo n.º 4
0
def newsms(request):
    with open("/tmp/debug_1.json", "w") as f:
        f.write(json.dumps(request.POST))
    return HttpResponse(
        json.dumps({"payload": {
            "success": True,
            "error": None
        }}))
    s = Sms(from_num=request.POST["from"],
            message=request.POST["message"],
            message_id=request.POST["message_id"],
            sent_to=request.POST["sent_to"],
            secret=request.POST["secret"],
            device_id=request.POST["device_id"],
            sent_timestamp=request.POST["sent_timestamp"])
Ejemplo n.º 5
0
def send_one_text(modem, sim, txt, no, name=''):
    if name:
        txt = txt.replace("Hi,", "Hi %s," % name)
    sms = Sms(typ='s', sim=sim, txt=txt, no=no)
    if settings.TEXTING_RUN and modem:
        try:
            modem.sms_send(sms.no, sms.txt)
            sms.save()
            sleep(random.random())
            return no
        except humod.errors.AtCommandError as e:
            print('ERROR', e, no)
            sleep(1)
            return False
    elif settings.TEXTING_RUN:
        sms.save()  # save 1st, so pk is ready for status update
        gateway_api.send(sim, sms.no, sim.no, sms.txt, sms.pk)
        return no
Ejemplo n.º 6
0
def run():
    messages = client.messages.list()
    print(len(messages))
    for record in messages:
        sms = all_sms.filter(sid=record.sid).first()
        if not sms:
            print(record.sid)
            from_ = record.from_.split(':')
            from_num = from_[0] if len(from_) == 1 else from_[1]
            from_service = '' if len(from_) == 1 else from_[0]

            to_ = record.to.split(':')
            to_num = to_[0] if len(to_) == 1 else to_[1]
            to_service = '' if len(to_) == 1 else to_[0]

            new_sms = Sms()
            new_sms.sid = record.sid
            new_sms.message_to = to_num
            new_sms.to_service = to_service
            new_sms.message_from = from_num
            new_sms.from_service = from_service
            new_sms.account_sid = account_sid
            new_sms.direction = record.direction
            new_sms.status = record.status
            new_sms.error_message = record.error_message
            new_sms.error_code = record.error_code
            new_sms.body = record.body
            new_sms.url = record.uri
            new_sms.created = record.date_created
            new_sms.save()
            print(f"record created for {new_sms.sid}")