(HowTo)hinterlassene Sprachnachrichten: via email + * voicemail

waldoo

Aktives Mitglied
Mitglied seit
28 Jan 2006
Beiträge
882
Punkte für Reaktionen
10
Punkte
18
Hallo @all,

asterisk auf der fritzbox ist eine super Erweiterung und bei mir stabil am laufen.
Ich bin auch total begeistert von der default extension von spblinux und co.
Habe meine aber natürlich ein wenig erweitert :)

Einen Teil dieser möchte ich nun mit euch teilen;
In der default extension werden hinterlassene Sprachnachrichten via email versandt. Das * voicemail modul wird nicht verwendet.
Mein Ziel war es nun, beides miteinander zu verbinden und was soll ich sagen?
Es ist mir gelungen :)

Wie bin ich vorgegangen:
- Einlesen und viel probieren
- root installation von * auf der box
- Verzeichnisse erstellen (für voicemail)
- Module geladen
- voicemail intern zum laufen gebracht

Ergebnis:
Eingehende Sprachnachrichten werden auf dem USB-stick gespeichert und via email versandt.
Gleichzeitig wird die eingegangene Nachricht in das Vocemailverzeichnis kopiert wodurch sie von jedem Telefon aus abgerufen werden kann.
Als addon werde ich auf meinem Handy noch mal 2 mal kurz angeklingelt, damit ich die neue Nachricht nicht verpasse :)


Eingehender Anruf auf die normale Rufnummer; der Sipteilnehmer wird gerufen; Anrufbeantworter geht ran;
Code:
exten => s,n,Dial(SIP/***|26|Ttm/bd)
exten => s,n,Goto(record,s,1)


Code:
[record]
exten => s,1,wait,0
exten => s,n,Playback(custom/abw_ansage)

exten => s,n,set,MSGFILENAME=work_${CALLERID(num)}-${STRFTIME(||%Y.%m.%d_%H%M%S)}
exten => s,n,set(MAILER_SUBJECT_work=Call recorded by Asterisk (freetz) for work ${CALLERID(num)} ${STRFTIME(||%Y-%m-%d_%H-%M-%S)})
exten => s,n,record(/var/spool/asterisk/${MSGFILENAME}.wav|0|60|wav)
exten => s,n,hangup

; Nachricht nach Hangup per e-mail versenden und löschen
exten => h,1,gotoif,${MSGFILENAME}?20:108
exten => h,20,system(mv /var/spool/asterisk/${MSGFILENAME}.WAV /var/spool/asterisk/${MSGFILENAME}.wav)
exten => h,n,gotoif,${MAILER_USER}?40
exten => h,n,system(mailer -s "${MAILER_SUBJECT_work}" -m "${MAILER_SMTP}" -f "${MAILER_FROM}" -t "${MAILER_TO_work}" -d /var/spool/asterisk/${MSGFILENAME}.wav)
exten => h,n,goto,45
exten => h,40,system(mailer -a "${MAILER_USER}" -w "${MAILER_PASSWORD}" -s "${MAILER_SUBJECT_work}" -m "${MAILER_SMTP}" -f "${MAILER_FROM}" -t "${MAILER_TO_work}" -d /var/spool/asterisk/${MSGFILENAME}.wav)
exten => h,n,goto,45

; Nachricht bei erfolgreichem Versand loeschen
exten => h,45,gotoif,$[${SYSTEMSTATUS} = SUCCESS]?46:108
exten => h,46,goto,49
exten => h,47,NoOp(Hanging up - no message to send)
exten => h,48,NoOp(eigentlich fertig work ABW)

;nachricht kopieren nach "/var/spool/asterisk/voicemail/msg0000.wav" // anlegen von msg0000.txt
exten => h,n,Set(MSGFILENAME1=msg0000)
exten => h,n,system(cp /var/spool/asterisk/${MSGFILENAME}.wav /var/spool/asterisk/voicemail/${MSGFILENAME1}.wav)

;Ich habe eine msgfilename.vorlage.txt erstellt, da es ohne probleme gegeben hatte
exten => h,n,system(cp /var/spool/asterisk/voicemail/msgfilename.vorlage.txt /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "origmailbox=9111111" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "context=isdn_work" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "macrocontext=" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "exten=s" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "callerchan=CAPI/ISDN1#01/111111-1" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "callerid=${CALLERID(NUM)}" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "origdate=${STRFTIME(${EPOCH},,"%Y-%m-%d %H:%M:%S")}" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "origtime=${EPOCH}" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "category=" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)
exten => h,n,system(echo -e "duration=66" >> /var/spool/asterisk/voicemail/${MSGFILENAME1}.txt)

;verschieb script ausführen, da der filename eindeutig sein muss und bei 0000 anfangen muss.
exten => h,n,System(/var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/msg.verschieb.sh)

;addon - mein Handy wird 2 mal kurz angerufen damit ich über neue Nachrichten informiert werde
exten => h,n,system(echo -e "Channel: CAPI/ISDN1/Handynummer" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "Callerid: 111111" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "Context: sips" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "Extension: 111111" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "MaxRetries: 1" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "RetryTime: 5" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "WaitTime: 9" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(echo -e "Priority: 1" >> /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt)
exten => h,n,system(mv /var/media/ftp/USBstick_ext/addons/asterisk14/spool/asterisk/voicemail/callfile.txt /var/spool/asterisk/outgoing/callfile.txt)
exten => h,108,NoOp(nichts hinterlassen)
exten => h,n,hangup



=> email ist verschickt und ich kann nun die nachricht via voicemal abhören


Anruf auf die AB-abfragerufnummer => weiterleitung auf mein internes menü
Code:
exten => _111112,1,Goto(menu,s,1)
exten => _111112,n,Goto(s-${DIALSTATUS},1)

enhaltenes Menü mit Passwortabfrage am Anfang; Ins voicemail kommt man dann bei drücken der 5.
Code:
[menu]
exten => h,1,Hangup
exten => s,1,Set(LOOPCOUNT=0)
exten => s,n,Set(__DIR-CONTEXT=)
exten => s,n,Answer
exten => s,n,Wait(0)
exten => s,n,Authenticate(123)
exten => s,n(begin),Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=6)
exten => s,n,Background(custom/menu)
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup

exten => 5,1,Goto(lokal,9111111,1)
exten => 5,n,hangup

exten => i,1,Playback(invalid)
exten => i,n,Goto(loop,1)
exten => t,1,Goto(loop,1)
exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1)
exten => loop,n,Goto(menu,s,begin)
; end of [menu]


unter lokal ist dann irgendwo das enthalen
Code:
;voicemail
exten => _9111111,1,Wait(1)
exten => _9111111,n,Answer()
exten => _9111111,n,VoiceMailMain(${EXTEN}@voicemail_box)
exten => _9111111,n,HangUp()

Ich habe mal alles auf irgendeine Rufnummer geändert. Hoffe es gibt nun aber keine Folgefehler

Na dann viel Spass damit :)
Ich hoffe es kann so jemand gebrauchen.

vg
waldoo
 

Anhänge

  • msgfilename.vorlage.txt
    32 Bytes · Aufrufe: 39
  • msg.verschieb.sh.txt
    325 Bytes · Aufrufe: 35
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.