[Gelöst] Asterisk Anruf beenden ohne "tut tut tut"

alex0801

Neuer User
Mitglied seit
12 Jul 2006
Beiträge
100
Punkte für Reaktionen
2
Punkte
18
Sorry für die Überschrift, aber ich kanns grad in der kürze nicht besser Beschreiben.

Hier die lange Version:

Ich habe eine SIP fähige Sprachanlage vor der Haustür. Drückt jemand auf den Klingeltaster, so wird "drinnen angerufen".

Oftmals ist aber der Weg zur Tür kürzer als zum Telefon, weswegen ich, gesteuert über einen Türkontakt den Anruf forciert beende. Dazu überwache ich den Türkontakt und triggere per Shellscript dann ggf. ein

Code:
#!/bin/sh
NUMBER=1000
CHANNEL=`/usr/sbin/asterisk -rx "core show channels" | grep "SIP/$NUMBER-" | grep "Ring" | cut -f1 -d" "` 
if [ -n "$CHANNEL" ]
then
	echo "Will hangug ringing channel '$CHANNEL'"
	/usr/sbin/asterisk -rx "channel request hangup $CHANNEL"
else
	echo "Channel with number $NUMBER is not ringing. No hangup required."
fi

Wobei NUMBER=1000 die interne Rufnummer der SIP-Türklingel ist.

Das funktioniert auch. Es hört drinnen spontan auf zu klingeln. Aber vor der Haustüre kommt noch ein "tuut, tuut, tuut" als Quittungston dass der Anruf abgebrochen wurde.

Das ist irgendwie nervig und der der vor der Tür steht wunder sich immer. Ich kann aber die SIP-Klingel auch nicht passend umkonfigurieren so dass der Quittungston nicht mehr kommt. Ich muss das also über Asterisk lösen.


Ich stochere aktuell noch im dunkeln. Die Frage die sich mir stellt ist: Kann ich per Kommandozeile den Anruf so beenden, dass die SIP-Türklingel mein sie hätte mit dem Anruf Erfolg gehabt und der Anruf wurde sauber beendet?

Also quasi ein gescriptetes "Anruf entgegen nehmen und sofort geordnet beenden", aber eben ohne Beteiligung des angerufenen Endgeräts?

Nur so ein Gedanke: Gespräch ad-hoc auf einen Dummy-Teilnehmer der von Asterisk kontrolliert werden kann umleiten, per script abnehmen und gleich auflegen... sowas in der Art.

Any ideas?

Gruß
Alex
 
Es gibt viele Weg das zu realisieren. Der Schnellste wäre, dein Script auf von "channel request hangup" auf "channel redirect" abzuändern, und auf einen Kontext im im Dialplan zu lenken, welcher dann dein gewünschtest "Anruf entgegen nehmen und sofort geordnet beenden" ausführt
 
Danke, das war's:

Code:
#!/bin/sh
NUMBER=1000
CHANNEL=`/usr/sbin/asterisk -rx "core show channels" | grep "SIP/$NUMBER-" | grep "Ring" | cut -f1 -d" "`
if [ -n "$CHANNEL" ]
then
        echo "Will hangug ringing channel '$CHANNEL'"
#       /usr/sbin/asterisk -rx "channel request hangup $CHANNEL"
        /usr/sbin/asterisk -rx "channel redirect $CHANNEL intern,9999,1"
else
        echo "Channel with number $NUMBER is not ringing. No hangup required."
fi

Und in der extensions.ael:

Code:
context intern {

// hier stehen die ganzen Extensions eh schon drin... z.B:
    1003 => {
        Dial(SIP/1003);
    }


// und die neue Extension:
    9999 => {
        Answer();
        Hangup();
    }

}

Funktioniert prima. Danke vielmals für den Tipp.
 
Hat die IP-Klingel auch ein Web-Interface ?

Wenn Ja, such mal nach "PSTN disconnect tone" (oder so ähnlich), und lösche den Wert der in der Zeile dahinter drin steht ;)
 
Ja hat sie und nein, das gibts nicht und kann man auch nicht konfigurieren. Über asterisk klappts prima.
 
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.