Hallo zusammen,
für ein Simulationslabor ich bin auf der Suche nach einer Lösung, um laufende Anrufe durch Anrufe mit höherer Priorität (z.B. gespielte Notrufe) verdrängen zu können. Es sind ein Asterisk-Server und etwa 20x Snom 300 und 2x Snom 320 vorhanden.
Zum Dialplan:
Es gibt einen "notruf"-Context, in dem gewisse SIP-Header gesetzt werden (eigener Klingelton für Snoms, automatische Anrufannahme nach 5 Sekunden und "Notruf" als Caller-Name). Das funktioniert auch alles. Lediglich wenn die Gegenstelle besetzt ist, wird der Anruf auch als besetzt abgewiesen. Dies soll im Notruf-Context nicht passieren und ein laufendes Gespräch (nur) zu der gewählten Gegenstelle beendet und das Notrufgespräch aufgebaut werden.
Gibt es in Asterisk eine Funktion zur Anrufpriorisierung bzw. -verdrängung? Da man bei den Suchbegriffen "Asterisk Anrufpriorisierung" nur mit Ergebnissen zu Extensions-Prioritäten überschüttet wird, beschleicht mich das ungute Gefühl, dass es eine solche Funktionalität wohl nicht gibt …
Meine alternative Herangehensweise sieht vor, den Status der angerufenen Gegenstelle zu überprüfen, bei einem laufenden Gespräch dieses über ein Skript zu beenden und das Notrufgespräch zu verbinden.
Das Auflegen eines laufenden Gesprächs funktioniert über folgendes Skript ganz gut:
Wie bekomme ich aber im Dialplan den Status der angerufenen Endstelle heraus und beende das Gespräch vor dem neuen Verbindungsaufbau? Dazu benötige ich aktuell auch die Identität, mit der die Gegenstelle eingeloggt ist.
Für Hinweise wäre ich sehr dankbar!
Anmerkung: Es handelt sich bei den angesprochenen Notrufen nur um gespielte Notrufe im Rahmen eines Seminars!
LG
JanNiklas
EDIT: Code in Code-Tags gesetzt
für ein Simulationslabor ich bin auf der Suche nach einer Lösung, um laufende Anrufe durch Anrufe mit höherer Priorität (z.B. gespielte Notrufe) verdrängen zu können. Es sind ein Asterisk-Server und etwa 20x Snom 300 und 2x Snom 320 vorhanden.
Zum Dialplan:
Es gibt einen "notruf"-Context, in dem gewisse SIP-Header gesetzt werden (eigener Klingelton für Snoms, automatische Anrufannahme nach 5 Sekunden und "Notruf" als Caller-Name). Das funktioniert auch alles. Lediglich wenn die Gegenstelle besetzt ist, wird der Anruf auch als besetzt abgewiesen. Dies soll im Notruf-Context nicht passieren und ein laufendes Gespräch (nur) zu der gewählten Gegenstelle beendet und das Notrufgespräch aufgebaut werden.
Gibt es in Asterisk eine Funktion zur Anrufpriorisierung bzw. -verdrängung? Da man bei den Suchbegriffen "Asterisk Anrufpriorisierung" nur mit Ergebnissen zu Extensions-Prioritäten überschüttet wird, beschleicht mich das ungute Gefühl, dass es eine solche Funktionalität wohl nicht gibt …
Meine alternative Herangehensweise sieht vor, den Status der angerufenen Gegenstelle zu überprüfen, bei einem laufenden Gespräch dieses über ein Skript zu beenden und das Notrufgespräch zu verbinden.
Das Auflegen eines laufenden Gesprächs funktioniert über folgendes Skript ganz gut:
Code:
NUMBER=$1
CHANNEL=$(/usr/sbin/asterisk -rx "core show channels concise" | grep "SIP/$NUMBER-" | cut -d'!' -f1)
if [ -n "$CHANNEL" ]
then
/usr/sbin/asterisk -rx "channel request hangup $CHANNEL"
fi
Wie bekomme ich aber im Dialplan den Status der angerufenen Endstelle heraus und beende das Gespräch vor dem neuen Verbindungsaufbau? Dazu benötige ich aktuell auch die Identität, mit der die Gegenstelle eingeloggt ist.
Für Hinweise wäre ich sehr dankbar!
Anmerkung: Es handelt sich bei den angesprochenen Notrufen nur um gespielte Notrufe im Rahmen eines Seminars!
LG
JanNiklas
EDIT: Code in Code-Tags gesetzt
Zuletzt bearbeitet: