hätte gern "Busy", wenn eines von zwei Geräten besetzt ist

schwerdy2

Neuer User
Mitglied seit
2 Feb 2006
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo Zusammen,

ich möchte zwei Telefone eines Mitarbeiters gleichzeitig klingeln lassen (Mobil und Station). Sobald ein Telefon besetzt ist, soll der Anrufer ein besetztzeichen hören. Dial gibt aber nur Busy zurück, wenn beide besetzt sind...

Hat jemand ne idee?
 
Du mußt vor dem Anwählen der beiden Extensions mit CHANISAVAIL() prüfen, ob beide Extensions frei sind. Wenn nicht, schickst Du den Anrufer ins "Busy" oder in die Mailbox.
 
Das vorgeschlagene CHANISAVAIL überprüft nur ob der SIP Peer registriert ist und nicht ob der SIP Peer gerade telefoniert.

Siehe:
Code:
ChanIsAvail is not a solution to tell you conclusively whether the channel is busy or not, it is primarily to tell you whether it would be possible to send a call there. Whether that call would end up being accepted or not is entirely up to the peer that we send the call to, and they could easily reject the call even though they do not appear to be 'busy'.
So: If you want to use ChanIsAvail to determine whether the SIP peer is known and registered, it will work fine. If you want to use it for limiting simultaneous calls to the peer, it will not work reliably for you.

lg Dani
 
Der Einwand ist natürlich berechtigt und richtig - ich war wohl noch etwas müde heute morgen. Ich muß aber heute abend mal zu Hause suchen - ich hatte sowas schonmal irgendwie gelöst - es gibt dafür jedenfalls einen Ansatz.
 
betateilchen schrieb:
Der Einwand ist natürlich berechtigt und richtig - ich war wohl noch etwas müde heute morgen.

**freu**

Mich würde der von dir erwähnte Ansatz auch interessieren, denn ich hab das Problem dass ich wenn eine Leitung belegt ist, das Gespräch auf die andere Leitung weiterleiten soll.
 
VOIPdani schrieb:
**freu**

Mich würde der von dir erwähnte Ansatz auch interessieren, denn ich hab das Problem dass ich wenn eine Leitung belegt ist, das Gespräch auf die andere Leitung weiterleiten soll.

Naja- Dein Problem ist aber leicht zu lösen:

Code:
exten _xyz,1,Dial,SIP/Apparat1|30|r
exten _xyz,2,Goto,r-${DIALSTATUS}|1

exten r-BUSY,1,Dial,SIP/Apparat2|30|r
exten r-BUSY,2,Hangup

exten r-ANSWER,1,Hangup
 
Zuletzt bearbeitet:
@betateilchen: Angenommen Apparat1 ist busy, ist es da nicht so dass der Anrufer 30 sek. warten muss bis der * merkt das Apparat1 belegt ist?
 
Nein, das Busy merkt der Asterisk sofort nach dem Dial, weil er eine SIP Message 486 zurückbekommt. Du mußt ja auch nicht 30 Sekunden auf ein Besetztzeichen warten, oder ;-)
 
Code:
exten => 8811,1,Dial,SIP/Apparat1|30|r
exten => 8811,2,Goto,r-${DIALSTATUS}|1

exten => r-BUSY,1,Dial,SIP/Apparat2|30|r
exten => r-BUSY,2,Hangup

exten => r-CHANUNAVAIL,1,Dial,SIP/Apparat2|30|r
exten => r-CHANUNAVAIL,2,Hangup

exten => r-ANSWER,1,Hangup

Ich hab den Code jetzt in folgender Umgebung getestet:
Testfall1: Apparat1 ist ein SJPhone, Apparat2 ist ein snom-Softphone
Apparat1 telefoniert, 2. Anruf geht trotzdem auf Apparat1 ein; Umleitung auf Apparat2 kommt erst nach dem ignorieren des 2. Anrufs zustande

Testfall2: Apparat1 ist ein snom-Softphone, Apparat2 ist ein SJPhone
Apparat1 telefoniert (sendet CHANUNAVAIL), 2. Anruf auf Apparat1 wird brav umgeleitet auf Apparat2

Das SJPhone lässt mehrer eingehende Anrufe zu....

@betateilchen: DANKE!

lg Dani
 
@betateilchen

was ist wenn SIP/Apparat2 telefoniert?
Dann klingelt SIP/Apparat1 dennoch
 
Wieso ? Ich wähle doch Apparat 2 nur dann an, wenn App1 besetzt ist. Es geht hier nicht um Parallelruf.
 
schwerdy2 schrieb:
ich möchte zwei Telefone eines Mitarbeiters gleichzeitig klingeln lassen (Mobil und Station). Sobald ein Telefon besetzt ist, soll der Anrufer ein besetztzeichen hören.

Ich deke es ist folgendes Szenario:

ankommendes Gespräch klingelt auf beiden Apparaten. Da der Mitarbeiter gerade unterwegs ist nimmt er es mit dem Mobilteil an (Apparat 2). Jetzt kommt noch ein Gespräch herrein - Mitarbeiter telefoniert aber noch. Jetzt sollte Besetzt signalisiert werden.
 
Ok - wir haben hier im Thread gerade 2 unterschiedliche Probleme behandelt. Die ursprüngliche Frage ist noch offen - da hast Du recht. Und das Szenario ist auch klar.

Was mein Codeschnipsel für VoIPDAni war für ein anderes Problem und hat mit der Eingangsfrage nix zu tun.

Bitte nicht durcheinanderbringen :!:
 
ich habe im #8 das ganze mal mit Gruppen getestet; Funktioniert auch soweit.

Das Problem von VOIPdani hatten wir in einem anderen Thread auch schon mal ausführlich besprochen
 
Huch, das hat ja eine heftige Diskussion ausgelöst...

Also meine Story: Nachdem ich auf voip-info.org gelesen hab, das CHANISAVAIL bei SIP Channels die Anmeldung prüft, hab ich's anders (etwas komplizierter) gelöst.

Bevor ein Anruf durchgestellt wird, schau ich nach, obs in der Datenbank einen Eintrag busy/${peer} gibt. In diesem Fall bekommt der Anrufer das Busy. Wenn der Eintrag nicht vorhanden ist, setz ich ihn, stell den Anruf durch und lösch' den Eintrag dannach wieder...

EDIT: Natürlich setzt ich busy/${peer} auch, wenn ich einen Anruf starte.
 
Moin!

Hat vielleicht noch jemand eine Idee, wie das Problem anders als mit der AstDB lösbar ist?

Würde mich nämlich auch sehr interessieren, da ich ein Telefon im Wohn- und eins im Arbeitszimmer habe, aber immer nur auf einem zur Zeit telefonieren möchte.
 
Mit "asterisk -r -c 'show channels'" kannst du dir die aktiven channels anzeigen lassen. Da außenrum kannst du dann ein AGI script bauen (meinetwegen IsBusy.sh), das prüft ob eine Nummer belegt ist.

Mit der Datenbank ist es zu Umständlich geworden, desswegen hab ich's auch so gelöst.
 
@schwerdy2

Könntest Du bitte kurz das AGI-Skript und einen Ausriss aus deiner extensions.conf posten? Das wäre klasse,

Danke!
 
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.