@Hyperion: Ich glaube er meint ``if call_from in in_file.read()``, oder?BlackJack hat geschrieben:Und dann ginge auch der einfache ``in``-Test statt einer Schleife.
Edit: Meinte er doch nicht
@Hyperion: Ich glaube er meint ``if call_from in in_file.read()``, oder?BlackJack hat geschrieben:Und dann ginge auch der einfache ``in``-Test statt einer Schleife.
*seufz* Ich sollte dringend ins Bett gehenBlackJack hat geschrieben:@Hyperion: WTF!? Mal abgesehen vom einfacheren Test mit ``in`` klappt das schonmal so nicht weil die Zeilen in der Datei mit einem Zeilenende-Zeichen enden, also nicht gleich einer Telefonnummer ohne dieses sein werden. Und dann ist das Argument von `any()` viel zu umständlich. Eine "list comprehension" statt eines Generatorausdrucks, `readlines()` statt über das Dateiobjekt iterieren, literales `True` und angehängte ``if``-Bedingung statt *vorne* einfach *nur* die Bedingung. Also: ``any(call_from == line.strip() for line in in_file)``
Code: Alles auswählen
import capisuite,cs_helpers
my_path="/root/capisuite-examples/"
def callIncoming(call,service,call_from,call_to):
try:
if (call_to=="meineMSN"):
datei = open("/etc/capisuite/banned_caller.conf", "r")
x = datei.read().split()
print "es ruft", call_from
print x #zu testen was drinnesteht.
for zeile in x:
if zeile == str(call_from):
# filename=cs_helpers.uniqueName(my_path,"voice","la")
# capisuite.connect_voice(call,1)
# capisuite.audio_send(call,my_path+"announce.la")
# capisuite.audio_send(call,my_path+"beep.la")
# capisuite.audio_receive(call,filename,20,3)
# capisuite.disconnect(call)
print "treffer"
break
else:
print "nix"
datei.close()
else:
capisuite.reject(call,1)
except capisuite.CallGoneError:
capisuite.disconnect(call)
danach ist capiuite aus.fritzbox:~# capisuite -c /root/capisuite.conf
es ruftxxxxxxxxx
['12', '67', '13', '67', '76', '67553434634646346346', '67553434634646346346']
nix
nix
nix
nix
nix
nix
nix
Speicherzugriffsfehler
fritzbox:~# pidof capisuite
fritzbox:~#
Code: Alles auswählen
import capisuite,cs_helpers
my_path="/root/capisuite-examples/"
def callIncoming(call,service,call_from,call_to):
try:
if (call_to=="123456"): #<Hier die MSN (eigende nummer) eintragen
datei = open("/etc/capisuite/banned_caller.conf", "r")
x = datei.read().split()
# print "es ruft", call_from
print x #zu testen was drinnesteht.
for zeile in x:
if zeile == str(call_from):
filename=cs_helpers.uniqueName(my_path,"voice","la")
capisuite.connect_voice(call,1)
# capisuite.audio_send(call,my_path+"announce.la")
capisuite.audio_send(call,my_path+"beep.la")
capisuite.audio_receive(call,filename,20,3)
capisuite.disconnect(call)
break
datei.close()
else:
capisuite.reject(call,1)
except capisuite.CallGoneError:
capisuite.disconnect(call)
Insbesondere, da bei Telefonnummern fuehrende Nullen wichtig sind.BlackJack hat geschrieben:Mir stellt sich irgendwie die Frage, warum Du überhaupt eine Zahl verwendest. Du könntest die Telefonnummer auch gleich als Zeichenkette schreiben, denn letztendlich sind Telefonnummern auch keine Zahlen.