Also meine Lösung besteht aus drei Dateien (s. Attachment).
Die ersten Beiden gehören nach /usr/lib/python2.3/site-packages:
vdr.py vdr_call.py
Die nächste kommt nach /usr/lib/capisuite/
incoming.py
Aber Vorsicht: Ich hab noch meine eigene Rufnummern erkennung drin, sowie das PLugin um mir Anrufe gleich im VDR anzeigen zu lassen - ihr sollte also mein incoming.py bereinigen!
Was ich am geilsten finde, ist das die Ablaufsteuerung so genial einfach ist:
(selbst beweiräucher
Code
def vdr_call(call):
speak(call,"Willkommen beim Video Disk Rekorder Fon System")
vdri=vdr.vdrinterface()
if ( not vdri.connect() ):
speak(call,"Verbindung zum vdr fehlgeschlagen. Auf Wiederhören.")
capisuite.log("No VDR",1,call)
capisuite.disconnect(call)
return
speak(call,"drücken sie bitte")
(snr,sname)=get_sender(call)
if (snr == -1 ):
speak(call,"Kein Sender gewählt. Auf Wiederhören.")
capisuite.log("No sender chosen",1,call)
capisuite.disconnect(call)
vdri.close()
return
speak(call,"%s wurde als Sender gewählt" % (sname))
speak(call,"Bitte Startzeit eingeben")
start_time=capisuite.read_DTMF(call,10,0,4)
if (not start_time.isdigit() ):
speak(call,"Falsche Uhrzeit. Auf Wiederhören.")
capisuite.log("Wrong time %s" % (start_time),1,call)
capisuite.disconnect(call)
vdri.close()
return
hour=start_time[:2]
minute=start_time[2:]
speak(call,"Startzeit wurde auf %s Uhr %s festgelegt." % (hour,minute))
epg_data=get_epg_for(snr,int(hour),int(minute),vdri)
if ( epg_data.has_key("Title") ):
speak(call,"Es wird %s aufgenommen" % (epg_data["Title"]))
else:
speak(call,"Keine E P G Daten. Auf Wiederhören.")
capisuite.disconnect(call)
vdri.close()
return
speak(call,"Bitte bestätigen indem Sie dreimal Stern drücken")
dtmf_list=capisuite.read_DTMF(call,10,1,3)
if ( dtmf_list!="***" ):
speak(call,"Bestätigung nicht erfolgt - ich wiederhole - Bestätigung nicht erfolgt")
capisuite.disconnect(call)
vdri.close()
return
speak(call,"Bestätigung erfolgt - Einstellungen werden gespeichert")
#title,channel,starttime,duration_min
rtitle=epg_data["Title"]+" by Phone"
rduration=int(epg_data["Duration"]/60)
save_success=vdri.NewSingleTimer(rtitle, snr,epg_data["Start"],rduration)
if ( save_success ):
speak(call,"Teimer gespeichert. auf Wiederhören")
else:
speak(call,"Teimer nicht gepseichert - ich wiederhole - Teimer nicht gespeichert")
vdri.close()
capisuite.disconnect(call)
Alles anzeigen
Das einzige was noch fehlt ist die fehler behandlung wenn beim Speichern des Timer was schief geht...