miércoles, 20 de octubre de 2010

Jalar llamadas en Asterisk usando PICKUP

Pickup, es la aplicación que nos va ha permitir jalar llamadas dirigidas a cualquier anexo .

Esta aplicacion trabaja con el modulo app_directed_pickup.

ejemplo de configuración para jalar llamadas:

[funciones]
exten => _**1XXX,1,PickUp(${EXTEN:2}@PICKUPMARK)


[anexos]
exten=>_1XXX,1,Macro(extension,SIP/${EXTEN},${EXTEN},20,Ttr)

[macro-extension]


exten => s,1,Set(Anexo=${ARG2})

exten => s,n,Set(__PICKUPMARK=${Anexo})
exten => s,n,Dial(${ARG1},${ARG3},${ARG4})

exten => s,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?s-NOANSWER,1)

exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?s-BUSY,1)

exten => s,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?s-NOANSWER,1)

exten => s,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?s-NOANSWER,1)

exten => s,n,Hangup()


exen => s-BUSY,1,Voicemail(${Anexo},b)

exten => s-BUSY,n,Hangup()
exten => s-NOANSWER,1,Voicemail(${Anexo},u)
exten => s-NOANSWER,n,Hangup()

Nota:

exten =>_**1XXX,1,Pickup(${EXTEN:2}@PICKUPMARK)

Para poder jalar la llamada con la aplicacion Pickup,
tenemos que tener la variable PICKUPMARK definida en el CANAL que esta timbrando,

Asterisk tiene una funcionalidad que consiste en la herencia de variables entre los canales. Podemos hacer que una variable este definida en todos los canales que se generen después, precediendo su nombre con 2 guiones bajos (__). Por lo tanto, lo que tenemos que hacer para poder coger cualquier llamada, es definir la variable de la siguiente manera:

exten => _1XXX,1,Set(__PICKUPMARK=${EXTEN})
exten => _1XXX,n,Dial(SIP/${EXTEN})

No hay comentarios.: