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.

.

Não realizamos upload dos ficheiros, apenas reportamos os links que encontramos na própria Internet. Assim, toda e qualquer responsabilidade não caberá ao administrador deste blog. Este blog não tem como objetivo reproduzir as obras, apenas divulgar o que foi encontrado na Internet. Os filmes aqui informado são de cunho científico assim como as series as quais são produzidas para exibição em TV aberta. Uma vez que a serie não tenha sido ripada de um DVD ou seja a mesma foi gravada do sinal de TV aberta com o respectivo selo da emissora não é caracterizado crime pois a mesma foi produzida para exibição pública. Sera crime quando for realizado venda deste produto. Quem efetuar download de qualquer ficheiro deste blog que não tenha seu conteúdo de base Open Source (Código Aberto) ou FOSS (Free Open Source Software) deverá estar ciente que terá 24 horas para eliminar os ficheiros que baixou. Assista-o e procure Revendas Autorizadas. Se algo contido no blog lhe causa dano ou prejuízo, entre em contacto, que iremos retirar o ficheiro ou post o mais rápido possível. Se encontrou algum post que considere de sua autoria favor enviar e-mail para suporte@delphini.com.br informando o post e comprovando sua veracidade.

Muito obrigado a todos que fizeram deste blog um sucesso.

Creative CommonsEsta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra.Você não pode criar obras derivadas.