Asterisk Howto's
Aus A-Enterprise
Inhaltsverzeichnis |
Asterisk Voicemail spool
Voicemail müssen nicht auf der PBX gespeichert bleiben! gleich nach dem speech gehen die vm per mail in die inbox des mail client und pbx users. Eigentlich sollte das Asterisk tun, mit der Option delete=yes
/etc/asterisk/voicemail.conf
delete=yes ; After notification, the voicemail is deleted from the server. [per-mailbox only]
; This is intended for use with users who wish to receive their voicemail ONLY by email.
Abhilfe schafft der script /bin/delvm, er löscht alle 5 min. voicemail in der vm-spool queue
#!/bin/bash # # build-in use crontab -e */5 * * * * /bin/delvm # Autor: Don.K at 6th Nov 2006, (C)2006 A Enterprise GmbH
# define here your context, mainly is default cx=default
vmbox=`asterisk -rx "show voicemail users" | grep $cx | awk '{print $2}'`
if [ -e /var/spool/asterisk/voicemail/$cx/$vmbox/INBOX/msg0000.wav ]; then rm /var/spool/asterisk/voicemail/$cx/$vmbox/INBOX/* else exit 0 fi
Anrufe übernehmen (call pickup)
Um einen Anruf auf einem anderen Telefon übernehmen zu können, muss als erstes in der Konfiguration features.conf die pickup extension eingetragen werden.
pickupexten = *8
Nun können wir die extension die call pickup ausführen soll mit der Option callgroup und pickupgroup und dem Wert der für die Gruppe die Anrufe übernehmen soll im sip.conf für das entsprechende Telefon Eintragen.
[GXP2000] type = friend username = 201 secret = 1234 context = default dtmfmode = rfc2833 callgroup = 2 pickupgroup = 2 disallow = all allow=ulaw allow=alaw allow=g723.1 allow=g729
Feature Application
Eine Feature Application wird meist dort benötigt wo es keine entsprchende Taste auf dem Telefon gibt. Beispielsweise für Call Transfer bei dem Gigaset 450C oder öfters mit anderen DECT Telefone ohne Transfer (TRNF) Taste.
features.conf
[general]
#include parking_additional.inc #include features_general_custom.conf
featuredigittimeout => 1000 ; Max time (ms) between digits for
[applicationmap]
#include features_applicationmap_additional.conf
[featuremap]
blindxfer => ## ; Blind Transfer atxfer => ** ; Attended Xfer automon => *1 ; One Touch Record
Wahlwiederholung auf der Asterisk PBX
Hat man ein Telefon welches keine Wahlwiederholung bietet, lässt sich auf der PBX in extensions.conf dies ermöglichen, mit dem Shortcut *5 lässt man wie hier die letzte Nummer wieder wählen
[default] include => macro-recall
exten => _X.,1,Macro(recall,${EXTEN}) exten => *5,1,DBget(toCall=redial/${CALLERID}) exten => *5,2,Macro(recall,${toCall}) exten => *5,102,Hangup()
[macro-recall] exten => s,1,DBput(redial/${CALLERID}=${ARG1}) exten => s,1,Dial(SIP/${ARG1},20) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Voicemail(u${ARG1}) exten => s-BUSY,1,Voicemail(b${ARG1}) exten => _s-.,1,Goto(s-NOANSWER,1)
Asterisk GSM Soundformat
Hertellen eines Kompatiblen Soundformat für Asterisk mit SOX. Unter Windows erzeugte wave Dateien können von Asterisk nicht verarbeitet und gelesen werden, hierzu können die sound files mit sox konvertiert werden. Umwandeln von .wav in das gsm format mit sox
sox foo.wav -r 8000 -c1 foo.gsm resample -ql
Die konvertierten gsm sound files nach /var/lib/asterisk/sounds/custom kopieren. Um für Asterisk kompatible wave formate zu konvertieren gibt es die Befehle
~# sox wav_file.wav gsm_file.gsm ~# sox gsm_file.gsm wav_file.wav ~# sox unnow_wav_file.wav asterisk_wav_file.wav
Asterisk weiterleitung programmieren
- Der Dialplan für Call Forwarding
Weiterleitung aktivieren mit *72*nnnnnnn#, wobei n für die Nummer steht zu dieser die Anrufe weitergeleitet werden sollen.
In der Konfigurationsdatei extensions.conf eintragen.
;; call forwarding aktivieren
exten => _*72*.,1,Answer()
exten => _*72*.,2,Set(DB(CFI/${CALLERID(NUM)})=${EXTEN:4})
exten => _*72*.,n,Playback(vm-saved)
exten => _*72*.,n,SayDigits(${EXTEN:4})
exten => _*72*.,n,Hangup()
Mit der #73# wird die weiterleitung ausgeschaltet.
;; call forwarding deaktivieren
exten => #73#,1,Answer()
exten => #73#,n,DBdel(CFI/${CALLERID(num)})
exten => #73#,n,Playback(call-fwd-cancelled)
exten => #73#,n,Hangup()
Als erster befehl soll das macro callforwarding ausgeführt werden, wie hier für die extension 200
[200]
exten => 200,1,Macro,callforwarding|${EXTEN}
exten => 200,n,Dial(SIP/202,30,mt)
exten => 200,n,Hangup()
Hierzu wir das macro benötigt welches für die entsprechenden extensions gilt, der macro Eintrag muss oberhalb des [default] Kontext stehen, und unterhalb der Sektion [general]
[macro-callforwarding]
exten => s,1,Set(temp=${DB(CFI/${ARG1})})
exten => s,n,GotoIf(${temp}?cfi:nocfi)
exten => s,n(cfi),Dial(SIP/${temp})
exten => s,n(nocfi),NoOp
Asterisk Ringtone identification
- Asterisk macro using ringtone identification
In Unternehmen ist es sinnvoll die Unterscheidung von einem internen und einem externen Anruf erkennen zu können.
Hier bietet sich folgendes Macro an, welches in die Konfigurations-Datei extensions.conf eingetragen wird, bei FreePBX ist dies die Datei extensions_custom.conf.
Hier können nun beliebige weitere Macros Programmiert werden.
In diesem Beispiel also das SIPAddHeader Macro, dies gilt hier für "global', bei allen externen Anrufe ertönt nun ein anderer Ton, gleichzeit erzeugt der erste Befehl eine zusätzliche 0, um Automatisch die richtige Nummer beim extern wählen zu erhalten.
[macro-exten_did_prefix]
exten => s,1,Set(CALLERID(num)=0${CALLERID(num)}) exten => s,1,Set(CALLERID(num)=${CALLERID(num)}) exten => s,n,SIPAddHeader("Alert-Info: <http://127.0.0.1>\;info=alert-external\;x-line-id=0;")

