Das Modul ist bei der neueren SF-Version gar nicht mehr nötig, denn du kannst du nun direkt via Webinterface Root/CA Zertifikate zum Truststore hinzufügen.
MfG
Fabian
Das Modul ist bei der neueren SF-Version gar nicht mehr nötig, denn du kannst du nun direkt via Webinterface Root/CA Zertifikate zum Truststore hinzufügen.
MfG
Fabian
So das Tool ist fertig:
https://module.si-solutions.ch/forum/11958/JSONBuilder.rar
Entpacken und danach die Start.bat ausführen.
Wenn es Fehler "Class has been compiled by a more recent version of the Java Environment" kommt, müsst ihr eure Java Version Updaten.
Kurz wie das Tool funktioniert:
Der Button Load JSON, lädt ein Zuvor mit dem Programm gespeichertes JSON fürs weitereditieren.
Das Save JSON Speichert die Tabelle im Programm als JSON Datei.welche mit der SFM-DB kompatibel ist.
Generate/Refresh JSON from Folder, verlangt nach einem Ordner voller .sfm Dateien (Scannt alle Unterordner ebenfalls recursiv), und baut daraus die Tabelle fürs Abspeichern als JSON. Falls zuvor eine JSON Datei geladen wurde, Updatet er die JSON Datei mit neuen Informationen (Z.b. maximumversion, approveversion, modulversion ect.), wenn eine neue .SFM Datei für ein bestehendes Modul dazugekommen ist.
Wenn mehrere .SFM Dateien fürs gleiche Modul exisitieren, sammelt es diese, und führt diese zusammen, es funktioniert noch nicht zu 100% Aber ist besser als alles von Hand zu erfassen.
Die Tabelle kann auch von Hand nachkorrigiert werden
Mithilfe des Dropdowns und "Replace all" kann man auch etwas für alle Module grade updaten.
MfG
Fabian
Ich Arbeite gerade an einer GUI Oberfläche, bei der ihr einen Ordner voller .sfm Dateien angeben könnt, er Scannt alle ein, und generiert dann eine Tabelle, wo die werte noch editieren werden können, bevor eine JSON generiert wird.
Bei über 100 Modulen, bzw. 500 Versionen pflege ich die JSON nicht von Hand
Sobald sie Fertig ist, werde ich sie als DL zur Verfügung stellen.
MfG
Fabian
Hallo FLoehner
Das geht bereits.
In dem alten, sowie dem neuen STARFACE Client.
Du musst im Adresbuch "Teilnehmer intern" den Teilnehmer editieren, dort kannst du, wie auch bei normalen Adressbucheinträgen, div. Telefonnummern, Wohnort ect. hinterlegen.
Wenn du es nicht editieren kannst, ist es via Admin Konsole gesperrt worden.
Um es zu Entsperren/editierbar zu machen musst du im Webinterface ==> Admin ==> Adressbuch ==> Benutzer ==> Schreibzugriff geben.
MfG
Fabian
Hallo ismailbalik
Dieses Problem hat damit zu tun, dass die STARFACE dem Zertifikat von https://license.starface.de nicht vertraut. Vermutlich, weil das Zertifikat zu neu bzw. deine STARFACE Version zu alt ist.
Deine STARFACE Version ist weit ausserhalb der Supporteten Versionen. Du musst diese vermutlich von Hand neu installieren & dann ein Backup einspielen.
Ob deine Compact noch Kompatibel ist kannst du in diesem Wiki-Artikel prüfen: https://knowledge.starface.de/…ge.action?pageId=46568852
MfG
Fabian
Hallo Simon
Die Version 193 funktioniert unter 7.3.X sowie 8.X. (Ausser 8.0.0.11 da Bug mit den Systemmeldungen)
MfG
Fabian
Hallo Tilo
Ich habe mal den Code zwischen 7.3.1.3 und 8.1.0.11 verglichen.
Der GetConnection Baustein ist noch der genau gleiche wie in der alten STARFACE Version.
Der Baustein selbst hat sich also nicht geändert.
Was sich ggf. geändert hat sind die Security Standards vom Java oder der JDBC Treiber wurde geupdatet.
Du musst vielleicht bei den Options "encrypt=false;" hinzufügen, oder "encrypt=true;trustServerCertificate=true" da sonst der Datenbanktreiber neu eventuell standardmässig auf SSL/TLS geht.
MfG
Fabian
Die Fehlermeldung besagt, dass sip-rwe.de vom DNS Server nicht aufgelöst werden kann. Ich vermute es wurde im Linux im /etc/hosts manuell ein Eintrag erfasst, welcher die sip-rwe.de auf die IP des NGN Gateways zeigen lässt.
MfG
Fabian
Hallo ninjavoiper
Die ID ist fortlaufend, und wird Auto-generiert, wenn du sie beim Insert nicht mitlieferst.
Die QueueID ist ein Foreign Key ==> queue.id
id integer NOT NULL DEFAULT nextval(('queue_priority_datasource_id_seq'::text)::regclass),
queueid integer NOT NULL,
type integer NOT NULL,
CONSTRAINT queue_priority_datasource_pkey PRIMARY KEY (id),
CONSTRAINT queue_priority_datasource_queue_fkey FOREIGN KEY (queueid)
REFERENCES public.queue (id) MATCH SIMPLE
Was ich nicht weiss, ist ob die DB Insert bei der Queue sofort eine Wirkung haben, oder du die Anlage ggf. neu starten musst, damit die auftauchen. Für gewisse Komponenten verwendet die STARFACE für schnelleren access eine kopie der DB Daten aus dem Arbeitsspeicher, und aktualisiert diese dann parallel zu den DB insert.
Ansonsten könntest du diese ggf. via Java Code Einspielen.
MfG
Fabian
Hallo Meinard
Das weiss ich nicht, aber der SIP Trusted IP Helper macht ohne korrekte SRV Einträge rein gar nichts.
Was hast du denn für einen Zielserver/Outbound Proxy im Profil deines Telecom anschlusses?
MfG
Fabian
Hallo Meinard
Der SIP-Trusted IP Helper ist nicht korrekt Konfiguriert.
Die XXXXXXXXXXXXXXXXXXXXXX müssten durch den korrekten Companyflex Server ersetzt werden, welcher dir von der Telecom mitgeteilt wurde (Auf dem Zugangsdatenblatt)
MfG
Fabian
Es ist zwar diese Stimme, der Text ist aber nicht vorgeneriert.
Sondern jeder Teil des Textes ist in "/var/lib/asterisk/sounds" in 3 Sprachen als .sln16 und .g722 abgelegt.
Du musst also jede Audiodatei abhören, und dann den neuenm Text generieren und ersetzen.
MfG
Fabian
Ich hätte eine einfache Idee, wie das umzusetzen wäre.
Du erstellt einen Dummy User
Du erstellst ein Modul, welches sich Anrufen lässt.
Du setzt bei jedem Benutzer inkl. Dummy User dieses Modul als DW auf eine Funktionstaste, und nennst es z.b. Telefon ab/anmelden.
Szenario 1:
Wenn der Dummy User das Modul anruft, fragt das Modul, welcher Benutzer am Telefon angemeldet werden soll, dann gibst du dort deine Interne Rufnummer ein z.b. 200
Das Modul prüft, ob es den Benutzer gibt.
Wenn es den Benutzer gibt
{
____ Das Modul prüft, von welchem Telefon der Dummy User gerade Angerufen hat (GetCallerChannel z.b. SIP/2227.snomd385-00000005 , String
____Filtern/Kürzen), und meldet diesen vom Telefon ab (REST DELETE /users/{userId}/phoneconfig/phones/{phoneId}) , und Meldet den User, dessen
____LoginID eingegeben wurde an (REST POST /users/{userId}/phoneconfig/phones)
}
Wenn es den Benutzer/LoginID nicht gibt
{
____ Modul gibt Fehlermeldung aus
}
Szenario 2:
Wenn ein Benutzer das Modul anruft, loggt das Modul den Benutzer am Telefon aus, und Meldet den Dummy User wieder an. Somit werden auch die Funktionstasten vom Dummy User wieder geladen, und der nächste Benutzer kann sich dann wieder "Anmelden"
Dann noch sicherstellen dass:
Der Dummy-User nicht angerufen werden kann (Z.b. Immer Umleitung auf Voicemailbox)
Ggf. Sicherstellen, dass der Dummy-User nicht (Raus)-Telefonieren darf. (Durch Modul abfangen, und z.b. Busy angeben)
Das sollte die Hotdesking Idee so in etwa decken.
MfG
Fabian
Von uns gäbe es ein Modul, welches hier Behilfich sein könnte.
Das https://wiki.si-solutions.ch/d…dungsbasierter_Chatstatus
Dieses setzt den Chatstatus eines Benutzers, basierend auf deren Gruppenmitgliedschaft.
Du kannst dann z.b. Gruppen Eröffnen Krank/Ferien/Ausser Haus ect.
Wenn du einen Benutzer in der Gruppe hinzufügst, wird dann sein Chatstatus überschrieben.
Dann kann man dem User sogar Tasten aufs Telefon legen, mit welchen er sich an den Gruppen an/abmelden kann.
Somit reicht dann ein Tastendruck, um den Kunden z.b. als Krank zu markieren.
MfG
Fabian
Hallo Andreas
Wenn es sich zuverlässig nachstellen läst, mach mal einen Testanruf, versuche das Gespräch via dem Knopf anzunehmen, und warte dann mal eine Minute, und schaue, ob das Gespräch dann plötzlich angenommen wird.
Wenn ja, wird es wohl ein ähnliches Problem sein, wie ich zuvor schon beobachtet habe.
MfG
Fabian
Hallo Max
Ich habe einfach vergessen, die 1070 vom Updateserver zu entfernen.
Die ist jetzt nicht mehr Verfügbar.
Die Modul-Versionen zählen Standardmässig immer Rauf, also ist Grössere Modulversion == Neuer (Ausser man macht ein eigenes Versioning, so wie es manche Entwickler machen)
MfG
Fabian
Hallo Pascal
Nein, dafür habe ich leider keinen Fix, das ist ein STARFACE Problem, dass ich nicht lösen kann.
MfG
Fabian
Ich habe eine Theoretische Möglihckeit, wie man es Anlagenmässig lösen könnte, aber komplett ungetestet.
Es gibt eine Funktion "SendCallerIDUpdateAction", mit welcher man für einen Channel von einem Gespräch die CallerID Updaten könnte.
Ich nehme an, diese wird im Normafall verwendet, um die BLF Tasten o.ä. aufzulösen, also z.b. wenn man am Tischtelefon eine Benutzertaste drückt steht zuerst jeweils eine A-Nummer dort z.b. A1000, bevor diese dann beim klingel auf den wirklichen Namen aufgelöst wird.
Wenn es wirklich Funktioniert, könnte man damit selbst bei Gruppenrufen on the fly die CallerID noch ändern, während es noch klingelt, und zwar nur für einen Teilnehmer.
Würde aber bedeuten, dass pro Teilnehmer, dessen Privates Adressbuch durchsucht werden muss, da jeder in der Gruppe vllt die gleiche Nummer unter einem anderen Namen im Pers. Adressbuch hat.
Falls sich jemand damit beschäfitgen will
import de.starface.bo.callhandling.actions.ModuleBusinessObject;
import de.starface.callhandling.callmodel.api.command.SetCallerIdCommand;
import de.starface.callhandling.callmodel.api.command.SetCallerIdCommandHandler;
import de.starface.callhandling.enums.CallerIdType;
import de.starface.callhandling.model.callerid.CallerIdContainer;
import de.starface.ch.processing.bo.api.pojo.data.PojoCall;
import de.starface.ch.processing.bo.api.pojo.data.PojoCallLeg;
import de.starface.core.component.StarfaceComponentProvider;
import de.vertico.starface.module.core.model.Visibility;
import de.vertico.starface.module.core.runtime.IAGIJavaExecutable;
import de.vertico.starface.module.core.runtime.IAGIRuntimeEnvironment;
import de.vertico.starface.module.core.runtime.annotations.Function;
@Function(visibility = Visibility.Private, rookieFunction = false, description = "")
public class DefaultCall implements IAGIJavaExecutable
{
StarfaceComponentProvider componentProvider = StarfaceComponentProvider.getInstance();
@Override
public void execute(IAGIRuntimeEnvironment context) throws Exception
{
ModuleBusinessObject MBO = (ModuleBusinessObject) context.provider().fetch(ModuleBusinessObject.class);
SetCallerIdCommandHandler SIDC = (SetCallerIdCommandHandler) context.provider().fetch(SetCallerIdCommandHandler.class);
PojoCall PC = MBO.getPojoCallByChannelName(context.getCallerChannelName()); //Den Aktiven Anruf im Modul abholen
for(PojoCallLeg PCL : PC.getCalled()) //Für jeden Angerufenen
{
CallerIdContainer Container = PCL.getCallerIdContainer(); //Aktuelle Anrufinformationen abrufen
Container.setAddressBookResolved(true); //Anruf als Aufgelöst markieren
Container.setModuleCallerId("Max", "Musternamm", "Musterfirma", Container.getModuleCallerId().getDialedNumber() , Container.getModuleCallerId().getNumber()); //Anrufinformationen für Modul setzen (Keine Ahnung warum das separat passieren musss)
Container.setFirstname("Max", CallerIdType.ADDRESSBOOK); //Vorname
Container.setLastname("Mustermann", CallerIdType.ADDRESSBOOK); //Nachname
Container.setCompany("Musterfirma", CallerIdType.ADDRESSBOOK); //Firmenname
SetCallerIdCommand Command = new SetCallerIdCommand(PCL.getChannelName(), Container); //Command bauen
SIDC.handle(Command); //Für diesen Angerufenen Updaten
}
}
}
Display More
In diesem Beispiel, wenn es funktioniert, würde für jeden Angerufenen der Anrufer auf "Max Mustermann Musterfirma" gesetzt.
Nun könnte man den Code dahingehen erweitern, dass es für jeden Benutzer sein privates Adressbuch prüft, und nur dan ggf. die Werte überschreibt.
MfG
Fabian
Ja, wir kommen leider nur schleppend Voran, die Kunden sind genervt, und wollen eine Lösung und nicht ewiges probieren.
Bei einem habens wir gelöst, indem wir das Headset durchs Nvidia Broadcast leiten: https://www.nvidia.com/de-de/g…oadcasting/broadcast-app/
Dies setzt aber eine Nvidia RTX Grafikkarte im PC vorraus.
MfG
Fabian