In questo breve articolo vedremo com’è possibile modificare l’identificativo chiamante per le chiamate in ingresso su VoiceOne. Lo scopo di questa azione è fare in modo che sul telefono compaia un nostro riferimento alfanumerico (“Amministrazione”, “N. Verde”, …) in aggiunta a quello passato dalla rete e al numero di telefono del chiamante. Questo permette a chi riceve la chiamata di avere alcune informazioni aggiuntive sulla stessa, come ad esempio la linea da cui è entrata o la scelta effettuata dall’utente nell’IVR (risponditore automatico).
Supponiamo infatti che la nostra organizzazione abbia due linee telefoniche: una intestata alla società AAA e una intestata alla società BBB. Le due società condividono lo stesso ufficio e una unica segretaria smista le chiamate per entrambe. La necessità è quindi quella di informare il posto operatore che risponde a tutte le chiamate se queste sono arrivate sulla linea della società AAA (e quindi devono essere risposte con un “Buongiorno, risponde la società AAA) o invece erano destinate alla società BBB (e quindi devono essere risposte con un “Buongiorno, risponde la società BBB). L’informazione viene passata all’operatore tramite l’identificativo chiamante che viene visualizzato sul telefono. Solitamente questo identificativo indica solamente il numero del chiamante ma è possibile aggiungere dei caratteri prima del numero: nel nostro caso aggiungeremo AAA o BBB in funzione della linea di entrata della chiamata.
Per farlo è sufficiente inserire nella macro di gestione della chiamata (ad es. incoming-call-to-extension) un parametro aggiuntivo con la conseguente possibilità di specificare una stringa testuale al momento della configurazione dell’invocazione della macro nelle regole d’ingresso o nei nodi dell’IVR. Inseriamo quindi in fondo ai parametri della macro la stringa
<param name="prefix" type="TEXTFIELD" label="Prefix" description="Prefix to add to the cid name" />
e contiamo la posizione del nostro parametro nell’elenco dei parametri. Se il nostro parametro è il sesto, potremo invocarlo all’interno del codice della macro con ${ARG6}.
N.B. l’elenco dei parametri di una macro non è modificabile se questa è in uso in una regola o in una applicazione. Per modificarla eliminate la regola o l’applicazione che la blocca e ricordate di ricrearla dopo la modifica. In alternativa potete dupplicare la macro, creandone una nuova cambiando il nome e la label, e mantenendo invariati parametri e codice a meno delle modifiche di questo tutorial (creando ad esempio la macro incoming-call-to-extension-with-cid-prefix).
Dopodichè aggiungiamo la seguente riga all’interno della macro, prestando attenzione che si trovi prima del comando Dial e che il parametro ${ARG6} sia il riferimento al parametro prefisso appena inserito (in caso contrario cambiatelo con ${ARGN} dove N è la posizione del nuovo paramtro nell’elenco di quelli della macro che state creando o modificando):
exten = s,n,Set(CALLERID(name)=${ARGN}${CALLERID(name)})
A questo punto possiamo creare due regole: una che intercetti le numerazioni della linea della prima società e scateni la macro appena modificata con impostato nel campo “Prefix” il valore “AAA”, e un’altra regola che intercetti le numerazioni della seconda società impostando questa volta come valore del campo “BBB”. Il posto operatore vedrà quindi sul monitor del telefono: AAA (seguito dal numero chiamante) per le chiamate destinate alla prima società o BBB (seguito dal numero chiamante) per quelle della seconda.
La stessa cosa può essere applicata anche alle macro scatenate dall’IVR. A che pro? Supponiamo di volere un IVR nel quale il chiamante può scegliere tra amministrazione, commerciale e ufficio personale e che queste selezioni facciano suonare gruppi diversi di telefoni. Alcuni utenti potrebbero essere inclusi in più di un gruppo ed essere interessati a sapere se il chiamante ha richiesto di parlare con un commerciale o con un amministrativo. Modificando la macro incoming-call-to-group posso fare in modo che tutti vedano anteposto al numero un riferimento che indichi la scelta fatta dal chiamante.
Attenzione: molti dispositivi non danno la possibilità di scelta sulla visualizzazione a monitor dell’identificativo chiamante. Non permettono infatti di scegliere se visualizzare il nome, il numero o entrambi. Alcuni di questi usano una logica molto semplice: se è presente solo un identificativo numerico visualizzano questo, altrimenti visualizzano solo l’identificativo nome. Seguendo quanto scritto in precedenza si va a popolare il campo nome e questo comporta che molti telefoni non visualizzino più il numero, ma solo il prefisso che abbiamo inserito. Per ovviare a questo problema è necessario indicare al telefono di visualizzare sia il nome che il numero (operazione possibile ad esempio sui telefoni Snom), oppure sostituire la riga sopra con queste:
exten = s,n,Set(CALLERID(name)=${IF($["${CALLERID(name)}"=""]?${CALLERID(num)})})
exten = s,n,Set(CALLERID(name)=${ARG6}${CALLERID(name)})
in questo modo se il chiamante ha il campo nome popolato, perchè è un interno ho il numero da cui chiama è in rubrica, vedremo regolarmente sul telefono il nome preceduto dal prefisso, altrimenti verrà visualizzato il numero preceduto sempre dal prefisso.
Fatene buon uso.
In this short article we will see how you can change the caller ID for incoming calls in VoiceOne. The purpose of this action is to make sure that on the phone display appears one of our alphanumeric reference (“Administration”, “Support”, …) in addition to the one passed by the network and the telephone number of the caller. This allows the call recipient to have some additional information, such as the line from the call came or the choice made by the user in the IVR.
Let’s suppose that our organization has two phone lines: one of the company AAA and the other one of the BBB company. The two companies share the same office and one secretary sorts calls for both. The need is to inform the secretary who answers all calls if they came from the line of AAA company (and therefore must be answered with “Hello, you have called the company AAA) or from the line of BBB company (and therefore must be answered with “Hello, you have called the company BBB). The information is passed to the operator via the caller ID that appears on the phone. Usually this indicates only the identification number of the caller but you can add some characters before the number: in our case we’ll add AAA or BBB depending which line is called.
To do this, simply insert into the macro which manages the incoming call (eg. incoming-call-to-extension) an additional parameter with the consequent ability to specify a text string when configuring the macro in the incoming rules or in the IVR nodes. Then insert at the bottom of the macro parameters this string:
<param name="prefix" type="TEXTFIELD" label="Prefix" description="Prefix to add to the cid name" />
and count the position of our parameter in the parameter list. If our argument is the sixth, we can invoke it within the macro code with ${ARG6}.
Please note that the parameter list of a macro can not be changed if it is used in a rule or an application. To change it, you have to delete the rule or the application which freezes the macro and remember to re-create it after the change. Alternatively you can duplicate the macro by changing the name and label, and keeping unchanged the parameters and code unless the changes of this tutorial (such as creating macros incoming-call-to-extension-with-cid-prefix).
Then add the following line within the macro, be sure to insert it before the command dial and that the ${ARG6} parameter is the reference to the newly inserted prefix parameter (if not change it with ${ARGN} where N is the position of the new parameter in the list of those of the macro you are creating or editing):
exten = s,n,Set(CALLERID(name)=${ARGN}${CALLERID(name)})
At this point we can create two rules: one that intercepts the line numbers of the first company and triggers the macro just edited setting in the “Prefix” field the “AAA” value, and another rule that intercepts the numbers of the second company, this time setting the value to “BBB”. In this way the operator will see on the phone display AAA (followed by the caller number) for calls to the first company, and BBB (followed by the caller number) for calls to the second company.
The same can also be applied to macros triggered by IVRs. Why? Let’s suppose you want an IVR in which the caller can choose between administration, commercial and support staff and that these selections alert different groups of phones. Some users may be included in more than one group and be interested to know if the caller wants to speak with a salesperson or an administrator. Changing the macro incoming-call-to-group I can see all caller numbers prefixed with a reference indicating the choice made by the caller.
Warning: many devices don’t give a choice on how to display the Caller ID. They don’t allow to choose whether to display the name, number or both. Some of these use a very simple logic: if there is only a numeric identifier display this, otherwise display only the name. Following what is written above we populate the name field, and this means that many phones don’t display the number anymore, but only the proxy we have included. To overcome this problem you must tell the phone to display both the name and number (this can be done on Snom phones for example), or replace the line above with this:
exten = s,n,Set(CALLERID(name)=${IF($["${CALLERID(name)}"=""]?${CALLERID(num)})})
exten = s,n,Set(CALLERID(name)=${ARG6}${CALLERID(name)})
in this way if the caller has the name field populated, because it’s an extension or the number is in the phonebook, we’ll see on the phone the name preceded by the prefix, otherwise we’ll see always the number preceded by the prefix.
Make good use.