2017-02-15 3 views
0

Ich muss eine gleichzeitige Anrufbeschränkung von eingehenden Anrufen für jede Erweiterungen festlegen, aber nicht sehr gut gehen.Asterisk 13.7 GROUP_COUNT gibt immer 1

Die Mindestanforderung besteht eigentlich darin, zu verhindern, dass mehrere Anrufe dieselbe Nebenstelle anrufen. Dies sollte in den "RingInUse" -Einstellungen geschehen, aber es gibt einen Fehler in Asterisk, wenn mehrere Anrufe der Warteschlange beigetreten sind, könnte es die RingInUse-Regel brechen und die sprechende/klingelnde Nebenstelle anrufen.

Ich konnte Call-Limit = 1 in Asterisk 1.6 setzen, aber in Asterisk 13.7 scheint es keinen Effekt (oder abgeschrieben). Also muss ich mir eine andere Lösung einfallen lassen.

Einige Beiträge in Foren sagt GROUP und GROUP_COUNT ist eine perfekte Lösung für neuere Asterisk-Versionen. Dann fand ich viele Beispiele, die GROUP und GROUP_COUNT verwenden, aber die meisten von ihnen sind Trunk-basierte oder Outbound-Anrufe. Aber der Post erwähnt eingehende Anrufe sind auch Arbeit, also habe ich es in der Warteschlange Abschnitt meiner extensions.conf implementiert.

[only-dialextension-q6701] 
exten = _.,1,Gotoif(${DB(DND/${EXTEN})}>0?h,1) 
exten = _.,2,Set(ODETIME=30) 
exten = _.,n,Set(GROUP()=Exceed_${EXTEN}) 
exten = _.,n,Gotoif($[${GROUP_COUNT(Exceed_${EXTEN})}>1]?h) 
exten = _.,n,Goto(only-dialextension,${EXTEN},1) 
exten = h,1,Hangup() 

Ausgabe

I asterisk -vvvvvvvvvvr und die Ausgabe wurde überwacht. Wenn der erste Aufruf kommt, gibt es 0 (In boolean bedeutet das falsch). Das ist richtig, weil 1 nicht größer als 1 ist, dann ist es in Ordnung. Aber der zweite Anruf kommt, es gibt immer noch 0 zurück, weil die Zählung immer noch 1, aber nicht 2 ist.

Ich war sehr frustriert mit diesem Ergebnis, weil das weitere eingehende Anrufe aus der Warteschlange nicht stoppen wird, um den gleichen Agenten anzurufen.


gerade erwähnte ich oben, da ein möglicher Fehler in Asterisk ist „Ring In Use“ zu brechen und den gleichen Agenten klingelt, wenn der Zeitpunkt der beiden eingehenden Anrufe zu nahe beieinander liegen. Also muss ich den "Ring In Use" überschreiben (obwohl ich ihn bereits ausgeschaltet habe, um eine bessere Fehlertoleranz zu erreichen).


Update 1 in 2017-0216 02.49 GMT

[only-dialextension-q6701] 
exten = _.,1,Gotoif(${DB(DND/${EXTEN})}>0?h,1) 
exten = _.,2,Set(ODETIME=30) 
exten = _.,n,Gotoif($[${GROUP_COUNT(Exceed_${EXTEN})}>0]?callHangup:callQueueAgent) 
exten = _.,n(callHangup),Hangup() 
exten = _.,n(callHangup),Goto(always-Hangup,h,1) 
exten = _.,n(callQueueAgent),Set(GROUP()=Exceed_${EXTEN}) 
exten = _.,n(callQueueAgent),Goto(only-dialextension,${EXTEN},1) 
exten = h,1,Hangup() 

ich die GROUP_COUNT um es einfacher zu machen, haben sich geändert> 0 zu fangen, aber fehlgeschlagen.

+0

Ich hatte dieses Problem, aber konnte den Grund nicht finden. https://issues.asterisk.org/jira/browse/ASTERISK-26496 –

Antwort

0

Es gibt keinen solchen Fehler in Stern 13.14 sicher. Kein Sinnes-Test, der auf veraltete (mehr als 2 Jahre) Version.

Vielleicht sollten Sie Dialplan so etwas ersetzen (Leerzeichen sind auch wichtig).

exten => _.,n,Noop(current count is ${GROUP_COUNT(Exceed_${EXTEN})}) 
exten => _.,n,Gotoif($[ "${GROUP_COUNT(Exceed_${EXTEN})}" = "1" ]?only-dialextension,${EXTEN},1) 
exten => _.,n,Hangup