COMPRAR

Aplicaciones

Muchas de las aplicaciones CommuniGate Pro como PBX, WebMail etc. utilizan el lenguaje CG/PL similar al lenguaje JavaScript. Mientras que otros lenguajes utilizan un gran conjunto de aplicaciones "estándares" o "de stock", CommuniGate Pro es una plataforma universal para el desarrollo y la aplicación de varias aplicaciones para el trabajo en Internet, la telefonía, el correo electrónico, y aplicaciones para la organización de trabajo colectivo.

Las aplicaciones a base de CG/PL pueden obtener acceso a todos los componentes y subsistemas de CommuniGate Pro, incluyendo el almacenaje de mensajes de correo electrónico y organización colectiva del trabajo, VoIP, almacenaje de archivos, los clientes de mensajería instantánea y el servicio de estado de presencia, servicio de facturación y administración.

Al estar profundamente integrada en CommuniGate Pro, el entorno CG/PL es más eficaz que otros entornos basados en Java.

El protocolo de XIMSS proporciona la base para el desarrollo por parte del cliente. Como CG/PL, XIMSS también proporciona acceso al correo electrónico, clientes de mensajería instantánea, programas de la organización colectiva de trabajo, VoIP y muchos otros subsistemas y todo esto con el uso de un protocolo XML. XIMSS que forman parte de la biblioteca simplifican el desarrollo de clientes para la comunicación. Están disponibles en JavaScript, Java (incluyendo Android) y Objective C (incluyendo iPhone).

Más detalles...

Más detalles sobre el lenguaje de programación. El lenguaje de Programación CommuniGate Pro (CG/PL) se puede obtener leyendo el manual.

Más información sobre el conjunto de herramientas de las que dispone el servidor CommuniGate Pro para:

se puede ver en la página de API.

Aplicaciones PBX en el servidor Communigate Pro.

Veamos un simple ejemplo - una aplicación para la grabación del teléfono de contacto del cliente.

La principal ventaja de CommunigatePro ante otros sistemas, es un lenguaje de servidor para todos los módulos - llamadas, correo electrónico, calendarios. Es decir, podemos en un solo programa recibir una llamada, reproducir un menú de voz, aceptar DTMF y formar a base de este DTMF mensajes, SMS, eventos de calendario.

Como ejemplo vamos a escribir un programa para la grabación del teléfono de contacto del cliente.

El programa debe:

Para empezar, un poco de teoría.

Señales

En CommunigatePro es un servidor que proporciona la comunicación en "tiempo real" (de aquí en adelante real-time) — IM, SMS, llamadas de voz. La señal es una tarea elemental realizada por el servidor para comunicaciones real-time, utilizada por todos los módulos que proporcionan la comunicación real-time — SIP, XMPP, SMPP, XIMSS para la transmisión de información sobre el inicio, la ruptura y los cambios de estado de la conexión.

Para determinar a los destinatarios en todos estos protocolos se utilizan AOR (address of registration), que por el formato corresponden a la dirección de correo electrónico, por lo tanto, en el servidor AOR para las señales coincide con la dirección de correo electrónico y es simplemente el nombre completo de la cuenta de usuario.

Al igual que los mensajes para las señales, está disponible el conjunto de opciones que permiten cambiar a los destinatario — la tabla de redireccionamiento, reenvíos, reglas de usuario para las señales de entrada.

La ejecución de programas. Lenguaje CG/PL

CommunigatePro puede realizar programas en un lenguaje simple y potente CommuniGate Programming Language (CG/PL). Para cada módulo y de funcionalidad hay un conjunto de funciones integrados en el idioma. Son compatibles dos estilos:

//
// A simple CG/PL application
// Basic style
//
entry Main is
 myName = "Jim" + " " + "Smith";
 if length(myName) > 10 then
 myName = Substring(myName,0,8) + "..";
 end if;
end;

/*
 * A simple CG/PL application
 * C style
 */
entry Main {
 myName = "Jim" + " " + "Smith";
 if(myName.length() > 10) {
 myName = myName.substring(0,8) + "..";
 }
}

Los programas PBX se escriben en CG/PL y están organizados en un entorno/ambiente - conjunto de ficheros de programas CG/PL, archivos auxiliares (por ejemplo, audio) y carpetas para la compatibilidad de diferentes idiomas.

Existe un entorno PBX de servidor (página Users->PBX en en la interfaz WebAdmin) y de dominio para cada dominio (Users->Domains->[Domain]->PBX). Cuando el programa PBX pone en marcha el nombre de alguna cuenta, solicita el fichero del ambiente, la búsqueda primero se realiza en el ambiente de dominio, y luego en el de servidor.

La forma más sencilla de poner en marcha el programa CG/PL es enviar la señal a la dirección de formato: pbxAppName#account@domain.com y el servidor pondrá en marcha la tarea que ejecute el programa registrado en el fichero pbxAppName.sppr (este fichero tiene que encontrarse en el entorno PBX del dominio domain.com o en el entorno de servidor) del nombre de la cuenta account@domain.com (la señal se transmitirá en la tarea recién creada).

Usario pbx

Este usuario está diseñado para el funcionamiento de la mayoría de programas PBX instalados por defecto en el servidor.

Este usuario inicialmente tiene una regla real-time:

La regla funciona a cualquier señal que ha entrado en la cuenta y llama el programa del fichero "pbx.sppr" (PBX centro) del nombre de la cuenta pbx. El programa de pbx.sppr es bastante complicado y ofrece diferentes opciones dependiendo de la forma de su llamada.

Como la señal de inicio se transmite al programa, podemos programar diferentes comportamientos del programa dependiendo del nombre/seudónimo del usuario que ha realizado la llamada, por ejemplo, cuando se llama a pbx#pbx@domain.com se inicia el auto-secretario, y si llama a pbx#conference@domain.com trabaja el centro de conferencias.

Además de esto, el usuario pbx tiene alias 200, que es una extensión. Está diseñado para hacer llamadas de teléfonos de "hierro".

Auto-secretario

El auto-secretario es un programa que implementa el menú estándar jerárquico con la selección. Ya que se suministra junto con el servidor, en WebAdmin hay una interfaz para interactuar con ella en la página [Account, en este caso pbx]->Real-Time->Advanced. Vamos a ver como esta página se ve por defecto:

El algoritmo del programa es el siguiente:

La ajustamos de tal manera para que en el inicio suene el siguiente mensaje:

Hola, es la empresa "Especialistas", para el especialista Ivanov pulse 1 para el especialista Petrov pulse 3 o espere la respuesta del secretario.

Dado que los mensajes serán en ruso, es necesario crear una carpeta específica para el idioma en el entorno PBX del dominio y cambiar el lenguaje de interfaces de usuario pbx, desde cuyo nombre se inicia el programa al ruso En la página pbx->Preferences en la configuración "Language" ponemos "Russian". En la página [Dominio]->PBX, haga clic en el botón "Create Custom Environment", para cambiar el PBX entorno en el dominio:

Se ha abierto una lista de fiheros que forman el entorno PBX del dominio. La palabra "parent" a la izquierda del nombre del fichero signifíca que el fichero se toma del entorno genera del servidor.

Vamos a la parte inferior de la interfaz y creamos una subcarpeta para el idioma ruso:

Grabamos 4 ficheros y los descargamos en la carpeta recién creada russian.

welcome.wav //Buenos días
dialknownextension.wav // Esta llamando a la compañía Especialistas pulse el número corto del abonado si lo sabe.
forivanov.wav // para el especialista Ivanov
press.wav// pulse
0.wav, 1.wav,3.wav // cifras
forpetrov.wav // para el especialista Petrov
tospeakopertator.wav // o espere la respuesta del secretario
tryingextension.wav // marco al abonado
failure.wav // error

Para que los ficheros for***.wav se reproduzcan hay que cambiar la configuración [pbx]->Real-Time->Advanced a estos:

También es necesario añadir al dominio las cuentas de usuario con los nombres ivanov, pertrov y operator. Para comprobar abrimos cualquier cuenta de usuario en Pronto y marcamos en el Dialer módulo 200 o pbx.

Establecemos las horas laborales para los especialistas

Queremos que fuera de las horas de trabajo de un especialista, las llamadas se envíen al programa PBX con un nombre específico, por ejemplo callback (que pregunta al usuario el teléfono de contacto y promete devolver la llamada).

Para eso, en todas las cuentas Ivanov, Petrov y operator entramos a la página [account]->Preferences y establecemos la configuración working hours en el grupo de configuración Calendars.

Luego hay que entrar a la sección [account]->Real-time->Incoming call Rules y activar Divert calls ->when: afterhours, To: #callback:

Ya que en el momento de la configuración para nosotros es más cómodo que las llamadas se reenvíen, establecemos temporalmente Divert Call -> When:always, To: #callback.

Si después de esta configración llamamos a un usuario, Pronto generará un error "Failed to load PBX application code" (si la llamada es a través del auto-secretario se activará failure.wav).

Se relaciona con el hecho de que el programa callback todavía no existe en el PBX entorno del dominio, nos ocuparemos de ella en el siguiente párrafo.

Escribimos el programa CG/PL

El programa realiza 3 tipos de acción:

El programa se puede escribir en cualquier editor de texto, el fichero guarda en el formato Plain Text formato con el nombre "callback.sppr".

El texto del programa no es complicado, cerca de 20 líneas; encontrará explicaciones más detalladas en la sección de comentarios:

// "entry Main" es el punto de entrada para cualquier programa CG/PL
entry Main is

// contestamos la llamada entrante, si no se ha logrado nos detenemos
if AcceptCall() != null then stop; end if; 

// activamos .wav ficheros
PlayFile("CallbackBusy"); 
PlayFile("CallbackLater");
PlayFile("CallbackNumber");
PlayFile("CallbackClearNumber");

// iniciamos la variable en la que se va a guardar el número 
accumulator = ""; 

loop
 // en el ciclo leemos desde el búfer una DTMF cifra con el tiempo de espera de 20 segundos
 input = ReadInput(20);
 // si está la rejilla o no está el símbolo DTMF (función ReadInput devuelve no sólo DTMF) terminamos la grabación del número
exitif not IsString(input) or input == "#";
 // si el usuario se ha equivocado en el proceso de marcación, se puede empezar de nuevo haciendo clic en "*";
 if input == "*" then accumulator = "";PlayFile("CallbackClearNumber"); 
end if;
 accumulator = accumulator + input; // agregamos la siguiente señal
end loop;

// si al final no tenemos el número - han colgado el teléfono o simplemente no han marcado, salimos:
if accumulator == "" then stop; end if;

// tratamos de enviar un mensaje; si no ha resultado pedimos a devolver la llamada
if SendEmail("CallbackMailer@"+ MyDomain(),"Richiamare il numero:"+ accumulator,MyEmail(),null,"") != null
then 
 PlayFile("Failure"); 
 PlayFile("CallbackNotAvailable"); else
 PlayFile("CallbackTrailer");
end if;
end;

Por analogía con la cuenta de pbx, en las páginas [ivanov y petrov]->Preferences, "Language" ponemos "Russian". El programa callback se reproduce desde el nombre de estas cuentas y los archivos de audio están grabados en ruso.

Para completar la instalación de callback.sppr cargamos en [Dominio]->PBX y todos los .wav archivos en la subcarpeta "russian" en la misma página. Es cómodo subir una gran cantidad de ficheros por un .tar archivo (el servidor lo descomprimirá y agregará los ficheros en el entorno).