[Problem] Busy-Abfrage fehlerhaft / nicht möglich? (Asterisk als IP-Nebenstelle hinter Fritz!Box)

suedflughafen

Neuer User
Mitglied seit
3 Sep 2017
Beiträge
35
Punkte für Reaktionen
1
Punkte
8
Aufbau/Situation:
Fritz!Box 7490 mit 3 DECT-Telefonen (Fritz!Fon) und einer IP-Nebenstelle (für den Asterisk)
Telekom-Internet-Anschluss mit 2 Leitungen
Der Asterisk ist an der Fritz!Box angemeldet und bekommt alle eingehenden Anrufe sofort zugewiesen. Der/Die Anrufer haben damit die Möglichkeit zwischen 3 Abteilungen mittels Tastensignal (DTMF) zu wählen und werden daraufhin an das jeweilige DECT-Telefon an der Fritz!Box weitergeleitet/verbunden (**610, **611, **612). Bis hierher funktioniert alles einwandfrei und stabil.
Leider wird man aber auch "weitergeleitet/verbunden", wenn die gewünschte Nebenstelle telefoniert und fliegt damit mit einem Besetzt-Ton aus der Leitung. In der extensions.conf sieht die betreffende Stelle wie folgt aus:

Code:
exten => 1,1,Playback(auswahl1)
exten => 1,n,GoToIf($[ ${DEVICE_STATE(SIP/$**[email protected])} = BUSY ]?1,1:)
exten => 1,n,Dial(SIP/**[email protected])
Setzte ich die "1,1" nach dem Doppelpunkt, wird erwartungsgemäß die "auswahl1" in Schleife abgespielt.

Was mache ich falsch? Gibt es evtl. einen Syntax-Fehler oder ist eine derartige "Busy-Abfrage" evtl. überhaupt nicht möglich? Was sollte ich dann abfragen bzw. wie anders könnte ich den gewünschten Effekt erzielen?

Vielen Dank schon mal im Voraus für Ideen & Tipps ...
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
13,069
Punkte für Reaktionen
405
Punkte
83
Moinsen


Vermutlich musst du explizit auf einen String testen.
Dazu in Gänsefüßchen einfassen...
Code:
GoToIf($[ "${DEVICE_STATE(SIP/$**[email protected])}" = "BUSY" ]?1,1:)
...und testen.
Auch mal vorher das Ergebnis mit Verbose() oder NoOp() ausgeben lassen...
Code:
Verbose(1,"${DEVICE_STATE(SIP/$**[email protected])}")
Und eine Frage: Wofür ist das Dollarzeichen gut? - Hinter: SIP/
 

suedflughafen

Neuer User
Mitglied seit
3 Sep 2017
Beiträge
35
Punkte für Reaktionen
1
Punkte
8
Das mit den Gänsefüßchen hab ich auch schon überlegt aber noch nicht getestet. Viel "interessanter" dürfte aber tatsächlich das Dollarzeichen vor der Nebenstelle sein, das ich mir aktuell auch nicht erklären kann. :oops:
... werde in Kürze berichten.
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
13,069
Punkte für Reaktionen
405
Punkte
83
Teste auch mal, weil vor Audioausgabe der RTP Kanal stehen muss, als erste Priorität: Answer(250)
...schaden kann es jedenfalls nicht ;)
 

sonyKatze

Aktives Mitglied
Mitglied seit
6 Aug 2009
Beiträge
2,036
Punkte für Reaktionen
181
Punkte
63
Hat es inzwischen geklappt? Wenn nicht, hast Du dieses Regel-Werk irgendwo kopiert; von wo? Vielleicht erklärt das es dann. Mein Tipp: Gib zum Test den DEVICE_STATE z.B. über Verbose aus, bevor Du in vergleichst. Dann siehst Du auf dem Command-Line-Interface, ob Asterisk weiß, dass bereits BUSY vorliegt.

Was genau möchtest Du eigentlich erreichen, was soll passieren, wenn besetzt ist? Ich frage deswegen, weil nicht nur Asterisk sondern auch der User entscheiden kann, ob er gerade besetzt ist. Das nennt sich „Wegdrücken“ bzw. „Abweisen“. Diesen Zustand bzw. SIP-Status erhältst Du erst, nach dem Dial.