A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider | Forums

Panoramisk / Le druide de la VoIP 

Asterisk en réseau et passage de paramètre via SIP

Lors de la mise en réseau de PABX, il est parfois nécessaire de passer des informations spécifiques avec chaque appel. L’ouverture du protocole SIP autorise la surcharge des paramètres d’appel. Voici comment passer des paramètres et les récupérer avec un Asterisk.

Usage

Dans la majorité des cas les appels SIP ne sont pas effectués entre deux PABX de la même entité, mais l’arrivée d’Asterisk en entreprise, surtout dans celles réparties sur un territoire national ou international peut nécessiter de garder des informations cohérentes lors du passage d’un appel. Par exemple, un centre d’appel qui souhaite faire transiter le numéro du client d’un site à l’autre afin que l’application couplée via le CTI garde le contexte.

Inclusion de paramètres

La commande SIPAddHeader permet, avant un appel via Dial de surcharger la liste des paramètres d’appel SIP. Il est d’usage de préfixer le nom du paramètre par un X- de façon à expliciter le caractère privé de ce paramètre. Si plusieurs paramètres sont requis, il suffit d’appeler plusieurs fois la commande:

exten => s,2,SIPAddHeader(X-ast-param1: valeur1)
exten => s,3,SIPAddHeader(X-ast-param2: valeur2)

Récupération du paramètre

Sur l’Asterisk qui reçoit l’appel via SIP, les entêtes SIP sont accessibles par le groupe de variables SIP_HEADER. On récupérera donc les paramètres de l’exemple précédent grâce à:

exten => s,2,Verbose(${SIP_HEADER(X-ast-param1)})

Automatisation

Afin de rendre la manipulation plus simple, je vous propose les deux macros suivantes1:

; ---------Start: [macro-sipargs-push] ----------------
[macro-sipargs-push]
exten => s,1,set(_SIP_ARGS_LIST=${SIP_ARGS_LIST} ${ARG1})
exten => s,2,SIPAddHeader(X-ast-${ARG1}: ${ARG2})
exten => s,3,SIPAddHeader(X-ast-list: ${SIP_ARGS_LIST})
; ---------End: [macro-sipargs-push] ------------------

; ---------Start: [macro-sipargs-pop] ----------------
[macro-sipargs-pop]
exten => s,1,Set(sipargs_list=${SIP_HEADER(X-ast-list)})
exten => s,2,Set(i=1)
exten => s,3,Set(siparg=${CUT(sipargs_list,' ',${i})})
exten => s,4,While($["${siparg}" != ""])
exten => s,5,Set(${siparg}=${SIP_HEADER(X-ast-${siparg})})
exten => s,6,Set(i=$[${i}+1])
exten => s,7,Set(siparg=${CUT(sipargs_list,' ',${i})})
exten => s,8,EndWhile
; ---------End: [macro-sipargs-pop] ------------------

sipargs-push

Cette marco permet d’empiler un nouveau paramètre à inclure dans l’appel SIP, elle est donc appelée, une fois par paramètre et avant la commande Dial. Les paramètres sont passés préfixés par X-ast- et un paramètre supplémentaire est automatiquement crée et passé, contenant la liste de tous les paramètres: X-ast-list. L’utilisation peut s’effectuer comme suit:

exten => _931.,1,Macro(sipargs-push,SIPCALLID,${SIPCALLID})
exten => _931.,2,Macro(sipargs-push,ID_CUSTOMER,12)
exten => _931.,3,Dial(SIP/${EXTEN:3}@to-asterisk-paris,20,t)


Ici, on pousse le paramètre SIPCALLID (variable contenu dans l’appel initial depuis le poste) et une variable pour notre application (ID_CUSTOMER).

sipargs-pop

La seconde macro permet de récupérer, avec un appel SIP, l’ensemble des paramètres supplémentaires, contenus dans la variable X-ast-list. Chaque paramètre est réincorporé dans le chanel en cours et donc directement utilisable après coup. Par exemple:

exten => _[12].,1,Macro(sipargs-pop)
exten => _[12].,2,Verbose(${SIPCALLID})
exten => _[12].,3,Verbose(${ID_CUSTOMER})
exten => _[12].,4,Dial(SIP/${EXTEN},20,t)

Conclusion

On peut profiter de l’ouverture du protocole SIP pour enrichir nos applications de téléphonie, avec Asterisk, c’est encore plus simple, alors profitez-en.

  1. écrites avec notre outil Asterisk::Configure []
Posté par: Alexandre Chauvin-Hameau, le 04/06/2007
Trackback | Popularité: 37%
marqué , , , et
AddThis Social Bookmark Button
UselessNothing newInformativeLearned a lotAmazingly helpful (3 votes, average: 3.67 out of 5)
Loading ... Loading ...

Voir aussi

Et pourquoi pas

Une résponse à “Asterisk en réseau et passage de paramètre via SIP”

  1. Fastm3 à dit:

    Bravo pour une fois de plus pour cet excellent billet. Je le mets de coté. Ca laisse entrevoir effectivement pas mal de possibilités.
    Fastm3.

Laisser un commentaire

© 2008 Panoramisk | Creative Commons License wordpress logo