OutBound Call com Asterisk e Grandstream HT503

Acredito que possa ajudar as pessoas. Segue um rápido post de como fazer para originar chamadas do Asterisk utilizando o HT503 da Grandstream. O aparelho em questão é este:

Para fazer a conexão com o mesmo, eu segui o passo a passo do pessoal da VoIPShop Networks. (Segue o link do PDF).  

Veja na imagem abaixo como verificar que está conectado no seu Asterisk com sucesso.


Primeiro vamos criar em "SIP.CONF" a conta do FXO:

[1155052424]
        type=friend
        username=1155052424
        secret=1155052424
        host=dynamic
        context=from-pstn
        qualify=yes
        allow=all
        qualify=2000
        port=5060
        nat=force_rport,comedia
        dtmfmode=rfc2833

Criei em meu dialplan (extensions.ael)o seguinte padrão:

//---------------------------------------------------------------------
//  Globals
//---------------------------------------------------------------------
globals {
        TRUNK_ITSP=SIP/itsp;
        TRUNK_IAX2=IAX2/itxrj;
        EMBFIXO=1155052424;
        EMBMOVEL=1155052424;
        TOVRM=KOK;
        NUMBERID=1155052424;
        HORA=130;
        FINANCEIRO=SIP/8012&SIP/8016;
        OUVIDORIA=SIP/8005&SIP/8006;
        }

//---------------------------------------------------------------------
//  Contextos de Ambientes
//---------------------------------------------------------------------
context to-fixo {
        h => {
                //-> Registrar LE (Ligacao Encerrada)
                NoOp(Lingacao encerrada por: ${HANGUPCAUSE});
                Set(MOTIVO_HANGUP=${HANGUPCAUSE});
                AGI(hangup_interaction.agi);

                if(${MOTIVO_HANGUP} == 0)
                        Set(ENDCALL_REASON=OK);
                else
                        Set(ENDCALL_REASON=LE);
                        AGI(/opt/telip/etc/agi-bin/custo.php,${FLUXO},${ID},${CDR(billsec)});
                        Hangup();
        }

_[2-5]XXXXXXX => {
                NoOp(Chamadas Locais via PSTN);
                Set(CALLERID(num)=${NUMBERID});
      Set(ARQGRAVA=${CDR(uniqueid)}-${CALLERID(num)}-${EXTEN}-${EPOCH});
                Set(CDR(fluxo)=D1);
                Set(FLUXO=D1);
                Set(ID=${UNIQUEID});
                AGI(blacklist.php,${EXTEN});
                MixMonitor(${ARQGRAVA}.gsm,ba);
                Dial(SIP/${EXTEN}@${EMBFIXO},40,rTtKkHhWw);
                if (${DIALSTATUS} = "CONGESTION") {
                        PlayBack(prepaid-isbusy);
                        HangUp();
                }
        }

_0ZXZX[2-5]XXXXXXX => {
                NoOp(Chamadas DDD Regional e Nacional via PSTN);
                Set(CALLERID(num)=${NUMBERID});
                Set(ARQGRAVA=${CDR(uniqueid)}-${CALLERID(num)}-${EXTEN}-${EPOCH});
                Set(CDR(fluxo)=D2);
                Set(FLUXO=D2);
                Set(ID=${UNIQUEID});
                AGI(blacklist.php,${EXTEN});
                MixMonitor(${ARQGRAVA}.gsm,ba);
                Dial(SIP/${EXTEN}@${EMBFIXO},40,rTtKkHhWw);
                if (${DIALSTATUS} = "CONGESTION") {
                        PlayBack(prepaid-isbusy);
                        HangUp();
                }
        }

 _0800. => {
                NoOp(Chamadas 0800 via PSTN);
                Set(CALLERID(num)=${NUMBERID});
                Set(ARQGRAVA=${CDR(uniqueid)}-${CALLERID(num)}-${EXTEN}-${EPOCH});
                Set(CDR(fluxo)=D0);
                Set(FLUXO=D0);
                Set(ID=${UNIQUEID});
                AGI(blacklist.php,${EXTEN});
                MxMonitor(${ARQGRAVA}.gsm,ba);
                Dial(SIP/${EXTEN}@${EMBFIXO},40,rTtKkHhWw);
                NoOp(${DIALSTATUS});
                if (${DIALSTATUS} = "CONGESTION") {
                        PlayBack(prepaid-isbusy);
                        HangUp();
                }
        }

        _400X. => {
                NoOp(Chamadas 400X via PSTN);
                Set(CALLERID(num)=${NUMBERID});
                Set(ARQGRAVA=${CDR(uniqueid)}-${CALLERID(num)}-${EXTEN}-${EPOCH});
                Set(CDR(fluxo)=D0);
                Set(FLUXO=D0);
                Set(ID=${UNIQUEID});
                AGI(blacklist.php,${EXTEN});
                MixMonitor(${ARQGRAVA}.gsm,ba);
                Dial(SIP/${EXTEN}@${EMBFIXO},40,rTtKkHhWw);
                NoOp(${DIALSTATUS});
                if (${DIALSTATUS} = "CONGESTION") {
                        PlayBack(all-circuits-busy-now);
                        HangUp();
                }
        }

        _19X => {
                NoOp(Chamadas de Emergencias via PSTN);
                Set(CALLERID(num)=${NUMBERID});
                Set(ARQGRAVA=${CDR(uniqueid)}-${CALLERID(num)}-${EXTEN}-${EPOCH});
                Set(CDR(fluxo)=D0);
                Set(FLUXO=D0);
                Set(ID=${UNIQUEID});
                AGI(blacklist.php,${EXTEN});
                MixMonitor(${ARQGRAVA}.gsm,ba);
                Dial(SIP/${EXTEN}@${EMBFIXO},40,rTtKkHhWw);
                NoOp(${DIALSTATUS});
                if (${DIALSTATUS} = "CONGESTION") {
                        PlayBack(all-circuits-busy-now);
                        HangUp();
                }
        }
};

Tudo configurado vamos fazer a parte da configuração do HT503 para que tenhamos a chamada originada sendo encaminhada diretamente para a PSTN.

Para funcionar corretamente o registro deixa tal como está a imagem:


Ainda em FXO Port faça as alterações da imagem abaixo. OBS: Os produtos da Grandstream tem um bug de timeout. Então faça uma mudança e clique em "Apply" e logo depois em "Update", pois pode perder tudo que fez.


Agora o pulo do gato! em "Basic Settings":


Faça o encaminhamento final para o Dial ser enviado para a "PSTN!".


Pronto! Suas chamadas originadas do seu Asterisk já estão funcionando perfeitamente! Eu estou usando Ubuntu Server 14.04 LTS e Asterisk 12 com banco de dados PostgreSQL 9.12.16.

O que ? InBound Call ? Putz vai ficar para o próximo, pois ainda não consegui resolver isto não! kkkkkkk.

Nenhum comentário

Tecnologia do Blogger.