Applications
Les applications basées sur le langage CG/PL peuvent accéder à tous les composants et sous-systèmes de CommuniGate Pro, y compris le stockage des emails et de l'organisation collective du travail, la VoIP, le stockage de fichiers, les clients de messagerie instantanée et le service de l'état de présence, le service de facturation et l'administration.
Profondément intégré à CommuniGate Pro, l'environnement CG/PL est plus efficace que les autres environnements basés sur Java.
Le protocole XIMSS fournit une base pour la conception à réaliser par le client. Tout comme CG/PL, XIMSS permet d'accéder à la messagerie électronique, aux clients de messagerie instantanée, aux programmes pour l'organisation de travail collectif, au VoIP et à de nombreux autres sous-systèmes et tout cela avec un seul protocole XML. Les bibliothèques contenues dans XIMSS facilitent énormément le développement des clients pour la communication. Elles sont disponibles sur JavaScript, Java (y compris Android) et Objective C (y compris iPhone).
Plus de détails sur le langage de programmation. Le langage de programmation CommuniGate Pro (CG/PL) peut s'apprendre à l'aide du manuel.
Plus de détails sur le jeu d'outils à la disposition du serveur CommuniGate Pro pour:
- Automatisation des tâches administratives
- Traitement des messages et appels
- Connexion d'autres programmes et scripts
- Construction d'interfaces HTML
- Création de clients UC et d'utilitaires sur diverses plate-formes
Il est possible de les consulter sur la page API.
Analysons un exemple des plus simples : une application pour enregistrer le numéro de téléphone du client.
Le principal avantage de CommunigatePro par rapport aux autres systèmes est le langage unique du serveur pour tous les modules - d'appels, de messagerie électronique et de calendriers. Ce qui signifie qu'il est possible dans un seul programme de recevoir un appel, reproduire le menu vocal, recevoir un DTMF et rédiger sur la base de ce DTMF des courriers, des SMS, des événements de calendrier.
À titre d'exemple, rédigeons un programme pour enregistrer le numéro de téléphone du client.
Le programme devra :
- Reproduire le menu de démarrage avec la sélection des spécialistes par nom.
- Le spécialiste répond à l'appel pendant les heures ouvrables. Le reste du temps, l'application déclenche le message suivant : "Nous vous rappellerons".
- Nous proposons de saisir le numéro de téléphone. Après l'avoir entré, nous envoyons un courrier électronique à l'utilisateur ayant appelé le client.
Tout d'abord, un peu de théorie.
Signaux
Dans CommunigatePro, il s'agit d'un serveur assurant une communication en "temps réel" (ci-après "real-time") : IM, SMS, communications vocales. Le signal est une tâche élémentaire effectuée par le serveur pour les communications en temps réel (real-time). Ils sont utilisés par tous les modules assurant la communication real-time - SIP, XMPP, SMPP, XIMSS afin de transmettre des informations sur le début, les interruptions et les changements du statut de la connexion.
Pour déterminer la destination de tous ces protocoles, on utilise des AOR (adresse d'enregistrement) qui correspondent en raison du format à l'adresse email, de sorte que sur le serveur les AOR pour les signaux coïncident avec l'adresse email et représentent simplement le nom complet du compte.
Comme pour les courriers électroniques, un ensemble de paramètres est disponible pour les signaux, ce qui permet de changer la destination : la table de routage, les expéditeurs (forwarders)et les règles personnalisées pour les signaux entrants.
Lancement de l'application. Langage CG/PL
CommunigatePro est capable d'exécuter des programmes en langage simple et puissant de CommuniGate Programming Language (CG/PL). Pour chaque module et fonctionnalité, il existe un ensemble de fonctions intégrées dans le langage. Deux styles sont supportés :
// // A simple CG/PL application // Basic style // la principale entrée est 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) + ".."; } }
Les programmes PBX sont écrits en langage CG/PL et organisés dans un environnement qui est un ensemble de fichiers de programmes CG/PL, de fichiers auxiliaires (par exemple, audio) et de dossiers pour supporter les différents langages.
Il existe un environnement PBX commun à tous les serveurs (page Users->PBX dans l'interface WebAdmin) et les environnements de domaine pour chaque domaine (Users->Domains->[Domain]->PBX). Par conséquent, lorsque le programme PBX en cours d'exécution au nom d'un certain compte demande un fichier de l'environnement, il le fera tout d'abord dans l'environnement de domaine, puis dans l'environnement de serveur.
Le moyen le plus simple de lancer le programme CG/PL est d'envoyer un signal à l’adresse au format suivant : pbxAppName#account@domain.com, à cet instant le serveur lancera la tâche qui exécute le programme enregistré dans le fichier pbxAppName.sppr (ce fichier doit être dans l'environnement PBX du domaine @domain.com ou dans l'environnement de serveur) au nom du compte account@domain.com (le signal sera donc transféré à la nouvelle tâche).
Utilisateur pbx
Cet utilisateur est destiné au fonctionnement de la plupart des programmes PBX installés sur le serveur par défaut.
Cet utilisateur a initialement une règle real-time :
La règle est déclenchée pour n'importe quel signal obtenu dans le compte et appelle le programme à partir du fichier "pbx.sppr" (centre PBX) au nom du compte pbx. Le programme pbx.sppr est assez complexe et offre diverses fonctions selon la façon dont il est lancé.
Étant donné que le signal de départ est transmis au programme, il est possible de définir le comportement différent du programme en fonction du nom/pseudonyme de l'utilisateur qui a passé l'appel. Par exemple, lors de l'appel de pbx#pbx@domain.com, le secrétaire automatique se déclenchera, et lors de l'appel de pbx#conference@domain.com, le centre de conférence se mettra à fonctionner.
De plus, l'utilisateur pbx dispose du pseudonyme 200, qui est un numéro d'extension. Il est destiné aux appels depuis des téléphones fixes.
Secrétaire automatique
Le secrétaire automatique est un logiciel qui réalise un menu standard hiérarchique de sélection. Comme il offre un ensemble avec le serveur, WebAdmin a une interface qui permet d’interagir avec celui-ci sur la page [Account, dans ce cas pbx]->Real-Time->Advanced. Voyons à quoi ressemble cette page par défaut :
L'algorithme du programme est comme suit :
- il reproduit welcome.wav et dialknownextension.wav
- il reproduit for[name].wav pour chaque item [name] du menu départment. Un numéro d'ordre est attribué à chaque département. Par conséquent, les chiffres du Directory Prefix sont omis (ils sont réservés aux extensions), et si la liste contient le terme "operator", alors cet item sera toujours reproduit le dernier et il correspondra au chiffre 0.
- Après avoir sélectionné le département, l'appel est envoyé au compte avec le même nom que celui du département.
On le configure de la manière suivante pour que lors du lancement, le message suivant soit reproduit :
Bonjour, c'est la société "Spécialistes", pour le spécialiste Ivanov tapez 1, pour le spécialiste Petrov, tapez 3, sinon veuillez attendre la réponse du secrétaire.
Comme les notifications seront en russe, il est nécessaire de créer un dossier indépendant pour la langue dans l'environnement PBX du domaine et changer la langue d'interface de l'utilisateur pbx, au nom duquel est lancé le programme en russe. Sur la page pbx-> Préférences dans le paramètre "Langue", mettre "Russian". Sur la page [Domaine]->PBX, cliquez sur le bouton "Créer un environnement personnalisé" afin de changer l'environnement de PBX dans le domaine :
La liste des fichiers de l'environnement PBX dans le domaine s'affichera. Le mot "parent" à gauche du nom de fichier indique que le fichier est pris de l'environnement commun des serveurs.
Faire défiler dans la partie inférieure de l'interface et créer un sous-dossier pour la langue russe:
Sauvegarder 4 fichiers, puis les télécharger dans le dossier nouvellement créé et nommé "russian".
welcome.wav // Bonjour
dialknownextension.wav // Vous appelez la société Spécialistes, composez le numéro abrégé de l’abonné si vous le connaissez
forivanov.wav // pour le spécialiste Ivanov
// tapez
0.wav, 1.wav, 3.wav // chiffres
forpetrov.wav // pour le spécialiste Petrov
tospeakopertator.wav // sinon veuillez attendre la réponse du secrétaire
tryingextension.wav // je compose le numéro de l’abonné
failure.wav // erreur
Pour reproduire les fichiers for***.wav, modifier les réglages [pbx]->Real-Time->Advanced pour ceux qui suivent :
Il faut aussi ajouter sur le domaine des comptes nommés ivanov, petrov et operator. À titre de vérification, ouvrez n'importe quel compte dans Pronto et saisissez le chiffre 200 dans le module Dialer ou pbx.
Définir les heures de consultation pour des spécialistes
Nous voulons que pour la période en dehors des horaires de travail les appels destinés à un spécialiste soient envoyés au programme PBX avec un nom spécifique, comme callback (qui demande à l'utilisateur le numéro de téléphone et promet de rappeler).
Pour cela, entrer dans tous les comptes ivanov, petrov et operator, à la page [account] -> Préférences et régler le paramètre working hours dans le groupe des paramètres Calendars.
Puis, entrer dans la section [account]->Real-time->Incoming call Rules et activer Divert calls ->when: afterhours, To: #callback:
Lors du réglage, il est plus pratique que les appels soient toujours redirigés, pour cela on réglera provisoirement Divert Call -> When:always, To: #callback.
Si, après ces réglages, un appel est passé à l'utilisateur, Pronto générera l'erreur "Failed to load PBX application code" ("Impossible de télécharger le code de l'application PBX")(en cas d'appel du secrétaire automatique, le fichier failure.wav sera reproduit).
Ceci est dû au fait que le programme callback n'existe pas encore dans l'environnement PBX du domaine, chose décrite au paragraphe suivant.
Saisir le programme CG/PL
Le programme exécute 3 ensembles d'actions :
- Il reproduit l’entrée :
- "Le spécialiste ne peut pas vous répondre pour l'instant. (callbackbusy.wav)
- Si vous le souhaitez, nous vous rappellerons ultérieurement. (callbacklater.wav)
- Composez votre numéro de téléphone, puis appuyez sur la touche #, (callbacknumber.wav)
- En cas d'erreur, appuyez sur l'astérisque, puis composez à nouveau le numéro" (callbackclearnumber.wav)
- Il lit le numéro de téléphone.
- Il génère un email et met fin à la conversation.
- "Votre numéro de téléphone est enregistré, notre équipe vous contactera dès que possible" (création d'un fichier callbacktrailer.wav)
- Si le courrier envoyé n'arrive pas à destination, nous vous préviendrons et nous arrêterons :
- "Erreur, le service n'est pas disponible, rappelez ultérieurement" (failure.wav + callbacknotavailable.wav)
Le programme peut être rédigé dans un éditeur de texte. Le fichier devra être sauvegardé au format Plain Text sous le nom "callback.sppr".
Si le texte d'un programme est simple, environ 20 lignes, les explications supplémentaires seront disponibles dans les commentaires :
// "entry Main" est le point d’accès pour tout programme CG/PL la principale entrée est // on répond à l'appel entrant, en cas d'échec on s’arrête if AcceptCall() != null then stop; end if; // reproduisons les fichiers .wav PlayFile("CallbackBusy"); PlayFile("CallbackLater"); PlayFile("CallbackNumber"); PlayFile("CallbackClearNumber"); // nous initions une variable qui contiendra le numéro accumulator = ""; loop // nous lisons dans le cycle de la mémoire tampon un chiffre DTMF dans un délai d'attente de 20 secondes input = ReadInput(20); / en cas de dièse ou d'un caractère non DTMF (la fonction ReadInput ne renvoie pas seulement un DTMF), on met fin à l'enregistrement du numéro exitif not IsString(input) or input == "#"; // si l'utilisateur a commis une erreur lors de la composition du numéro, il est possible de recommencer en appuyant sur "*" if input == "*" then accumulator = "";PlayFile("CallbackClearNumber"); end if; accumulator = accumulator + input; // ajouter le symbole suivant end loop; //si finalement il n'y a pas de numéro : raccrocher ou ne pas composer le numéro, nous obtenons : if accumulator == "" then stop; end if; // on tente d'envoyer le courrier, si cela est impossible, nous demandons de rappeler if SendEmail("CallbackMailer@"+ MyDomain(), "Vous devez rappeler le numéro suivant:" + accumulator,MyEmail(),null,"") != null then PlayFile("Failure"); PlayFile("CallbackNotAvailable"); else PlayFile("CallbackTrailer"); end if; end;
Tout comme pour le compte pbx, sur les pages [ivanov et petrov]->Preferences, "Language", on ajuste "Russian". Le programme callback est exécuté au nom de ces comptes et les fichiers audio sont enregistrés en russe.
Pour terminer l'installation callback.sppr, on charge dans le [Domaine]->PBX, et tous les fichiers .wav — dans le sous-fichier de langue "russian" sur la même page. Il est facile de charger un grand nombre de fichiers comme une archive .tar (le serveur le décompressera lui-même et ajoutera les fichiers dans l'environnement)