Jump to content

Tom Wellige

Root Moderator
  • Posts

    4,309
  • Joined

  • Last visited

  • Days Won

    117

 Content Type 

Profiles

SwyxPEDIA Wiki

Zendesk Integration

Persistent Variables

Longest Waiting

VBScript build in functions

GSE build in functions (VBScript)

Server Script API (VBScript)

GSE build in functions (Lua)

Server Script API (Lua)

Function Collection (VBScript)

Function Collection (Lua)

IPS Integration

Jira Service Integration

Forums

Blogs

Downloads

Everything posted by Tom Wellige

  1. Der BCT mit automatischen zurück holen des Rufes geht meines Wissens nach nur von einem SwyxIt Client aus.
  2. Wenn Du einen Ruf per "Blind Call Transfer" übergibst, also z.B. einfach die Leitungstaste des aktuellen Rufs auf die Namentaste des Ziels ziehen, dann kommt der Ruf automatisch wieder zurück. Ich glaube der Timeout an der Stelle ist 20 oder 30 Sekunden.
  3. Hallo Fredy, wenn Du die beiden Dateien rulePreProcessing.rse und rulePreProcessing.vbs in den USER Scope eines Benutzers lädst, dann gelten sie nur für diesen einen Benutzer. Wenn Du sie in den GLOBAL Scope lädst, dann gelten sie für alle Benutzer. Was sich in den Dateien befindet, die sich dort bereits befinden kann ich Dir auch nicht sagen. Du kannst sie Dir aber ja mal von dort herunter- und in den USER Scope eines Spielbenutzers hochladen und ansehen. Im Zweifelsfall kannst Du das was zu Deiner Rufnummernsperre gehört hat einfach mit da rein bauen. Dafür kannst Du einfach alle Blöcke in Deiner Regel per Copy & Paste in die 3iMedia Regel einfügen (alle Blöcke in Deiner Regel markieren, dann Strg-C, dann 3iMedia Regel öffnen und Strg-V).
  4. Tut mir leid Thomas, da kenne ich mich nicht wirklich gut aus. Mein Steckenpferd ist das Call Routing.
  5. Definitiv! Der Status kann nur abgefragt werden, wenn zwischen allen beteiligten Benutzern die gegenseitige Statussignalisierung konfiguriert ist. Das gilt selbstverständlich auch für Deinen Call Routing Benutzer
  6. Das hört sich so an, als wäre dort ganz einfach die gegenseitige Statussignalisierung nicht aktiviert. Das kann man direkt zwischen Benutzern konfigurieren, einfacher geht das aber auf Gruppenebene. Wenn Du alle Benutzer in der Jeder Gruppe drin hast (inkl. dem Benutzer auf dem dieses Call Routing läuft), kannst Du das entsprechend in den Gruppen Eigenschaften konfigurieren:
  7. VBScript Lua When it comes to develop call routing scripts with some own VBScript code in it, it might become handy to be able to have a look on what your code is doing. There are lots of so called "debugging" possibilities, but at this point you have to believe me, the only really reliably working method is placing your own log/trace information into the server trace file. Before you say that those trace files are way too large and confusing for you, they are not, once you know how to read them and how to filter the stuff you are interested in out. In the forum post "How to filter SwyxWare traces for call routing output of a single call" I have explained already in detail how this can easily be done. So lets focus on how to get your own information into the server trace file. This can simply be done with PBXScript.OutputTrace (Vbs)/ PBXScript.OutputTrace() (Lua). For VBScript based Call Routing: PBXScript.OutputTrace "Hello World!" For Lua based Call Routing: PBXScript.OutputTrace("Hello World") So what should be written into the server trace and what not? And how will I find my own trace output quickly and easily? By taking a look into the server trace file you figure that the SwyxWare traces quite a lot of stuff, not only errors but also tons of other information and events. You should do the same in your own VBScript/Lua code as well. Do not only trace errors your run into but also every kind of information that might become useful later on when you have to analyse the call routing if for some reason it doesn't work anymore like the many months before. The more information you place into the trace file the more easy it will become to pin point a problem later on. You might not even have to get into the script and work yourself into it if the traces are already informative enough. Lets assume you have written yourself a VBSscript/Lua function to do what ever you need to do, placed it into the Start block and call it later on e.g. in an Evaluate block. Taking all said above into consideration, that following is something like a "best practice" function template in terms of tracing. For VBScript based Call Routing: Function DoWhatever ( Parameter1, Parameter2 ) PBXScript.OutputTrace "---------> DoWhatever" PBXScript.OutputTrace "Parameter1 = " & Parameter1 PBXScript.OutputTrace "Parameter2 = " & Parameter2 On Error Resume Next Dim bReturn bReturn = False ' do what ever your function needs to do ' ... If Err <> 0 Then PBXScript.OutputTrace "Error while doing something!" PBXScript.OutputTrace "(Err) " & Err.Description Else PBXScript.OutputTrace "Successfully did something" End If ' if you "calculate" something, it is always a good idea to trace the result of it Dim sSQL sSQL = "SELECT * FROM MyTable WHERE value1 = " & Parameter1 & " AND value2 = " & Parameter2 PBXScript.OutputTrace sSQL DoWhatever = bReturn PBXScript.OutputTrace "bReturn = " & bReturn PBXScript.OutputTrace "<--------- DoWhatever" End Function For Lua bsed Call Routing: function DoWhatever ( Parameter1, Parameter2 ) PBXScript.OutputTrace ("---------> DoWhatever") PBXScript.OutputTrace ("Parameter1 = " .. Parameter1) PBXScript.OutputTrace ("Parameter2 = " .. Parameter2) local bReturn = false local oResult = nil -- do what ever your function needs to do -- ... if (oResult == nil) then PBXScript.OutputTrace ("Error while doing something!") else PBXScript.OutputTrace ("Successfully did something") end -- if you "calculate" something, it is always a good idea to trace the result of it local sSQL sSQL = "SELECT * FROM MyTable WHERE value1 = " .. Parameter1 .. " AND value2 = " .. Parameter2 PBXScript.OutputTrace ("sSQL = " .. sSQL) PBXScript.OutputTrace ("bReturn = " .. tostring(bReturn)) PBXScript.OutputTrace ("<--------- DoWhatever") return bReturn end Lets go through the template, step by step... The first and the last thing you function should do it to trace that you have entered and left it again. For VBScript based Call Routing: PBXScript.OutputTrace "---------> DoWhatever" PBXScript.OutputTrace "<--------- DoWhatever" For Lua based Call Routing PBXScript.OutputTrace ("---------> DoWhatever") PBXScript.OutputTrace ("<--------- DoWhatever") The arrows should tell you that you go into your function and go out of it again. All trace lines in between these two arrow lines will be made by your function. So they also help to find your stuff quickly. If your function takes parameters it is a good idea to trace them. If your function doesn't work and it get already come crap parameters it is not surprising that it fails later on. For VBScript based Call Routing: PBXScript.OutputTrace "Parameter1 = " & Parameter1 PBXScript.OutputTrace "Parameter2 = " & Parameter2 For Lua based Call Routing: PBXScript.OutputTrace ("Parameter1 = " .. Parameter1) PBXScript.OutputTrace ("Parameter2 = " .. Parameter2) For VBScript based Call Routing: If you have disabled the standard error handling (will be part of a future blog post) you need to check every "dangerous" call yourself, if it succeeded or not. For example you try to write something into a text file it could happen that the file doesn't exist or is read only. Or you try to access a database which is currently not reachable. So if you check for the outcome of such a call do not only trace errors but also that it succeeded. If Err <> 0 Then PBXScript.OutputTrace "Error while doing something!" PBXScript.OutputTrace "(Err) " & Err.Description Else PBXScript.OutputTrace "Successfully did something" End If For Lua based Call Routing: if (oResult == nil) then PBXScript.OutputTrace ("Error while doing something!") else PBXScript.OutputTrace ("Successfully did something") end If you calculate something within your function, e.g. build an SQL statement to run against a database and use some current values (e.g. the function parameters) to do so, it is a good idea to write the result of this into the trace. To stay with the SQL statement example this will enable you later on to copy&paste the statement from the trace file and test it directly against your database. For VBScript based Call Routing: Dim sSQL sSQL = "SELECT * FROM MyTable WHERE value1 = " Parameter1 & " AND value2 = " & Parameter2 PBXScript.OutputTrace sSQL For Lua based Call Routing: local sSQL sSQL = "SELECT * FROM MyTable WHERE value1 = " .. Parameter1 .. " AND value2 = " .. Parameter2 PBXScript.OutputTrace ("sSQL = " .. sSQL) And finally, if your function returns a value, just trace this value. For VBScript based Call Routing: PBXScript.OutputTrace "bReturn = " & bReturn For Lua based Call Routing: PBXScript.OutputTrace ("bReturn = " .. tostring(bReturn)) You don't need to put all trace stuff into your function from the beginning, while you are still developing it. But once it is finished and tested you should put trace output in it. You can't trace too much information, just too few. The more information you trace the more easy it will become later on to identify a problem if the call routing script ceases to work. Enjoy! PS: don't miss to take a look into the ECR Useful Link Collection
  8. Die Funktion prüft explizit auf abgemeldet. Und der Zustand wird ja offensichtlich auch richtig erkannt. Das Problem ist, dass Du unter abgemeldet auf "Leitung gesperrt" verstehst, und das ist eben nicht das gleiche. "Leitung gesperrt" macht einen Benutzer quasie besetzt. Er ist aber noch wie vor am Server angemeldet und kann ja auch noch den Status der anderen Benutzer sehen. Wenn eine Leitungstaste gesperrt ist, ist der Benutzer also aus Call Routing Sicht besetzt. Du musst Dir jetzt überlegen, wie Du das Call Routing in diesem Fall haben willst? Soll der Ruf dann in die Warteschlange oder auf die Voicemail? Du kannst Dir in meine Gruppebesetzt3.rse noch einen "Durchstellen" Block zwischen den "Variable auswerten" und den "Wartschlange erstellen" Block setzen und dann den "besetzt" Ausgang genau so verbinden, wie Du es haben möchtest.
  9. In beiden Gruppen sind die Mitglieder angemeldet. Damit wird meine Funktion auch genau diesen Zustand zurück liefern. Wenn Du einen Test zu einem Zeitpunkt machst, bei den diese Benutzer abgemeldet sind (oder sein sollten), mach doch bitte noch einmal die gleichen Screenshots.
  10. Poste doch bitte mal einen Screenshot Deiner SwyxWare Administration, in der Du die Mitglieder der Gruppe anzeigst. So wie hier:
  11. Ich habe Deine Regel mal ein wenig umsortiert (damit es übersichtlicher ist) und habe auch nochmal die IsGroupLoggedOff Funktion eingebaut. Gruppebesetzt3.rse Wenn das nicht funktioniert, d.h. Rufe nicht in der Voicemail landen für den Fall dass niemand in der Gruppe angemeldet ist, dann Du kannst mir gerne mal ein Server Trace schicken und ich schaue mir das dort mal an. Hier wird erklärt, wo Du das Server Trace findest. Ich brauche neben der (ungefilterten) Datei dann auch einen Zeitstempel und die Rufnummern von Anrufer und Angerufenen Deines letzten Testanrufes. Bitte lade das Trace nicht hier öffentlich ins Forum, sondern schick es mir per privater Forum Nachricht.
  12. Eine aktuelle Umfrage von Enreach und YouGov unterstreicht die Bedeutung etablierter Kommunikationskanäle, wenn Verbraucher mit Unternehmen in Kontakt treten. Die Ergebnisse zeigen aber auch, dass jüngere Zielgruppen häufiger per Chat oder über die sozialen Medien mit Unternehmen kommunizieren. In Zusammenarbeit mit dem Markt- und Meinungsforschungsinstitut YouGov hat Enreach mehr als 2.000 Menschen in Deutschland rund um ihre Kommunikation mit Unternehmen befragt. Dabei zeigte sich, dass Telefon und E-Mail die am häufigsten genutzten Kommunikationskanäle sind: 74 Prozent der Befragten gaben an, dass Telefon zu nutzen, wenn sie mit Unternehmen in Kontakt treten, zum Beispiel, um einen Service in Anspruch zu nehmen oder einen Termin zu vereinbaren. 65 Prozent nutzen für diese Zwecke die E-Mail. Weitere Kommunikationsmöglichkeiten wie etwa ein Kontaktformular auf der Unternehmenswebsite folgen mit deutlichem Abstand: Nur 33 Prozent der Befragten gaben an, diesen Weg zu nutzen. Problematisch dabei: Obwohl das Telefon für viele Verbraucher der bevorzugte Kontaktweg ist, bewerten sie die telefonische Erreichbarkeit häufig negativ. So sagten 70 Prozent der Umfrageteilnehmer:innen, dass sie sich oft oder sogar immer über schlechte Erreichbarkeit ärgern, wenn sie versuchen, telefonisch mit einem Unternehmen Kontakt aufzunehmen. Dabei sorgt es beispielsweise für Verärgerung, wenn der Anruf nicht entgegengenommen wird oder der Anrufer bzw. die Anruferin lange in der Warteschleife hängt. Multi-Channel-Kommunikation wichtig für jüngere Zielgruppen Deutliche Unterschiede im Kommunikationsverhalten zeigen sich zwischen verschiedenen Altersgruppen. Während das Telefon bei den Befragten über 55 Jahren mit 86 Prozent noch deutlicher vor den anderen Kommunikationskanälen liegt als beim Durchschnitt aller Altersgruppen, ziehen die jüngeren Umfrageteilnehmer:innen im Alter von 18 bis 24 Jahren die E-Mail (57 Prozent) dem Telefon (53 Prozent) vor. Außerdem entscheiden sich die jüngeren Verbraucher:innen auch häufiger für alternative Kommunikationswege wie den Chat mit einem Bot. In der Altersgruppe der 18- bis 24-Jährigen verwenden 20 Prozent den Chat mit einem Bot im Vergleich zu 7 Prozent der über 55-Jährigen. 19 Prozent der 18- bis 24-Jährigen gaben an, soziale Medien wie Facebook, Linkedin oder Instagram zu nutzen, um mit Unternehmen zu kommunizieren. Bei den über 55-Jährigen sind es lediglich 4 Prozent, in der Altersgruppe zwischen 45 und 54 Jahren 9 Prozent. „Die Ergebnisse unserer Umfrage verdeutlichen den zunehmenden Bedarf für eine flexible und vielseitige Kundenkommunikation. Gerade jüngere Generationen zeigen deutlich, dass sie verschiedene Kanäle nutzen möchten, um mit Unternehmen in Kontakt zu treten. Darauf müssen Verantwortliche vorbereitet sein und eine Multi-Channel-Kommunikationsstrategie entwickeln, um alle Zielgruppen optimal anzusprechen“, sagt Dr. Ralf Ebbinghaus, Geschäftsführer von Enreach, einem führenden Anbieter von KI-basierten Bots, Unified-Communications- und weiteren Kommunikationslösungen. „Dabei spielt die telefonische Erreichbarkeit weiterhin eine große Rolle für Kundenzufriedenheit und Servicequalität. Mit unseren Unified-Communications-Lösungen unterstützen wir Unternehmen dabei, ihre Prozesse zu optimieren und ihre Erreichbarkeit für Kunden deutlich zu verbessern, zum Beispiel durch intelligente Anrufweiterleitungen oder die Möglichkeit, eingehende Anrufe im Team zu beantworten.“ Social Messaging für effiziente Kundenkommunikation auf allen Kanälen Neben den bewährten Unified-Communications-Lösungen bietet Enreach mit dem neuen Social Messaging ab sofort auch eine leistungsstarke Multi-Channel-Kommunikationslösung an. Unternehmen können ihre Kundenkommunikation damit besonders effizient organisieren und Anfragen über verschiedene Anwendungen von Webchat über WhatsApp bis hin zu Instagram und Facebook ohne großen Aufwand beantworten. Die Social-Messaging-Lösung von Enreach bündelt eingehende Nachrichten aus verschiedenen sozialen Netzwerken und gängigen Plattformen in einem zentralen Posteingang oder Microsoft-Teams-Kanal. So behalten Mitarbeiter:innen stets den Überblick und können schnell reagieren, ohne zwischen verschiedenen Anwendungen hin- und herwechseln zu müssen. Die verwendeten Daten beruhen auf einer Online-Umfrage der YouGov Deutschland GmbH, an der im April 2023 2.099 Personen (davon 1.168 Erwerbstätige) teilnahmen. Die Ergebnisse wurden gewichtet und sind repräsentativ für die deutsche Bevölkerung ab 18 Jahren. Pressemitteilung auf enreach.de
  13. Ja genau, Du kannst den Aufruf der Funktion z.B. in einen Variable auswerten Block setzen. Hier landet dann der Rückgabewert direkt auf den beiden Ausgängen des Blocks. Wenn das nicht funktioniert würde ich mal unterstellen, dass in der Gruppe noch mindestens ein Benutzer nicht wirklich abgemeldet ist. Vielleicht irgendein Tisch Telefon? Ich würde vorschlagen, dass Du Dir testweise einfach mal eine ganz kleine Test Regel machst, in der Du nur die Funktion im Start Block, deren Aufruf und Auswertung hast, z.B.
  14. Du musst die Funktion IsGroupLoggedOff genau wie die Funktion IsPublicHolidayDE auch in den Start Block kopieren, statt in einen Skript Code einfügen Block. Sobald eine Funktion im Start Block ist, kannst Du sie von überall in Deinem GSE Skript aufrufen. Die Möglichkeiten dazu sind hier beschrieben.
  15. Please do not forget that this is just an independent, privately driven web forum. It is not an official Enreach support forum (as clearly stated on the forum front page and the imprint). The fourm provides a space for everyone to either ask questions, grab existing information or to share knowledge. If you are not getting the help you are looking for, you can and should get in touch with your reseller and the official support.
  16. Hallo, grundsätzich startet ein Ruf auf eine Gruppe nicht das Call Routing der Gruppenmitglieder. Alle Umleitungen eines Benutzers sind Teil seines Call Routings und greifen daher auch nicht. Es wäre fatal, wenn ein Grupperuf das Call Routing aller Gruppenmitglieder starten würde, denn dann würden diese Call Routings um den Ruf kämpfen und er wäre nicht verhersebar, welches der Call Routings den Ruf dann schlussendlich bekommt und behandelt. Bis einschliesslich der aktuellen Version 13.26 haben Gruppen selbst kein Call Routing in welchem Du über entsprechende Regeln Deine Situation lösen könntest. Hier hilft man sich mit einem zusätzlichen Benutzer, welcher die Gruppen Nummer erhält und in dessen Call Routing Du dann uf die Gruppe zustellst. Idealerweise nimmt man die Gruppe dann auch aus dem globalen Telefonbuch, damit niemand am Call Routing vorbei die Gruppe direkt anruft. Ab der kommenden Version 13.27 haben Gruppen selbst ebenfalls ein Call Routing, d.h. es muss kein zusätzlicher Benutzer (wie eben beschrieben) mehr angelegt werden. In einer einfachen Call Routing Regel kannst Du den Ruf mit einem Timeout von 10 durchstellen. Wenn der Ruf nicht verbunden wurde kannst Du den Ruf dann anschliessend auf ein anderes Ziel zustellen.
  17. Mehr als die Hälfte der Erwerbstätigen in Deutschland hat Mitspracherecht bei der inhaltlichen Gestaltung ihrer Arbeit – das ergab eine aktuelle Umfrage von Enreach in Zusammenarbeit mit dem Markt- und Meinungsforschungsinstitut YouGov. Bei der Online-Befragung von mehr als 2.000 Deutschen gaben 60 Prozent der Erwerbstätigen an, ihre Arbeit inhaltlich mitgestalten zu können, zum Beispiel indem sie eigene Ziele oder Prioritäten festlegen. Das kommt gut an: 80 Prozent der Erwerbstätigen sagten, dass ihnen dieses inhaltliche Mitspracherecht am Arbeitsplatz wichtig ist. Bei den Umfrageteilnehmern mit Hochschulabschluss waren es sogar 88 Prozent. Mit 89 Prozent gab zudem die große Mehrheit der Erwerbstätigen an, dass sie immer oder oftmals gerne selbstbestimmt und eigenverantwortlich arbeiten. Auch was die Rahmenbedingungen der eigenen Arbeit angeht, möchten sich die Erwerbstätigen einbringen: Für 80 Prozent der Befragten ist es wichtig, dass ihr Arbeitgeber ihre Wünsche im Hinblick auf Arbeitszeit und Arbeitsort berücksichtigt. Die Mehrheit der Umfrageteilnehmer bewertete das Vertrauensverhältnis zu ihrem/ihrer Vorgesetzten gut. So glauben 86 Prozent, dass ihr(e) Vorgesetzte(r) sie eigenverantwortlich arbeiten lässt, weil er oder sie ihnen vertraut. 79 Prozent waren der Meinung, dass ihr(e) Vorgesetzte(r) ihnen vertraut, unabhängig davon, wann und wo sie arbeiten. „Die Ergebnisse unserer Umfrage unterstreichen die Notwendigkeit, Arbeitswelten zu schaffen, die Eigenverantwortung und Partizipation fördern. Wir bei Enreach sind schon seit langem davon überzeugt, dass selbstbestimmtes Arbeiten und Mitspracherechte einen positiven Einfluss auf die Motivation und Zufriedenheit der Mitarbeiter:innen haben“, sagt Dr. Ralf Ebbinghaus, Geschäftsführer von Enreach, einem führenden Anbieter von KI-basierten Bots, Unified-Communications- und weiteren Kommunikationslösungen. „Das ist einer der Gründe, warum wir Holacracy eingeführt haben. Das Organisationsmodell ist ein Gegenentwurf zu traditionellen Management-Hierarchien, der es Mitarbeiter:innen ermöglicht, Inhalte und Rahmenbedingungen ihrer Arbeit so weit wie möglich selbst zu gestalten.“ Holacracy: Mehr Autonomie am Arbeitsplatz Mit der Einführung von Holacracy ersetzt Enreach das klassische Top-Down-Management und verteilt Entscheidungsgewalt unter den Beschäftigten. So kann jeder im Unternehmen die Initiative ergreifen und Verantwortung für das eigene Handeln übernehmen. Ein wichtiges Merkmal von Holacracy ist die Ausrichtung am „Purpose“, dem Sinn und Zweck des Unternehmens. Wo es früher feste Stellenbeschreibungen und Abteilungen mit vom Management vorgegebenen Zielen gab, arbeitet Enreach mit Kreisen und Rollen, die alle einen Beitrag zum Unternehmenszweck leisten. Dieser Beitrag kann jederzeit und von jedem Mitarbeitenden hinterfragt werden, sodass nach Bedarf neue Kreise und Rollen entstehen. Dieses System der Selbstorganisation ermöglicht es jedem im Unternehmen, Führungsstärke zu zeigen: Jede(r) kann innerhalb seines oder ihres Verantwortungsbereichs selbst entscheiden. „Bei der Bewertung von Vorschlägen gilt: ‚Wenn es dem Unternehmen nicht schadet, dann probieren wir es aus.‘ Das fördert innovative Ideen und sorgt dafür, dass wir als Organisation agil bleiben. Im Rahmen von Holacracy arbeiten die Enreach Mitarbeiter:innen in ganz Europa ohne eng abgesteckte Kompetenzbereiche zusammen – damit ist diese Organisationsform ideal für die Vernetzung von standortübergreifenden Teams“, so Enreach Geschäftsführer Ebbinghaus. „Eigenverantwortung und Gestaltungsspielraum kommen gut an – das belegt nicht nur unsere aktuelle Umfrage, sondern spiegelt auch unsere Erfahrungen wider. Unsere Mitarbeiter:innen schätzen es, dass sie eigene Stärken einbringen und selbst Veränderungen an ihren Aufgaben oder der Organisationsstruktur vorschlagen können – das ist für uns auch im Wettbewerb um begehrte Fachkräfte ein Vorteil.“ Die verwendeten Daten beruhen auf einer Online-Umfrage der YouGov Deutschland GmbH, an der im April 2023 2.099 Personen (davon 1.168 Erwerbstätige) teilnahmen. Die Ergebnisse wurden gewichtet und sind repräsentativ für die deutsche Bevölkerung ab 18 Jahren. Pressemitteilung auf enreach.de
  18. Lua → VBScript SwxWare v13.27 This function checks if the current call was redirected by a given user or group. Please see the Introduction chapter for some usage instructions. ------------------------------------------------------------------ -- IsRedirectedFromByNameEx -- -- Checks if current call is redirected by a given user or group. -- The user or group is identified by its name. -- -- Parameter: -- sName name of user or group to check if call is redirected from -- -- Return: -- boolean true - call was redirected by given user or group -- false - call was not redirected by the given user or group ------------------------------------------------------------------ function IsRedirectedFromByNameEx (sName) PBXScript.OutputTrace ("----------> IsRedirectedFromByNameEx ( " .. sName .. " )") local bReturn = false local tScripts = nil tScripts = PBXScript.PreviousScripts() if (tScripts ~= nil) then for i = 1, #tScripts do if (tScripts[i].entitytype == PBXScriptTypeUser) then PBXScript.OutputTrace ("found user " .. tScripts[i].entityname) else PBXScript.OutputTrace ("found group " .. tScripts[i].entityname) end if (tScripts[i].entityname == sName) then PBXScript.OutputTrace ("this is a redirected call from " .. sName) bReturn = true end end end PBXScript.OutputTrace ("bReturn = " .. tostring(bReturn)) PBXScript.OutputTrace ("<--------- IsRedirectedFromByNameEx") return bReturn end This function makes use of the Server script API function PBXScript.PreviousScripts() to check if the call has been transferred by the given user or group (defined by its name) and PBXScript.OutputTrace() to write trace information into the SwyxServer trace file. Please note: this function makes use of newly introduced functionalitly in SwyxWare v13.27 within the PBXScript.PreviousScripts() table. It is therefore able to check for users and groups the call have been before reaching the current script. There is a previous version of this function available, IsRedirectedFromByName, which can check for users only. A usage example of this function could be the following: Boss redirects all his calls to his secretary. The secretary redirects all her calls to the operator because she has to leave the office. So, when calling the boss directly one would end up at the operator. For the operator it would be useful to know if this is such a "boss" call. So, all you have to do is to call this function with the name of the boss user and afterwards e.g. manipulate the text being shown in the SwyxIt! display. if IsRedirectedFromByNameEx("Mr. Boss") then PBXCall.CallingPartyName ("BOSS - " & PBXCall.CallingPartyName()) end Another usage of this function can be found in the function IsRedirectedFromByNumber(). This function was converted from VBScript into Lua from the initially posted version in this forum topic.
  19. VBScript → Lua SwxWare v13.27 This function checks if the current call was redirected by a given user or group. Please see the Introduction chapter for some usage instructions. '---------------------------------------------------------------- ' IsRedirectedFromByNameEx ' ' Checks if current call is redirected by a given user or group. ' The user or group is identified by its name. ' ' Parameter: ' sName name of user or group to check if call is redirected from ' ' Return: ' boolean true - call was redirected by given user or group ' false - call was not redirected by the given user or group '---------------------------------------------------------------- Function IsRedirectedFromByNameEx(sName) PBXScript.OutputTrace "----------> IsRedirectedFromByNameEx ( " & sName & " )" Dim bReturn bReturn = False Dim PrevScripts Set PrevScripts = PBXScript.PreviousScripts Dim PrevScript For Each PrevScript In PrevScripts if PrevScript.EntityType = PBXScriptTypeUser then PBXScript.OutputTrace "found user " & PrevScript.EntityName else PBXScript.OutputTrace "found group " & PrevScript.EntityName end if If PrevScript.EntityName = sName Then PBXScript.OutputTrace "this is a redirected call from " & sName bReturn = True End If Next IsRedirectedFromByNameEx = bReturn PBXScript.OutputTrace "bReturn = " & bReturn PBXScript.OutputTrace "<--------- IsRedirectedFromByNameEx" End Function This function makes use of the Server script API function PBXScript.PreviousScripts to check if the call has been transferred by the given user (defined by his name) and PBXScript.OutputTrace to write trace information into the SwyxServer trace file. Please note: this function makes use of newly introduced functionalitly in SwyxWare v13.27 within the PBXScript.PreviousScripts collection. It is therefore able to check for users and groups the call have been before reaching the current script. There is a previous version of this function available, IsRedirectedFromByName, which can check for users only. A usage example of this function could be the following: Boss redirects all his calls to his secretary. The secretary redirects all her calls to the operator because she has to leave the office. So, when calling the boss directly one would end up at the operator. For the operator it would be useful to know if this is such a "boss" call. So, all you have to do is to call this function with the name of the boss user and afterwards e.g. manipulate the text being shown in the SwyxIt! display. If IsRedirectedFromByNameEx("Mr. Boss") Then PBXCall.CallingPartyName = "BOSS - " & PBXCall.CallingPartyName End If Another usage of this function can be found in the function IsRedirectedFromByNumber. This function was initially posted into this forum topic.
  20. Lua → VBScript SwxWare v13.27 Returns the name of the group the script is running for. local sName = PBXGroup.Name() This function returns a string value.
  21. Lua → VBScript SwxWare v13.27 Returns the SwyxWare internal id of the group the script is running for. local nID = PBXGroup.GroupID() This function returns a number value.
  22. Lua → VBScript SwxWare v13.27 This function returns true if the current caller is a member of the group the script is running for. local bMember = PBXGroup.CallerIsMember() This function return a boolean value. The return value can be used for authentication purpose, e.g. to unlock certain call routing functionality for members of the current group.
  23. Lua → VBScript SwxWare v13.27 Returns true if all group users are currently busy, i.e. not able to accept another call. local bBusy = PBXGroup.IsBusy() This function returns a boolean value. You can also use PBXGroup.IsLoggedIn() to check if at least one group user is logged in into SwyxWare with any device.
  24. Lua → VBScript SwxWare v13.27 Returns true if at least one group user is currently logged into SwyxWare with any client. local bLoggedIn = PBXGroup.IsLoggedIn() This function returns a boolean value. You can also use PBXGroup.IsBusy() to check if all group users are currently busy.
  25. Lua → VBScript SwxWare v13.27 This function returns the script entities (user or user group) current date and time. -- get date/time as string local sDateTime = PBXUser.Now() -- in "%d.%m.%Y %H:%M:%S" format -- get date/time as table local tDateTime = PBXUser.Now("*t") -- .sec : number -- .min : number -- .hour : number -- .day : number -- .month : number -- .year : number -- .wday : number -- .yday : number -- .isdst : boolean This function returns a string or a table value. With no parameter given, this function returns the current date and time in "%d.%m.%Y %H:%M:%S" format. With the string parameter "*t" given, this function returns the current date and time in a table format. This is the local time according to the user or group configured location. If no parameter is used, this function is identical to the GSE build-in function CurDateTime().
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.