Funções do Dialplan do Asterisk 20
Comando:
CHANNEL()
Sinopse:
Obtém/define várias informações sobre o canal.
Descrição:
Obtém ou define diversas informações sobre o canal. Itens adicionais podem estar disponíveis a partir do driver do canal; consulte sua documentação para obter detalhes. Qualquer item solicitado que não estiver disponível no canal atual retornará uma string vazia.
Este comando permite acessar e modificar atributos do canal em tempo real, como informações de chamada, configurações de áudio, e flags de roteamento. É amplamente utilizado em dialplans para manipular o comportamento das chamadas e adaptar o fluxo de acordo com as necessidades.
Exemplos:
; Empurra uma subrotina de tratamento de hangup existente na localização dialplan default,s,1 para o canal atual
same => n,Set(CHANNEL(hangup_handler_push)=default,s,1)
; Define a zona de tom atual para a Alemanha (de)
same => n,Set(CHANNEL(tonezone)=de)
; Define o número máximo permitido de tentativas de encaminhamento
same => n,Set(CHANNEL(max_forwards)=10)
; Se este canal for ejetado de sua próxima bridge, e se o canal não estiver desligado, começa a executar o dialplan na localização default,after-bridge,1
same => n,Set(CHANNEL(after_bridge_goto)=default,after-bridge,1)
; Registra o estado atual do canal
same => n,Log(NOTICE, This channel is: ${CHANNEL(state)})
CALLINGPRES - Apresentação do Caller ID para chamadas de entrada (canais PRI)
CALLINGANI2 - Caller ANI2 (canais PRI)
CALLINGTON - Tipo de Número do Chamador (canais PRI)
CALLINGTNS - Seletor de Rede de Trânsito (canais PRI)
EXTEN - Extensão atual
CONTEXT - Contexto atual
PRIORITY - Prioridade atual
CHANNEL - Nome do canal atual
UNIQUEID - Identificador único da chamada atual
HANGUPCAUSE - Causa de hangup do Asterisk (entrada/saída)
Technology: PJSIP
; Exemplo específico do PJSIP: Registra o Call-ID atual
same => n,Log(NOTICE, ${CHANNEL(pjsip,call-id)})
; Registra o endereço de destino do fluxo de áudio
same => n,Log(NOTICE, ${CHANNEL(rtp,dest)})
; Armazena o tempo de ida e volta associado a um fluxo de vídeo no campo CDR video-rtt
same => n,Set(CDR(video-rtt)=${CHANNEL(rtcp,rtt,video)})
Sintaxe:
; Push a hangup handler subroutine existing at dialplan
; location default,s,1 onto the current channel
same => n,Set(CHANNEL(hangup_handler_push)=default,s,1)
; Set the current tonezone to Germany (de)
same => n,Set(CHANNEL(tonezone)=de)
; Set the allowed maximum number of forwarding attempts
same => n,Set(CHANNEL(max_forwards)=10)
; If this channel is ejected from its next bridge, and if
; the channel is not hung up, begin executing dialplan at
; location default,after-bridge,1
same => n,Set(CHANNEL(after_bridge_goto)=default,after-bridge,1)
; Log the current state of the channel
same => n,Log(NOTICE, This channel is: ${CHANNEL(state)})
; Log the current Call-ID
same => n,Log(NOTICE, ${CHANNEL(pjsip,call-id)})
; Log the destination address of the audio stream
same => n,Log(NOTICE, ${CHANNEL(rtp,dest)})
; Store the round-trip time associated with a
; video stream in the CDR field video-rtt
same => n,Set(CDR(video-rtt)=${CHANNEL(rtcp,rtt,video)})
CHANNEL(item)
Fonte: Asterisk Wiki