ACQUISTA

Applicazioni

Molte applicazioni CommuniGate Pro come PBX, WebMail e altre, usano il linguaggio CG/PL, simile a JavaScript. CommuniGate Pro rappresenta una piattaforma universale per lo sviluppo e l'utilizzo di varie applicazioni per Internet, telefonia, posta elettronica e groupware, mentre altri linguaggi usano numerose applicazioni "standard" o "stock".

Le applicazioni basate su CG/PL hanno accesso a tutti i componenti e sottosistemi CommuniGate Pro, tra cui strumenti di salvataggio e-mail e groupware, nonché VoIP, archiviazione file, client di messaggistica istantanea e servizio di segnalazione stato presente/assente, servizio di fatturazione e amministrazione.

Essendo profondamente integrato in CommuniGate Pro, l'ambiente CG/PL risulta più efficace di altri ambienti basati su Java.

Il protocollo XIMSS costituisce una base per lo sviluppo da parte del cliente. XIMSS, come anche CG/PL, fornisce accesso alla posta elettronica, client di messaggistica istantanea, programmi groupware, VoIP e molti altri sottosistemi, con un singolo protocollo XML. Le librerie XIMSS incorporate semplificano notevolmente lo sviluppo di client per la comunicazione. Sono disponibili per JavaScript, Java (incluso Android) e Objective C (incluso iPhone).

Ulteriori informazioni...

Ulteriori informazioni sul linguaggio di programmazione CommuniGate Pro (CG/PL) sono disponibili nel manuale.

Ulteriori informazioni sugli strumenti del server CommuniGate Pro per:

sono disponibili nella voce API.

Applicazioni PBX sul server Communigate Pro.

Consideriamo un semplice esempio: un'applicazione per registrare il numero telefonico del cliente.

Il vantaggio principale di CommuniGate Pro rispetto ad altri sistemi è il linguaggio unificato del server per tutti i moduli: chiamate, posta elettronica, calendario. Questo significa che in un unico programma possiamo ricevere chiamate, riprodurre il menu vocale, ricevere DTMF e servirci di queste informazioni per scrivere successivamente mail, SMS ed eventi di calendario.

Come esempio, scriviamo un programma per registrare il numero di telefono del cliente.

Il programma deve:

Per prima cosa, un po' di teoria.

I segnali

In CommuniGate Pro il server stabilisce una comunicazione in "tempo reale" (o real-time in inglese): IM, SMS, connessione vocale. Il segnale è un'unità elementare utilizzata dal server in tutti i moduli che assistono la comunicazione real-time (SIP, XMPP, SMPP, XIMSS) per trasmettere informazioni sulla partenza, l'interruzione o la modifica di stato della connessione.

Per determinare gli indirizzi in tutti questi protocolli vengono utilizzati AOR (Address Of Registration) che, come formato, corrispondono all'indirizzo di posta elettronica. Per questo sul server gli AOR coincidono con gli indirizzi di posta elettronica e rappresentano il nome completo dell'account.

Per i segnali, come anche per le mail, sono disponibili diverse opzioni che consentono di modificare i destinatari: tabella di routing, strumento di forwarding, diritti utente per i segnali in arrivo.

Avvio dei programmi. Linguaggio CG/PL

CommuniGate Pro è in grado di eseguire i programmi nel semplice ma potente linguaggio CommuniGate Programming Language (CG/PL). Per ciascun modulo e funzionalità esiste un set di funzioni incorporate nel linguaggio. Sono supportati due stili:

//
// 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) + "..";
 }
}

I programmi PBX sono inoltre realizzati in CG/PL e integrati nell'ambiente: un set di file dai programmi CG/PL, file ausiliari (es. audio) e cartelle di supporto in diverse lingue.

Esistono sia un ambiente PBX a livello di server (pagina Users->PBX in interfaccia WebAdmin), sia ambienti relativi a ciascun dominio (Users->Domains->[Domain]->PBX). Quando il programma PBX, avviato da un determinato account, richiede un file dall'ambiente, la ricerca va effettuata dapprima in un ambiente di dominio e solo successivamente in quello del server.

Il modo più semplice per avviare il programma CG/PL è inviare un segnale all'indirizzo nel formato: pbxAppName#account@domain.com, il server, quindi, lancia l'attività per eseguire il programma registrato nel file pbxAppName.sppr (questo file deve essere nell'ambiente PBX del dominio domain.com, oppure nell'ambiente del server) da parte dell'account richiedente account@domain.com (in questo caso il segnale sarà trasferito all'attività appena creata).

Utente pbx

Questo utente è usato per il funzionamento della maggior parte dei programmi PBX installati sul server come opzione predefinita.

Questo utente è associato già a una regola real-time:

La regola si attiva su qualsiasi segnale presente nell'account e richiama il programma dal file "pbx.sppr (centro PBX) da parte dell'account pbx. Il programma pbx.sppr è piuttosto complesso e offre diverse funzioni a seconda della modalità di richiamo.

Poiché il segnale di partenza viene trasmesso al programma, è possibile impostare diversi comportamenti a seconda del nome/alias dell'utente che effettua la chiamata. Ad esempio, alla chiamata da pbx#pbx@domain.com viene avviata la segreteria telefonica, mentre alla chiamata da pbx#conference@domain.com viene avviato il centro conferenze.

L'utente pbx ha inoltre un alias 200, che rappresenta il numero di estensione. Viene usato per le chiamate con i telefoni fissi.

Segreteria telefonica

La segreteria telefonica è un programma che implementa il menu gerarchico standard con opzioni a scelta. In quanto fornito insieme al server, la sua interfaccia è disponibile in WebAdmin, in modo da consentire l'interazione sulla pagina [Account, in questo caso pbx]->Real-Time->Advanced. Vediamo come si presenta questa pagina per impostazione predefinita:

Algoritmo del programma:

Configuriamolo in modo che all'avvio venga riprodotto il seguente messaggio:

Società "Esperti", buongiorno! Per parlare con l'esperto Ivanov premere 1, per parlare con l'esperto Petrov premere 3, altrimenti attendere la risposta della segreteria.

Poiché i messaggi saranno in lingua russa, è necessario creare un'apposita cartella per la lingua nell'ambiente PBX di dominio e cambiare la lingua dell'interfaccia dell'utente pbx dal cui nome è avviato il programma, per il russo. Nella pagina pbx->Preferences nell'impostazione "Language" selezionare "Russian". Nella pagina [Dominio]->PBX fare clic su "Create Custom Environment" per modificare l'ambiente PBX del dominio:

Comparirà l'elenco dei file che compongono l'ambiente PBX del dominio. La parola "parent" a sinistra del nome del file indica che il file viene preso dall'ambiente a livello di server.

Passare nella parte inferiore dell'interfaccia e creare una sottocartella per la lingua russa:

Registrare i 4 file e caricarli nella cartella appena creata: russian.

welcome.wav //Buongiorno
dialknownextension.wav //avete chiamato la società Esperti. Comporre, se noto, il numero interno dell'utente desiderato.
forivanov.wav // Per parlare con l'esperto Ivanov
press.wav// premere
0.wav, 1.wav,3.wav // numeri
forpetrov.wav // per parlare con l'esperto Petrov
tospeakopertator.wav // o attendere la risposta della segreteria
tryingextension.wav // comporre il numero dell'utente
failure.wav // errore

Affinché i file for***.wav vengano riprodotti, è necessario modificare le relative impostazioni in [pbx]->Real-Time->Advanced:

È inoltre necessario aggiungere al dominio gli account con i nomi ivanov, petrov e operator. Per controllare, aprire un account qualsiasi in Pronto e digitare 200 o pbx nel modulo Dialer.

Impostazione degli orari degli esperti

Vogliamo che durante le ore non lavorative di un esperto le chiamate siano inoltrate al programma PBX con un nome specifico, es. callback (che chiede all'utente il numero di telefono e pianifica una richiamata).

A tal fine accedere agli account ivanov, petrov e operator, passare alla pagina [account]->Preferences e impostare working hours nella voce Calendars.

Passare quindi alla sezione [account]->Real-time->Incoming call Rules e impostare Divert calls ->when: afterhours, To: #callback:

Poiché durante la configurazione conviene che le chiamate siano sempre inoltrate, impostare provvisoriamente Divert Call -> When:always, To: #callback.

Se, dopo queste impostazioni, si chiama l'utente, Pronto avvisa dell'errore "Failed to load PBX application code" (se la chiamata viene effettuata tramite la segreteria telefonica verrà riprodotto failure.wav).

L'errore è dovuto al fatto che il programma callback non esiste ancora nell'ambiente PBX di dominio. Ci occuperemo di questo nel prossimo paragrafo.

Scriviamo il programma CG/PL

Il programma esegue 3 serie di azioni:

È possibile scrivere il programma in qualsiasi editor di testo. Il file viene memorizzato in formato Plain Text con il nome "callback.sppr".

Il testo del programma non è complicato ed è composto da circa 20 righe. Ulteriori spiegazioni sono fornite nei commenti:

// "entry Main" è l'istruzione di partenza per ogni programma CG/PL
entry Main is

// ricevere la chiamata in arrivo, se non è possibile allora terminare
if AcceptCall() != null then stop; end if; 

// riprodurre i file .wav
PlayFile("CallbackBusy"); 
PlayFile("CallbackLater");
PlayFile("CallbackNumber");
PlayFile("CallbackClearNumber");

// inizializzare una variabile in cui verrà memorizzato il numero
accumulator = ""; 

loop
 // in un ciclo leggere dal buffer le cifre DTMF, una per una, con un time-out di 20 secondi
 input = ReadInput(20);
 // in caso di presenza del cancelletto o di un simbolo non DTMF (la funzione ReadInput non recupera esclusivamente DTMF) terminare la registrazione del numero
exitif not IsString(input) or input == "#";
 // se l'utente commette un errore mentre digita il numero, è possibile ridigitarlo premendo "*"
 if input == "*" then accumulator = "";PlayFile("CallbackClearNumber"); 
end if;
 accumulator = accumulator + input; // aggiungere il prossimo simbolo
end loop;

// se alla fine il numero non c'è (l'utente ha terminato la chiamata o ha cambiato idea), uscire:
if accumulator == "" then stop; end if;

// cercare di inviare l'e-mail, se l'invio riesce, allora chiedere di richiamare
if SendEmail("CallbackMailer@"+ MyDomain(),"Richiamare il numero:"+ accumulator,MyEmail(),null,"") != null
then 
 PlayFile("Failure"); 
 PlayFile("CallbackNotAvailable"); else
 PlayFile("CallbackTrailer");
end if;
end;

Per analogia con l'account pbx, sulle pagine [ivanov e petrov]->Preferences, "Language" impostare "Russian". Il programma callback viene riprodotto dagli account interessati e i file audio vengono registrati in russo.

Per completare l'installazione caricare callback.sppr in [Dominio]->PBX e caricare tutti i file .wav nella sottocartella "russian" sulla stessa pagina. In caso di elevati numeri di file, è conveniente caricarli in un archivio .tar (il server è in grado di aprire l'archivio e aggiungere i file all'ambiente)