[Frage] Aktion/Application bei Anrufannahme und Ende ausführen

Mehlwurmdieb

Neuer User
Mitglied seit
5 Jul 2006
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich bin gerade dabei mir eine Türsprechanlage mittels Raspberry PI 2 und einer Fritz!Box 7390 zu basteln.
Funktioniert soweit auch schon gut.
Nach drücken der Türklingel wird ein Rundruf an die Nebenstelle **9 (Fritz!Box) ausgelöst. Wer zuerst annimmt hat den Anruf und kann mit der Person vor der Türe sprechen. Durch Drücken der Raute (#) Taste kann der Türöffner aktiviert werden.
Mich stört nun noch eine Sache:
Bis - wenn überhaupt - jemand den Anruf entgegennimmt hört der wartende vor der Türe natürlich das "Tuten" des Telefons wie bei einem normalen Anruf. Das ist zwar auf 30 Sekunden limitiert, besser fände ich es jedoch, wenn der Lautsprecher erst aktiviert wird, wenn wirklich jemand Abgehoben hat. Dafür bietet sich die System Application an. Entweder setze ich den Lautsprecher auf Stumm, oder falls das nicht geht Trenne ich die Stromzufuhr über ein Relais. Das wäre kein Problem.

Leider weiß ich jedoch nicht, wie ich diese Aktionen ausführen kann, wenn a) der Anruf angenomen wurde und b) der Anruf beendet wurde.

Vielleicht kann mir hier ja jemand helfen. Vielen Dank im voraus.

/etc/asterisk/extensions.conf
Code:
[globals]
FEATURES=opendoor

[default]
//Call-Extension zur Beantwortung und Ausführung des Türöffnerprogramms (s.u.)
exten => 624,1,Answer()
exten => 624,n,System(/home/pi/oeffnen.sh)
exten => 624,n,Playback(hello-world)  //Hello World
exten => 624,n,Hangup() 

//Call-Extension zur Wahl der Gewünschten Rufnummer beim Druck auf die Klingel
//Dabei wird der Call später von linphone ausgeführt, hierbei kommt es auf ",30" an. 
//damit wird die Anrufzeit auf 30 Sekunden limitiert, sodass, falls niemand zu Hause
//ist der Anruf irgendwann abgebrochen wird.
exten => 9,1,Set(DYNAMIC_FEATURES=opendoor)
exten => 9,n,Dial(SIP/**9@624,30)

/etc/asterisk/features.conf
Code:
[applicationmap]
opendoor => #,callee,System,/home/pi/oeffnen.sh
 
Moin

Richte in der Fritz!Box eine...
Türsprechanlage mit a/b Schnittstelle
...ein und lass den Klingelknopf einfach die 1 wählen.
 
Aktionen ausführen kann, wenn a) der Anruf angenomen wurde und b) der Anruf beendet wurde

Dafür gibt es das Flag U im Dial und die h-extension.

Wenn es nur darum geht, das Freizeichen zu unterdrücken, bastel Dir doch eine musiconhold Klasse aus der silence.gsm und verwende das Flag m im Dial.
 
Vielen Dank für die Antworten

@koyaanisqatsi
Kann ich leider nicht machen, da beide Analoganschlüsse meine Fritz!Box bereits verwendet werden (ich kann also nicht einmal Türsprechanlage mit a/b Schnittstelle dort anlegen).

@rentier-s
An das austauschen den Freizeichen Tons habe ich auch schon gedacht, war mir aber nicht sicher ob das geht (weil das Freizeichen eventuell vom Telefon selbst kommt).
Habe nun die musiconhold.conf wie folgt angepasst:
Code:
[default]
mode=files
directory=/dev/null
;directory=moh

Und bei DIAL einfach noch das m Flag gesetzt.
Code:
exten => 1,n,Dial(SIP/**1@624,30,m)

Da sich in /dev/null natürlich keine Sounds befinden hört man auch nichts. Silence.gsm wird also gar nicht benötigt.

Zum basteln einer eigenen Klasse (nosound) bin ich jedoch wohl zu blöd ;)
Egal, so funktioniert es. Beschäftige mich auch erst seit einer Woche mit Asterisk.

P.S.: Kann bei meinen 1. Post gar nicht den Betreff anpassen oder anderweitig auf gelöst setzen :gruebel:
 
Zuletzt bearbeitet:
/dev/null als Quelle ist natürlich auch eine Idee, da wär ich jetzt nicht drauf gekommen. Eine zusätzliche Klasse wäre aber schon gut, weil so hast Du jetzt beim Vermitteln etc. auch nur Stille. Einfach einen neuen [nosound] Block in der musiconhold.conf und in der extensions.conf vor dem Dial die Klasse mit Set(CHANNEL(musicclass)=nosound) setzen.

Du musst unter dem 1. Post auf Bearbeiten, dann Erweitert. Dort kannst Du das Prefix "gelöst" auswählen.
 
Ich habe es immer SetMusicOnHold(nosound) statt Set(CHANNEL(musicclass)=nosound) probiert.
Geht aber immer noch nicht:

/etc/asterisk/extensions.conf
Code:
exten => 1,1,Set(DYNAMIC_FEATURES=opendoor)
	same => n,Set(CHANNEL(musicclass)=nosound)
	same => n,Dial(SIP/**9@624,30,m(nosound))
	same => n,Hangup

(Habe auch Feature m ohne Parameter "(nosound)" getestet)

/etc/asterisk/musiconhold.conf (die letzten 3 Zeilen, der Rest ist default)
Code:
[nosound]
mode=files
directory=/dev/null

Noch eine Idee woran das liegen könnte?
Vermittelt oder sonstiges wird bei mir nicht. Es wird lediglich der Rundruf nach drücken der Klingel gestartet. Deshalb wäre es so auch nicht so schlimm.
 
Bis - wenn überhaupt - jemand den Anruf entgegennimmt hört der wartende vor der Türe natürlich das "Tuten" des Telefons wie bei einem normalen Anruf. Das ist zwar auf 30 Sekunden limitiert, besser fände ich es jedoch, wenn der Lautsprecher erst aktiviert wird, wenn wirklich jemand Abgehoben hat.

das habe ich bei mir dadurch geloest indem der Asterisk nach Betaetigen der Klingel erst per Callfile einen Rundruf an alle (inkl. Mobiltelefon) startet. Und nur wenn ueberhaupt irgendwer irgendwo abhebt, dann erst wird die Tuersprechstelle (DoorLine TS2 a/b) angerufen und letztlich die Verbindung hergestellt. Somit ertoent bei mir ebenfalls nichts unerwuenscht Hoerbares am Tuerlautsprecher.

Insofern verhaelt sich die Tuersprechstelle bei mir total passiv, da sie nie selbst anruft sondern bei Bedarf nur angerufen wird.

- sparkie
 
Zuletzt bearbeitet:
Um noch einmal zum anfänglichen Thema zurück zu kehren:

Ich habe nun auch einen weg Gefunden, ein Skript bei Anrufaufbau, Annahme und Ende auszuführen:

Code:
[macro-angenommen]
exten => s,1,System(echo 'Angenommen' > /tmp/angenommen.txt)

[default]
exten => 1,1,Set(DYNAMIC_FEATURES=opendoor)
	same => n,System(echo 'Hallo Welt' > /tmp/anfang.txt)
//M führt macro-angenommen bei Anrufannahme aus. m verwendet statt des Freizeichen die in musiconhold.conf definierte Musik(in diesem Fall Stille), g führt den Dialplan nach Auflegen fort
	same => n,Dial(SIP/**1@624,30,M(angenommen)mg) 
	same => n,System(echo 'Aufgelegt' > /tmp/Aufgelegt.txt)


Siehe hier und hier
 
Macro ist deprecated und sollte durch Subroutinen ersetzt werden, das wäre U statt M (siehe #3).

Das g funktioniert nur, wenn der Angerufene zuerst auflegt. Eine h-extension wäre imho der zuverlässigere Weg.

Und denk bitte daran
Du musst unter dem 1. Post auf Bearbeiten, dann Erweitert. Dort kannst Du das Prefix "gelöst" auswählen.
 
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.