def cdr(self,num): """ Функция поиска по cdr базе в asterisk """ d = datetime.date.today() date_start = d.strftime("%Y-%m-%d %H:%M:%S") date_end = d.strftime("%Y-%m-%d 23:59:59") cursor = self.db_init().cursor() if (num[0:3] == self.PHONE_PREFIX): # Нужно если городские номера отправляются к VOIP провайдеру без кода города,иначе закоментировать num = num[3:] num9 = '9' + num cursor.execute("""SELECT src FROM cdr WHERE calldate>=(%s) AND calldate<=(%s) AND (dst=(%s) OR dst=(%s)) ORDER BY calldate DESC LIMIT 1""",( date_start, date_end, num, num9)) else: num = '8' + num num9 = '9' + num cursor.execute("""SELECT src FROM cdr WHERE calldate>=(%s) AND calldate<=(%s) AND (dst=(%s) OR dst=(%s)) ORDER BY calldate DESC LIMIT 1""",( date_start, date_end, num, num9)) if cursor.fetchone() != None: for row in cursor: x = row[0] else: x='none' self.db_init().close() return x if __name__ == '__main__': agi = AGI() number = agi.env["agi_callerid"] arr = cdrbase() subnumber = 'SIP/' + arr.cdr(number).encode('utf8') agi.set_variable('subnumber', subnumber) sys.exit(0)
x = row[0] y = row[1] z = row[2] h = row[3] y = datetime.date.today() - y if (x == 'none') and (y < datetime.timedelta(days=60)): # Проверяем номер в базе что постоянно не кидать зарпросы к web self.db_init().close() return num if (y > datetime.timedelta(days=60)) and (z == 1) and (x != 'none'): # Проверяем что дата не устарела для rosfirm x = self.rosfirm_write(num,1) # Запрос на обновление информации if (y > datetime.timedelta(days=60)) and (z == 0) and (x != 'none'): # Проверяем что дата не устарела для 2GIS x = self.write_togis(num,1) else: x = self.togis_write(num,0) # Записи в базу,определение номера через 2gis! if (x == 'none'): x = self.rosfirm_write(num,1) # Записи в базу,определение номера через rosfirm! if (x == 'none'): x = num # Возвращаем номер чтобы не приходило значение none self.db_init().close() if 'h' in locals(): c = h + " " + '"' + x + '"' else: return x if len(c) > 15: x = x else: x = c return x # Возвращаем наименование организации и префикс,но не более 15 символов для yealink T22 if __name__ == '__main__': agi = AGI() number = agi.env["agi_callerid"] app = calloutrec() name = app.main(number).encode('utf8') agi.set_variable('calleridname', name) sys.exit(0)
y = datetime.date.today() - y if (x == 'none') and (y < datetime.timedelta(days=60)): # Проверяем номер в базе, чтобы постоянно не кидать запросы к web self.db_init().close() return num if (y > datetime.timedelta(days=60)) and (z == 1) and (x != 'none'): # Проверяем что дата не устарела для rosfirm x = self.rosfirm_write(num,1) # Запрос на обновление информации if (y > datetime.timedelta(days=60)) and (z == 0) and (x != 'none'): # Проверяем что дата не устарела для 2GIS x = self.write_togis(num,1) else: x = self.togis_write(num,0) # Записи в базу,определение номера через 2gis! if (x == 'none'): x = self.rosfirm_write(num,1) # Записи в базу,определение номера через rosfirm! if (x == 'none'): x = num # Возвращаем номер чтобы не приходило значение none self.db_init().close() if 'h' in locals(): c = h + " " + '"' + x + '"' else: return x if len(c) > 15: x = x else: x = c return x # Возвращаем наименование организации и префикс,но не более 15 символов для yealink T22 if __name__ == '__main__': agi = AGI() number = agi.env["agi_callerid"] app = calloutrec() arr = cdrbase() name = app.main(number).encode('utf8') subnumber = 'SIP/' + arr.cdr(number).encode('utf8') agi.set_variable('calleridname', name) agi.set_variable('subnumber', subnumber) sys.exit(0)