Abgemeldeter Teilnehmer -> Anrufer mit Ansage informieren

Guard-X

Aktives Mitglied
Mitglied seit
14 Mai 2005
Beiträge
2,497
Punkte für Reaktionen
0
Punkte
36
Hallo,

wie kann ich folgendes Problem mit einer Ansage vernünftig abfangen:

Ruf kommt in einen Kontext rein, Teilnehmer ist gerade nicht am Asterisk angemeldet (z.B. Softphone). Es kommt Meldung "Unable to create channel of type SIP". Nach der Ansage (z.B. zur Zeit nicht erreichbar) soll mit der Zentrale "100" verbunden werden.

extensions.conf nach Schema (z.Zt. für alle Teilnehmer):

exten => xxx,1,Dial(SIP/xxx,60)
exten => xxx,2,Hangup

Danke im voraus...

mfg Guard-X
 
Ich hätte einen Vorschlag. eigentlich sogar zwei.

a) Testen vor dem Wählen mit "ChanIsAvail", ob es möglich ist, einen Channel zu erzeugen. Wenn ein, kann soll er eben die Zentrale anrufen. Man könnte allerdings auch ersteinmal wählen, und bei missglücktem Wählen (wobei ich mir grade nicht sicher bin, ob er in n +1 oder n+101 springt, wenn kein Channel aufgebaut werden konnte). Ich bin mir auchnicht sicher, ob ein Channel, der nicht aufgebaut werden kann, ein Indikator dafür ist, dass der Client nicht angemeldet ist. Daher möglichkeit b, die vielleicht etwas komplizierter erscheint.

b) Es gibt in der sip.conf eine einstellung "regcontext=" Wenn amn diese setzt (man muss natürlich einen Kontext benennen), dann sollte in dem Angegebnenen kontext eine extension mit der Priorität 1 für einen Klient erzeugt werden, wenn er angemeldet ist. Dieser wird dann mit "Noop" also Applikation aufgefüllt (also garnichts). Also z.B. so, für dien Client mit dem Namen "abc".

exten => abc,1,Noop

Was man dann nurnoch sleber machen muss , ist den rest der extensions aufzufüllen

exten => abc,2,Dial(SIP/abc,60)
exten => abc,3,Hangup

Wenn man eingehende Anrufe in diesen Kontext leitet, und der Client nicht angemeldet ist, existiert keine Extension mit der Priorität 1 für den anzurufenden Client, wenn er nicht angemeldet ist (da diese Extension ja dynamisch erstellt undzerstört wird, je nachdem ob der Client angemeldet ist, oder nicht). Was man dann nurnoch tun muss, ist eine s-Extension einzuführen (natürlich mit Priorität 1). Diese muss dann ja nurnoch auf die Zentrale verweisen.
 
Man könnte auch einfach den Teilnehmer anwählen und anhand der zurückgelieferten Variablen ${DIALSTATUS} verzweigen, was in den unterschiedlichen Fällen ( besetzt, nicht abgenommen, nicht verfügbar ) passieren soll.
 
betateilchen schrieb:
Man könnte auch einfach den Teilnehmer anwählen und anhand der zurückgelieferten Variablen ${DIALSTATUS} verzweigen, was in den unterschiedlichen Fällen ( besetzt, nicht abgenommen, nicht verfügbar ) passieren soll.


Jo, das war eine Möglichkeit die ich in dem unfertigen Satz zu Variante a eigentlich beschreiben wollte. Habe wohl den Rest des Satzes irgendwie vergessen.
 
Moin,

vielleicht so:
Code:
exten => xxx,1,Answer()
exten => xxx,2,ChanIsAvail(SIP/user1)
exten => xxx,3,Dial(SIP/user1)
exten => xxx,4,Hangup()
exten => xxx,103,playback(Sprachnachricht)
exten => xxx,104,Dial(SIP/100)
exten => xxx,105,Hangup()
 
Danke für die Vorschläge!

Jemand noch eine Idee für ein Macro? Ich wollte dies nicht bei allen 100 extensions eintragen!

mfg Guard-X
 
Wenn Du es so machen willst, wie lippisch das oben gemacht hat, und Du hast alle User durchnummeriert, dann brauchst Du das natürlich nur einmal zu schreiben. Da kannst Du dann ja ein Pattern für die Extension nehmen, und überall da, wo es nötig ist, ${EXTEN} nehmen anstelle von "user1".
 
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,520
Beiträge
2,293,412
Mitglieder
378,018
Neuestes Mitglied
lg300