示例#1
0
	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)

示例#2
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)