Aktionsbedingung--Asterisk Expression $[${QUEUE_MEMBER

Hallo ich bin leider absoluter Anfänger, was die Asterisk Exressions angeht und wollte fragen ob es irgendwo ein EINFACHES Tutorial gibt, um einzusteigen…

Konkret gibt es folgendes Problem:
$[${QUEUE_MEMBER(“NameDesTeams”,free)} = 0]

Wenn ich diese Aktionsbedingung als Bedingung in einem Team wähle, um eine Ansage abzuspielen und danach ein Voicemail aufzuzeichnen funktioniert das erstmal. Die Bedingung ist offenbar erfüllt, wenn kein agent im Team angemeldet ist UND wenn alle angemeldeten agents bereits Gespräche führen.

Ich möchte aber folgendes erreichen:

  1. Ist kein agent im Team angemeldet, soll eine Ansage (Keine Geschäftszeit…) abgespielt werden.
  2. Ist mindestens ein agent im Team angemeldet und alle agents im Gespräch, soll eine andere Ansage abgespielt werden (Alle Mitarbeiter im Gespräch, bitte warten…)

Muss man dazu verstehen, wie diese Expressions funktionieren oder gibt es da eine einfache Lösung?

Vielen Dank für eine Antwort!

Hallo Steffen,

ein Tutorial kann ich leider nicht anbieten, aber hier gibts ein paar Infos mehr:

Folgendes sollte “keiner Frei aber mindestens einer eingeloggt” ensprechen:
${$["${QUEUE_MEMBER(“NameDesTeams”,free)}"=“0”]&$["${QUEUE_MEMBER(“NameDesTeams”,logged)}">“0”]}
Bitte aber erst testen, habe das nur schnell versucht zusammenzubauen. für den anderen Fall würde ich nur logged=0 prüfen.

Schöner wäre das aber in ein Script zu packen, das extern/vorher aufgerufen wird:

; set queue to check
exten => s,1,Set(CHECKQUEUE=NameDesTeams)
exten => s,n,Verbose(--> QUEUE CHECK FOR QUEUE ${CHECKQUEUE})
  
; queue check
exten => s,n,Set(QUEUEFREE=${QUEUE_MEMBER(${CHECKQUEUE},free)})
exten => s,n,Set(QUEUELOGGED=${QUEUE_MEMBER(${CHECKQUEUE},logged)})

;no agent logged on?
;exten => s,n,GoToIf($[ "${QUEUELOGGED}" = "0" ]?s-empty,1)

;no agent free?
exten => s,n,GoToIf($[ "${QUEUEFREE}" = "0" ]?s-noavailable,1)
  
; back to queue
exten => s,n,Return()
  
exten => s-noavailable,1,NoOp(kein Agent angemeldet)
exten => s-noavailable,n,Playback(keinerDaheim)
exten => s-noavailable,n,Return() 
 
exten => s-noavailable,1,NoOp(kein Agent frei)
exten => s-noavailable,n,Playback(keinerHatZeit)
exten => s-noavailable,n,Return()

Grüße,
Steve

Hallo, erstmal vielen hertlichen Dank!!!
Der erste Teil funktioniert perfekt:
Folgendes sollte “keiner Frei aber mindestens einer eingeloggt” ensprechen
${$["${QUEUE_MEMBER(“NameDesTeams”,free)}"=“0”]&$["${QUEUE_MEMBER(“NameDesTeams”,logged)}">“0”]}

Der Teil keiner eingeloggt (logged = 0) leider nicht, wenn ich das als Aktionsbedingung intern/vorher einsetze wird es immer ignoriert und es kommt der Fall “keiner Frei aber mindestens einer eingeloggt”

(wir testen zur Zeit noch intern, wir haben noch nicht auf die pascom umgestellt, nur mal paar Lizenzen gekauft zum “spielen”)

Ich habe mal eine grundsätzliche Frage, da wir die Komplexität offenbar unterschätzt haben…
Wir sind gerne bereit auch Support zu kaufen, da wir nicht endlos Zeit für die Telefonie haben.
Aber ich würde schon gerne auch wissen, um was es geht um die Telefonie dann selbst zu betreuen.
Die Pascom Doku für die grundlegenden Dinge der Einrichtung finde ich sehr sehr gut!!
Aber sobald es nur ein wenig “komplizierter” wird, finde ich nichts mehr.
Wir haben eigentlich sehr wenig Anforderungen an die Funktionalität (zb. eben 2 verschiedene Ansagen, je nachdem ob ein Agent im Team angemeldet ist).

Ich finde zum Beispiel nichts, weder auf der Pascom Doku oder im Netz, was die grundlegenden Unterschiede von den Scriptarten sind (Dialplan, Warteschlange, Lua Anruf Aktionsscript, Server Plugin Script).
Oder grundlegende Dinge, warum man ein Skript verwendet, wie es aufgebaut ist und wie man es einbindet.

Habt ihr eine Idee, wie man das erlernen kann oder bietet ihr auch Schulungen an (online, wir sind in Spanien)??

Viele Grüße Steffen

Hallo Steffen,

bezüglich Schulungen müsstest du bitte bei uns im Vertrieb anfragen. Dialplanskripte erlauben einfach asterisk skripte selbst zu schreiben, um einfach alle Möglichkeiten die der Asterisk zur Verfügung stellt auch nutzen zu können.
O’REILLY beispielsweise hat ein gutes Buch welches Asterisk im ganzen verarbeitet, hier ein paar Anlaufstellen, die jedoch eher als Nachschlagewerke dienen:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Command+Reference

Für die anderen Typen bin ich leider eher der falsche Ansprechpartner, im Groben dürfte aber folgendes richtig sein (bitte nagle mich nicht fest):
Warteschlange= (LUA?) Scripte die für eine Warteschlange genutzt werden können um eigene Auswahllogiken zu implementieren die über die Standard Asterisk Strategien hinausgehen (z.B. unser Skill based Routing)
Lua Anruf Aktionsscript= ermgöglichst LUA Skripte an anderen Stellen als der Warteschlange im Dialplan (um Dinge zu ermöglichen die über einfaches Asterisk scripting hinaus gehen)
Server Plugin Script= sollen primär eine Möglichkeit für unsere Entwickler darstellen, um individuelle Anpassungen (z.B. für das Flexpanel) so in der Anlage zu hinterlegen, so dass diese auch mit in die DB Sicherung wandern usw.

Bezüglich dem logged=0, du hattest hier schon $[${QUEUE_MEMBER(“NameDesTeams”,logged)} = 0] verwendet? Wenn die andere Ansage greift sollte ja automatisch mind. 1 Agent angemeldet sein.

Beste Grüße,
Steve