Aplicações do Dialplan do Asterisk 23
Comando:
Dial()
Sinopse:
Tenta conectar a outro dispositivo ou endpoint e estabelece uma ponte entre as chamadas.
Descrição:O aplicativo Dial() realiza chamadas para um ou mais canais especificados. Assim que um dos canais solicitados responde, o canal de origem será atendido, caso ainda não tenha sido. Esses dois canais então estarão ativos em uma chamada ponteada. Todos os outros canais solicitados serão encerrados.
Se não for especificado um tempo limite, o aplicativo Dial() aguardará indefinidamente até que um dos canais chamados responda, o usuário desligue ou todos os canais chamados estejam ocupados ou indisponíveis. A execução do plano de discagem continuará caso nenhum dos canais solicitados possa ser chamado ou se o tempo limite expirar. O aplicativo reportará terminação normal se o canal de origem for desligado ou se a chamada for ponteada e qualquer uma das partes encerre a chamada.
Se a variável OUTBOUND_GROUP estiver definida, todos os canais pares criados por este aplicativo serão colocados nesse grupo (como em Set(GROUP()=...)). Se a variável OUTBOUND_GROUP_ONCE estiver definida, todos os canais pares criados por este aplicativo serão colocados nesse grupo, mas a variável será desativada após o uso.
Exemplos:
- Dial com tempo limite de 30 segundos:
Dial(PJSIP/alice,30) - Dial paralelo com tempo limite de 45 segundos:
Dial(PJSIP/alice&PJSIP/bob,45) - Dial com opção de continuação 'g':
Dial(PJSIP/alice,,g) - Dial com recursos de transferência/gravação para o chamador:
Dial(PJSIP/alice,,TX)
Principais variáveis retornadas:
DIALSTATUS - Status da chamada (ANSWER, BUSY, NOANSWER, CHANUNAVAIL, etc.)DIALEDTIME - Tempo desde a discagem até a desconexãoANSWEREDTIME - Tempo real da chamadaDIALEDPEERNAME - Nome do canal de saída que atendeu
Sintaxe: Dial(Technology/Resource&[Technology2/Resource2[&...]],[timeout,[options,[URL]]]])
O aplicativo suporta diversas opções avançadas como limites de tempo, música de espera, encaminhamento de chamadas, modo de privacidade, gravação, transferência, entre outras funcionalidades essenciais para controle completo de chamadas em sistemas Asterisk.
Sintaxe:
same => n,Dial(PJSIP/alice,30)
same => n,Dial(PJSIP/alice&PJIP/bob,45)
same => n,Dial(PJSIP/alice,,g)
same => n,Log(NOTICE, Alice call result: ${DIALSTATUS})
same => n,Dial(PJSIP/alice,,TX)
same => n,Dial(PJSIP/alice,,L(60000:30000:10000))
same => n,Dial(PJSIP/alice&PJSIP/bob,,Q(NO_ANSWER))
[default]
exten => callee_channel,1,NoOp(ARG1=${ARG1} ARG2=${ARG2})
same => n,Log(NOTICE, I'm called on channel ${CHANNEL} prior to it starting the dial attempt)
same => n,Return()
exten => called_channel,1,NoOp(ARG1=${ARG1} ARG2=${ARG2})
same => n,Log(NOTICE, I'm called on outbound channel ${CHANNEL} prior to it being used to dial someone)
same => n,Return()
exten => _X.,1,NoOp()
same => n,Dial(PJSIP/alice,,b(default^called_channel^1(my_gosub_arg1^my_gosub_arg2))B(default^callee_channel^1(my_gosub_arg1^my_gosub_arg2)))
same => n,Hangup()
[my_gosub_routine]
exten => s,1,NoOp(ARG1=${ARG1} ARG2=${ARG2})
same => n,Playback(hello)
same => n,Return()
[default]
exten => _X.,1,NoOp()
same => n,Dial(PJSIP/alice,,U(my_gosub_routine^my_gosub_arg1^my_gosub_arg2))
same => n,Hangup()
same => n,Dial(PJSIP/alice,,G(jump_to_here))
same => n(jump_to_here),Goto(confbridge)
same => n,Goto(confbridge)
same => n(confbridge),ConfBridge(${EXTEN})
Dial(Technology/Resource&[Technology2/Resource2[&...]],[timeout,[options,[URL]]]])
same => n,Dial(DAHDI/g1/5551212)
same => n,Dial(DAHDI/4r2)
same => n,Dial(DAHDI/3c/5551212)
same => n,Dial(WebSocket/connection1/c(sln16))
same => n,Dial(WebSocket/connection1/c(opus))
same => n,Dial(WebSocket/INCOMING/n)
same => n,Dial(WebSocket/connection1/v(${URIENCODE(vari able)}=${URIENCODE(${CHANNEL})},variable2=$(URIENCODE(${EXTEN})}))
same => n,Dial(WebSocket/connection1/f(json))
Fonte: Asterisk Wiki