[Gelöst] Wie Gespräch weitervermitteln / übergeben?

PsychoMantis

Aktives Mitglied
Mitglied seit
18 Dez 2005
Beiträge
2,539
Punkte für Reaktionen
10
Punkte
38
Bezugnehmend auf diesen Post würde ich gerne folgendes realisieren:
Code:
1. Answer (channel 1 wird geöffnet). 
2. Anruf per SIP - die Gegenstelle geht ran und legt nach paar Sekunden auf.
3. Playback (bla,bla) (es soll kein Hangup kommen, obwohl die Gegenstelle ja eben aufgelegt hat)
4. Ein Anruf auf einem ganz anderen Channel kommt rein. 
5. Dieser Anruf wird mit dem noch geöffneten channel 1 verbunden.

Ist so was in Asterisk überhaupt realisierbar?

So. Habe mich etwas eingelesen. Realisierbar in Asterisk ist es. Mit Pickup oder mit Bridge.
Wenn ein Anruf rein kommt, kann man den mit Bridge(channel) an den ganz am Anfang geöffneten channel problemlos übergeben (wenn man den Namen des channels weiß).
Nur eine Sache verstehe ich nicht: wie sage ich der App. "bridge", dass der Anruf eben an diesen bestimmten channel übergeben werden soll und nicht an einen anderen?

Nachtrag: Das müsste mit ${CHANNEL} irgendwie gehen.

Nachtrag2: Habe es folgendermaßen realisiert: asterisl.tar.bz2 hier abgelegt und lade es mit der debug.cfg nach:
Code:
mkdir /tmp/asterisk
cd /tmp/asterisk
while !(ping -c 1 www.google.de); do sleep 5; done
wget http://home.arcor.de/asterisk16/asterisk.tar.bz2
bzip2 -dc asterisk.tar.bz2 | tar -x
rm asterisk.tar.bz2
cat > /var/tmp/asterisk/sip.conf << 'END-SIP-CONF'

;hier wird eigene sip.conf eingefügt
[general]
language=de
bindaddr=192.168.178.1
bindport=86543
canreinvite=no
allowguest=no
qualify=yes
localnet=192.168.178.0
register => 620:[email protected]/s

[620]
insecure=port,invite
type=peer
host=192.168.178.1
secret=geheim
defaultuser=620
user=620
fromuser=620
deny=0.0.0.0/0.0.0.0
permit=192.168.178.1

[test]			;fuer den Lockruf
insecure=port,invite
type=peer
host=meinvserver
secret=geheim
defaultuser=test
fromuser=test
qualify=100000
deny=0.0.0.0/0.0.0.0
permit=nurdereineserver

END-SIP-CONF


cat > /var/tmp/asterisk/extensions.conf << 'END-EXTENSIONS-CONF'

;hier kommt eigene extensions.conf rein
[general]
clearglobalvars=yes

[default]
exten => _0X.,1,Dial(SIP/handynummerdersimkarte*${EXTEN}@test,90,g) ; der Anruf ist nur als Lockruf
exten => _0X.,n,Wait(20) ; nach dem Absetzen des Lockrufs 20 Sekunden warten
exten => _0X.,n,Hangup

exten => s,1,NoOp(${CALLERID(all)}	: ${CHANNELS(test2)})
exten => s,n,ExecIf($[${CHANNELS(test2):8:7}=test2]?Bridge(${CHANNELS(test2)}):Dial(SIP/test2@test2))
exten => s,n,NoOp(${BRIDGERESULT})
exten => s,n,Hangup

END-EXTENSIONS-CONF

/tmp/asterisk/asterisk -C /tmp/asterisk/asterisk.conf

So funzt es wunderbar. Ein Anruf geht raus, den nimmt mein Vserver entgegen, weist ihn ab, macht ein callfile während der Asterisk-on-FBF auf einen eingehenden Anruf wartet und schließlich sobald der Anruf vom Vserver-Asterisk eingeht wird er mit dem wartenden channel verbunden. Für den normalen Benutzer sieht es aber so aus, als ob er ganz normal eine Nummer gewählt hat. In Wirklichkeit kommt hier ja callback zum Einsatz.
 
Zuletzt bearbeitet:
Ich war so frei und habe die, mittlerweile doch umfangreichere, Diskussion um die Anrufweiterschaltung hier hin verschoben.
 
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.