Showing posts with label Starface. Show all posts
Showing posts with label Starface. Show all posts

Thursday, September 24, 2015

Erste Starface Module laufen bereits

Die ersten Starfacemodule die ich im Modulcreator Workshop in Wien gebaut habe laufen schon. Der Modulcreator ist wirklich ein sehr mächtiges Tool und ein absolutes Alleinstellungsmerkmal der Starface Telefonanlage im Vergleich zu anderen Anbietern die in diesem Bereich eigentlich gar nichts bieten. Mit wenigen Clicks kann man sich einfache Anwendungen zusammenklicken. Vom einfachen Telefonmenü bis zu komplizierten Callhandlings ist hier alles möglich. Natürlich sind Programmierkenntnisse vom Vorteil, aber auch ein Admin kann sich einfache Module selber zusammenstellen.




Tuesday, September 22, 2015

Übermorgen gehts los mit dem Starface Modul Creator Workshop in Wien

Übermorgen Donnerstag bin ich mit meinem Kollegen beim Starface Modulcreator Workshop in Wien. Bin wirklich schon sehr gespannt, welche neuen Möglichkeiten sich für uns durch die Erstellung von Modulen in der Starface ergeben. Eventuell lassen sich damit ja einige Einschränkungen die wir derzeit bei den iQueues haben elegant umschiffen.

Meine ersten Experimente mit dem Modulcreator waren auf jeden Fall schon einmal sehr vielversprechend. Ich denke es wird dann sicher auch ein paar Posts zu den Möglichkeiten des Modulcreators geben. Lasst euch überraschen.


Saturday, September 19, 2015

Performanceprobleme bei der An und Abmeldung an einer Starfacegruppe mittels UCI

Bei uns in der Firma verwenden wir im Verkauf das iQueue Feature der Starface, das eine automatische Verteilung von Anrufern an verschiedene Verkaufsmitarbeiter erlaubt. Eine wichtige Funktion bei einer solchen Lösung ist das An und Abmelden der Verkaufsagenten an den diversen iQueues. Um es unseren Benutzern so leicht wie möglich zu machen, haben wir die An und Abmeldung in unseren Notes basierten CTI Client integriert. Der Benutzer kann sich mit einem Mausklick in mehreren iQueues An und Abmelden. Prinzipiell funktioniert die Lösung auch ganz gut nur die Performance war sehr schlecht. Der An und Abmeldevorgang hat mehrere Sekunden gedauert und während der Vorgang lief, war die CPU Last auf der Telefonanlage extrem hoch, was zu Problemen beim Callhandling führen konnte.


Saturday, September 12, 2015

Herunterladen von Dateien von der Starface mittels Winscp

Oft ist es ziemlich unpraktisch die oft recht umfangreichen Logdateien der Starface auf der Commandline zu analysieren, vor allem wenn man nicht der absolute Linux Crack ist. Da ist es natürlich praktisch, wenn man einen grafischen Client zur Hand hat mit dem man sich einfach Logfiles von der Starface herunterladen kann und diese dann bequem auf seinem Windows Client analysieren kann. Einen solchen möchte ich euch heute mit WinSCP vorstellen. WinSCP ist ein extrem mächtiges aber trotzdem kompaktes Programm, dass noch dazu völlig ohne Installation auskommt.

Ein kurzes Tutorial für die ersten Schritte:

Als erstens lädt man sich den WinSCP Client von der Download Seite auf https://winscp.net/eng/download.php herunter. Ich empfehle den "Portable Executable" download, da man damit ohne Installation auskommt.

Tips & Tricks für die Starface Postgresql Datenbank

Da wir immer noch relativ große Probleme mit der Performance unserer Starface haben möchte ich mich mal ein wenig in die Postgresql Datenbank die von der Starface verwendet wird einarbeiten, deshalb habe ich mir hier einen Blogeintrag gemacht in dem ich die wichtigsten Commands und Tricks für die Arbeit mit der Postgresql Datenbank von Starface zusammentrage:

Alle Arbeiten mit der Datenbank kann man von der Command line von der Starface Telefonanlage ausführen.

Tuesday, May 5, 2015

Einstellen des Logginglevel der Starface UCI API

Die Entwicklung unseres Notes basierenden CTI Client für die Starface Telefonanlage befindet sich kurz vor der Fertigstellung. Bisher war es sehr angenehm, dass die Starface API alle Debugmeldungen auf die Standard Ausgabe geleitet hat. Diese Infos sind während der Entwicklung sehr informativ, da sie praktisch die gesamte Kommunikation des Clients mit der Telefonanlage beinhalten. Im Echtbetrieb ist es aber natürlich ein Ärgernis, wenn das gesamte Client log mit Meldungen der Starface API überflutet wird.

Leider habe ich in der Starface API Beschreibung keine Hinweise gefunden, wie man den Logging Level einstellen kann. Nach einiger Analyse des Codes der Starface API habe ich aber eine sehr einfache Methode gefunden den Logging Level auf ein vernüftiges Maß zu drosseln. Um diese Methode in seinem Code zu verwenden, muss sich das Log4j-1.2.16.jar, dass die Starface API mitbringt im Build Path eingetragen sein.

// Starface UCI API auf Level Info setzten. Keine Debug Infos werden
// mehr angezeigt
LogManager.getLogger("de").setLevel(Level.INFO);

Tuesday, March 18, 2014

Apache xml-rpc download links are broken

I needed the Apache xml-rpc download for our CTI project, but all download links on http://ws.apache.org/xmlrpc/download.html are broken. I had really a hard time to figure out how to find the download, so if someone else needs xmlrpc you can find it on http://archive.apache.org/dist/ws/xmlrpc/. Maybe someone can fix the broken links on the Apache homepage.

Saturday, July 20, 2013

First steps with the Java UCI API to access a starface PBX

In my last Starface related blog post i have shown how to configure the UCI API of the starface PBX in eclipse. Today i want to show you how to use the API to access data and functions in the starface PBX.

The first step to access data on the starface PBX is to create an UciProxy Object. The proxy object manages the connection to the PBX in the background. The proxy object is really handy, because it reestablish the connection automatically in the background if the connection to the PBX has been lost. The proxy object can use different transport methods to access the PBX. Here is an example for a connection without callback over HTTP.


   //Create a Ucpransportfactory to access the starface PBX over the HTTP protocol.
   UcpTransportFactory ucpTransportFactory = new HttpUcpTransportFactory("YOURSTARFACE", 80, false);
   //Create a UciProxyFactory with the above created Transportfactory.
   UciProxyFactory uciProxyFactory = UciProxyFactory.createWithTransportFactory(ucpTransportFactory);
   //Create a proxy with the given credentials
   uciProxy = uciProxyFactory.createUciProxy("0001", "PASSWORD");
   //Establish the connection to the starface PBX
   uciProxy.connect();

Please replace "YOURSTARFACE", "0001" and "PASSWORD" with the host name, your user id and your password.

The next step is to create a so called  "Request Object". Every access able function in the starface PBX is handled by this objects. Here is a list of all Request Objects and their use:

Request Object Use
UciCallListRequests Get and manipulate the call list
UciCallRequests start and end telephone calls or get the state of your telephone
UciFaxListRequests Get and manipulate the list of your faxes or get the transmission report of a fax.
UciFaxRequests Send new Faxes
UciFunctionKeyRequests Get manipulate and press the function keys of your telephone
UciGroupRequests Get and set Group settings
UciPhoneRequests Manage your phones or set your primary phone
UciRedirectRequests Change the redirect settings of your telephones
UciUserStateRequests Get and set your avatar and manipulate your presence awareness status.
UciVoicemailListRequests Get and manipulate the list of your voice mails

And here is the code to access your call list and write all inbound calls to the console.

   // Get a CallListRequest Object to access the calllist
   UciCallListRequests requests = uciProxy.getRequests(UciCallListRequests.class);
   // Get the inbound calllist for the lastday with no group calls,
   // ordered by startTime Ascending. If there are more then 1000
   // entries only the the first 1000 will be retrieved.
   CallList callList = requests.getCallList(new Date(), new Date(new Date().getTime() - 86400000),
     CallListEntryDirection.INBOUND, null, GroupRestriction.NON_GROUP,
     CallListEntryProperties.startTime, OrderDirection.ASCENDING, 0, 1000);
   // Create date and timeformater
   DateFormat df = SimpleDateFormat.getDateInstance();
   DateFormat tf = SimpleDateFormat.getTimeInstance();
   // Iterate through the callist entries and print every entry to
   // standard out.
   for (CallListEntry entry : callList.getEntries()) {
    System.out.println(entry.getId() + "/" + entry.getCalledNumber() + "/" + entry.getCallerNumber() + "/"
      + df.format(entry.getStartTime()) + " " + tf.format(entry.getStartTime()) + "/"
      + entry.getDuration());
   }

So you can see that the UCI API is very easy to use and with only a few lines of code you can access many information's in your PBX which are normally only available in the web interface. In the next post in the starface series i will show you how to get notifications about events occurring in the PBX. So stay tuned.

Tuesday, June 25, 2013

Download and configure the Starface UCI Java API in Eclipse

The first step to build a first class CTI plugin is to get a test environment where you can try out functions of the new java api without the complexity of the whole Notes client plugin system.

First of all, download the UCI Java API from the starface website and expand it to a folder on your harddisk. Unfortunatly the log4j.jar is missing in the UCI Java API download. So you have to download the log4j.jar from http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip and copy the log4j.jar from this zip to the "starface-uci-proxy-java-2.2.0\lib" folder in the UCI Java API folder.

Create a new Java Project for your Tests in your Eclipse IDE.


Right click your new Java project and select "Build path->Configure Build Path..."


 In the Build Path Configuration select the "Libraries" Tab and click the "Add External JARs..." Pushbutton.

In the File selection dialog go to the directory where you have expanded the UCI Java API in Step 1 and add all jars in the "starface-uci-proxy-java-2.2.0\lib" folder to your build configuration.


Repeat the same steps to add the "starface-uci-proxy-2.2.0.jar" in the "starface-uci-proxy-java-2.2.0" folder to your build path configuration.

As an optional but very recommended step you can add the javadoc of the API to your build configuration. To do so expand the "starface-rpc.*.jar", click the Javadoc location line and select Edit.


In the following Dialog select "Browse" and browse to the location of the "starface-uci-proxy-java-2.2.0\docs\starface-rpc" folder.

Repeat the steps to add the Java doc for starface-uci and starface-uci-proxy too.

Now your "Build path configuration" should look like this:


To test if everything has been configured correctly create a new Java class in your new Java project and paste the following code to the main function.

 public static void main(String[] args) {
  UciProxy proxy = null;
  try {
   UcpTransportFactory ucpTransportFactory = new HttpUcpTransportFactory(
     Inet4Address.getLocalHost().getHostAddress(), 8181,
     "starfacehost", 80, false, null, null);
   final UciProxyFactory uciProxyFactory = UciProxyFactory
     .createWithTransportFactory(ucpTransportFactory);
   UciProxy uciProxy = uciProxyFactory.createUciProxy("userID",
     "password");
   uciProxy.connect();
   proxy = uciProxy;

  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (UcpConnectionFailedException e) {
   e.printStackTrace();
  } finally {
   if (proxy != null)
    proxy.disconnect();
  }
 }

You have to replace "starfacehost" "userID" and "password" with the correct values of your environment. When you run the programm you should see the following status message in the console view.

08:40:06,139 DEBUG openTransportAndAttach: Connecting to UCP server...
08:40:06,172 DEBUG Sending RPC request: ucp.v22.requests.connection.login() to http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,234 DEBUG Incoming RPC return value: true from http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,234 DEBUG Sending RPC request: ucp.v22.requests.service.subscribeEvents("ucp.v22.events.connection") to http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,234 DEBUG Incoming RPC return value: true from http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,234 INFO  shutdown: RPC server is currently not running.
2013-06-25 08:40:06.250:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
2013-06-25 08:40:06.282:INFO::jetty-6.1.24
2013-06-25 08:40:06.297:INFO::Started SocketConnector@0.0.0.0:8181
08:40:06,297 DEBUG Registered  RpcMethod [name=ucp.v22.events.connection.reset, method=public abstract void de.starface.integration.uci.java.v22.ucp.messages.events.UcpConnectionEvents.reset(), requiredAuthType=null, object=RpcObject [rpcInterface=interface de.starface.integration.uci.java.v22.ucp.messages.events.UcpConnectionEvents, namePrefix=null, requiredAuthType=class de.starface.integration.uci.v22.client.transport.http.LoginUrlAuthToken, name=ucp.v22.events.connection]]
08:40:06,297 DEBUG Successfully registered RpcObject [rpcInterface=interface de.starface.integration.uci.java.v22.ucp.messages.events.UcpConnectionEvents, namePrefix=null, requiredAuthType=class de.starface.integration.uci.v22.client.transport.http.LoginUrlAuthToken, name=ucp.v22.events.connection]
08:40:06,297 DEBUG openTransportAndAttach: Connecting to UCP server...
08:40:06,297 INFO  onConnectionEstablished: Connection to UCP server successfully initialized.
08:40:06,297 DEBUG startReconnectTimer: Activating reconnect timer.
08:40:06,297 DEBUG resubscribeAllEvents: Resubscribing all UCP events...
08:40:06,297 DEBUG resubscribeAllEvents: Finished resubscribing events.
08:40:06,297 INFO  onConnectionEstablished: Connection to UCP server successfully initialized.
08:40:06,297 DEBUG stopReconnectTimer: Deactivating reconnect timer.
08:40:06,297 DEBUG closeTransportAndDetach: Disconnecting from UCP server...
08:40:06,297 DEBUG Sending RPC request: ucp.v22.requests.connection.logout() to http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,297 DEBUG Incoming RPC return value: true from http://starfacehost:80/xml-rpc?de.vertico.starface.auth=edb03a2ba7cca2c7b8100dfdedc83ba0&de.vertico.starface.user=userID&de.vertico.starface.callback.type=http&de.vertico.starface.callback.host=172.16.2.85&de.vertico.starface.callback.port=8181&de.vertico.starface.callback.path=/
08:40:06,297 DEBUG shutdown: Shutting down RPC server...
2013-06-25 08:40:06.297:INFO::Stopped SocketConnector@0.0.0.0:8181
08:40:06,407 DEBUG shutdown: RPC server shut down.
08:40:06,407 INFO  closeTransportAndDetach: Successfully disconected from UCP server.
08:40:06,407 INFO  shutdown: RPC server is currently not running.



Wednesday, June 19, 2013

A new toy has arrived

Last week we got a new toy to play at our company. A Starface PBX which will possibly replace our old Ericsson PBX system. The Starface PBX is built on Opensource technology like Asterisk and Hylafax with a proprietary Web UI. The system is very easy to administrate and you can connect the PBX over IP trunks or ISDN Links to the telephony providers. My task in the evaluation process is to check if i can build a first class CTI Solution which integrates with our custom CRM and ERP System. So stay tuned if you are interested in informations how to place calls, get calllists or make configuration changes of your telephone from the Notes client.

ad