aktives Gespräch heranholen (nicht PickUp)

derwurm

Neuer User
Mitglied seit
9 Aug 2010
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hi

Ich suche schon die ganze Zeit nach einer Lösung ein aktiven SIP Channel zu übernehmen/heranzuholen. Ähnlich PickupChan. Bei PickupChan wird ein klingelndes Telefon zu mir geholt. Ich will nun aber ein "sprechendes" Telefon heranholen/klauen.

Hintergrund:

Ich habe 3 Arbeitsplätze mit je einem SIP Telefon (GXP2010) und einem DECT Heasset (über eine VoIP DECT Basis mit 3 SIP Accounts).

Nun kann ich ja ein Transfer von meinem SIP Phone zum Headset machen: Ich telefoniere, drücke TRANSFER {NR VOM HEADSET} -> Headset klingelt und ich habe das Gespräch auf dem Headset.

Nun möchte ich das Gespräch von meinem Headset auch wieder auf das SIP Phone zurückholen können. Am Headset gibt es nur eine Taste zum auflegen.

Hat da jemand eine Idee???
 
Ich habe die Funktion gefunden: Steal()

war ja klar das * das schon etwas fertiges hat.

SIP/25 ist mein Headset
Wenn ich es anrufe klingelt es, klar.
Wenn ich damit schon telefoniere, kann ich es mit Steal an mein festes SIP Phone holen.

Jetzt werde ich noch etwas dazubasteln, damit auch nur jeder sein HeadSet "stehlen" kann. Aber das wird nicht so schwer.

Code:
exten => 25,1,ChanIsAvail(SIP/25|js)
exten => 25,2,Dial(SIP/25)
exten => 25,3,Hangup
exten => 25,102,StealChan(SIP/25)

So muss es aussehen wenn man sein Headset an sein SIP Phone holen möchte
SIP Phone = 12
Headset = 25

jeder andere soll das Headset natürlich normal anrufen können und ein Besetzt Signal bekommen wenn es gerade telefoniert

Code:
; Headset auf Telefon holen oder Headset anrufen
exten => 25,1,ChanIsAvail(SIP/25|js)
exten => 25,2,Dial(SIP/25)
exten => 25,3,Hangup
exten => 25,102,GotoIf($[${CALLERID(num)}=12]?steal:)
exten => 25,103,Busy()
exten => 25,104,Hangup()
exten => 25,105(steal),StealChan(SIP/25)
 
Zuletzt bearbeitet:
Hi derwurm,

klasse, das suche ich auch.
Wie rufe ich das auf?

Gruß und Dank

eg-sat
 
Was meinst Du mit aufrufen?

Du packst den obigen Teil in Deine extensions.conf

Wenn man dann die "25" wählt, klingelt das Headset mit der Nr 25.
Ist es besetzt, kommt ein besetzt, außer es ruft die 12 an, dann klaut die 12 das Gespäch vom Headset, und das Headset ist aufgelegt.
 
Hallo derwurm,

Danke für die Rückantwort.
Ist das eine "normale" Asterisk ? Oder brauch ich da irgendwelche Erweiterungen ?

Vor allem: ... war ja klar das * das schon etwas fertiges hat. ... aus deinem 2ten Post, ich galub das fehlt mir.

Kannst du mir nochmal Rückmeldung geben, bitte?
 
Asterisk aus Debian Quellen selber übersetzt

Hi

Ich habe ein "normales" * aus den Debian Sourcen selber übersetzt. Den Quellcode habe ich zwar leicht modifiziert, aber nur im SIP Channel. Dort haben wir bei unserem Provider einen Gebührenimpuls via SIP bekommen mit * nix anzufangen wusste, und legte dann auf. Der Gebührenimpuls wird nun abgefangen und ignoriert. Sonst ist alles original.

Was geht denn bei Dir nicht? Kennt er die Funktion gar nicht, oder kennt * die Funktion, aber funktioniert nicht?

Du brauchst auf jeden Fall das Modul "app_pickup.so" das natürlich auch geladen sein muss. Kannst Du in der CLI feststellen mit "module show like pickup". Dann sollte sowas wie "1 modules loaded" zurückkommen.

Ist bei Debian Lenny im Paket asterisk enthalten.

Gruß DerWurm
 
Zuletzt bearbeitet:
Seit dem BRIStuff fast überall aus der asterisk entfernt wurde, fehlte nun auch die Funktion SteaChan() um einem DECT Headset das Gespräch zu "klauen".

Habe nun endlich eine etwas hässliche Lösung gebastelt. SIP/20 ist hier das DECT Headset. Das kann man natürlich noch mit ${EXTEN:3} usw. verpacken. Aber ich habe nur ein Headset...
12345 ist die Nummer die den "Steal" auslöst.

Code:
exten => [B]12345[/B],1,Set(STEALCHAN=${SHELL(asterisk -rx "core show channel ${CHANNELS([B]SIP/20[/B])}" | grep BRIDGEPEER | tr -d '\n'):11})
exten => [B]12345[/B],n,GotoIf($["x${STEALCHAN}" = "x"]?umgehen)
exten => [B]12345[/B],n,Bridge(${STEALCHAN})
exten => [B]12345[/B],n(umgehen),Hangup
 
Code:
exten => [B]12345[/B],1,Set(STEALCHAN=${SHELL(asterisk -rx "core show channel ${CHANNELS([B]SIP/20[/B])}" | grep BRIDGEPEER | tr -d '\n'):11})
exten => [B]12345[/B],n,GotoIf($["x${STEALCHAN}" = "x"]?umgehen)
exten => [B]12345[/B],n,Bridge(${STEALCHAN})
exten => [B]12345[/B],n(umgehen),Hangup
Geht auch ohne Systemcall:
Code:
exten => 12345,1,Set(STEALSRC=SIP/4321)
exten => 12345,n,Set(STEALCHAN=${IMPORT(${CHANNELS(${STEALSRC})},BRIDGEPEER)}))
exten => 12345,n,ExecIf($["${STEALCHAN}" != ""]?Bridge(${STEALCHAN},x)
 
Zuletzt bearbeitet:
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.