Esta é mais uma questão muito comum nos treinamentos de Asterisk, “Como fazer para retornar se é SIP ou IAX2?”.
Bem utilizando a função CUT fica muito fácil, vamos ver como:
A função CUT retorna para uma variável o valor encontrado, seguindo a seguinte regra:
CUT(<variável>,<terminador>,<posição>)
Onde:
variavel = Qualquer váriável como por exemplo a ${CHANNEL} que retorna o dispositivo solicitado;
terminador = Aqui utilizamos o delimitador utilizado no retorno da variável, por padrão é utilizado ‘-‘, mas iremos utilizar o ‘/’, pois este é o delimitador entre o Protocolo e o Dispositivo;
posição = A posição exata da busca, como no caso de um retorno de um dispositivo SIP a variável CHANNEL retorna por exemplo SIP/2000-0000000b, se utilizarmos a posição em 1 será retornado o valor SIP, e se utilizarmos o valor 2 será retornado 2000-0000000b.
[device] ; Retornar dados do canal (PROTOCOL/DEVICE@CONTEXT) ; exten=>97,1,Set(PROTOCOL=${CUT(CHANNEL,/,1)}) same=>n,Set(DEVICE=${CUT(CHANNEL,/,2)}) same=>n,Set(CONTEXT=${CONTEXT}) same=>n,NoOP(${PROTOCOL}/${DEVICE:0:4}@${CONTEXT})
Leave a Reply