[Frage] Asterisk konfigurieren bei Anruf auf DTMF überwachen und bei erkennung script start

sunnyboy1988

Neuer User
Mitglied seit
13 Dez 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

Ich kenne mich zwar ein bisschen mit Asterisk aus, aber leider noch nicht so gut... Könnte mir jemand vielleicht eine sample config für Asterisk posten für folgende Situation (hat doch sicher schon mal jemand gemacht):

Mein Projekt ist eine Art "Türsprechstelle mit Türöffner". Ich habe eine Extention in Asterisk mit der ID (z.B. 1000). Nun möchte ich wenn diese Extention eine Nummer anruft, dass Asterisk das Gespräch auf DTMF "belauscht" und falls der DTMF code (z.B. #1234) erkannt wird, dass dann ein Script (z.B. ~/tueroeffner) ausgeführt wird. Asterisk sollte aber nur auf ein DTMF Signal von dem Angerufenen - falls möglich - reagieren (Sicherheit).

Ich habe schon etwas herausgefunden: es müsste wohl in features.conf eingestellt werden...

Vielen Dank schon mal für all die, die mir mit meinem Problem / Projekt weiterhelfen können =)

PS: falls ich diese Projekt hinbekommen sollte schreibe ich natürlich ein How-To wie ich es realisiert habe für den Fall das jemand anderes dies auch mal probieren möchte =)
 
Zuletzt bearbeitet:
Hallo,

so ähnlich sieht es bei mir aus:
Ich habe versucht, es auf das Nötigste zu kürzen und anzupassen und hoffe, dass ich nicht zu viel gelöscht habe. Bei mir gibt es auch drei verschiedene Türen, die mit verschiedenen Codes an verschiedenen Türtelefonen geöffnet werden.
Es gibt zwei verschiedene Codes, die in dem Fall aber das selbe Relais auslösen. So kann man leicht Codes für Gäste anpassen.
Das Telefon befindet sich an einem ATA, der beim Abnehmen des Hörers eine bestimmte Rufnummer wählt, falls kein Code eigegeben wird, diese Rufe landen dann bei (tueröffner,s,1).

Code:
[tueroeffner]
exten => s,1,Set(NR=)
exten => s,n,Background(transfer)
exten => s,n,Set(TIMEOUT(response)=0.5)
exten => s,n,Background(beep)
exten => s,n,Set(TIMEOUT(response)=0.5)
exten => s,n,Goto(#,1)
exten => s,n,Hangup()

exten => _X,1,Set(NR=${NR}${EXTEN})
exten => _X,2,Goto(s,4)

exten => i,1,Playback(auth-incorrect)
; Zuruecksetzen
exten => *,1,Goto(s,1)
; Nummer uebergeben
exten => #,1,GotoIf($[ ${NR} = 123456 ]?7:2)
exten => #,2,GotoIf($[ ${NR} = 654321 ]?7:10)

exten => #,7,System(/opt/etc/asterisk/relay1.sh &)
exten => #,8,System(/opt/bin/mutt -s "Tuer mit Code ${IF( $[ ${NR} = 654321 ] ? B : A)} geoeffnet" meine@mail &)
exten => #,9,Hangup()
exten => #,10,Dial(SIP/771&...,55,t)
exten => #,11,Goto(record,s,1)
exten => #,12,Hangup()

Wenn man mit dem Teilnehmer an der Tür spricht, kann man ihn z. B. mit #1# reinlassen:
Code:
exten => 1,1,System(/opt/etc/asterisk/relay1.sh &)
exten => 1,2,Hangup()
In einem lokalen Kontext.
 
Zuletzt bearbeitet:
Wie/wo hast du eingestellt, dass die Tür ausgerechnet mit #1# geöffnet wird?
 
Moinsen


Ja, genau :D
Ick würde drauf wetten, dass der erlaubte Peer nur die Barke ( # ) tippen muss.
...die 1# wird knallhart ignoriert.

PS: So einen Achterbahn Dialplan sieht man nicht oft ;)
PPS: Ick hätte das mit Read() versucht, damit lässt sich auch eine PIN-Abfrage konstruieren

Übrigens...
Hangup() nach einem Goto() wird niemals ausgeführt, denn ein Goto() kehrt nicht zurück.
...anders siehts bei Gosub() aus ;)
 
Zuletzt bearbeitet:
Irgendwas muss man noch in features.conf einstellen und den Dial-Befehl in extensions.conf mit dem Parameter "t" aufrufen. Aber wie das genau geht...das muss ich noch rausfinden.

Nachtrag: Habe es rausgefunden. Ist ja total simpel (aber erst wenn man es weiß).
In die extensions.conf kommt vor dem Dial-Befehl noch ein Set:
Code:
exten => 0174xxxxxxxx,1,Set(__DYNAMIC_FEATURES=test)
exten => 0174xxxxxxxx,2,Dial(SIP/0174xxxxxxxx@provider,,t)
Und meine /etc/asterisk/features.conf schaut gerade so aus:
Code:
[general]

[featuremap]

[applicationmap]
test => 1234,peer/callee,System(sudo /usr/local/bin/opendoor.py)
 
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.