[AsteriskBrasil] Uso do AEL no dialplan

Diego Aguirre (DagMoller) dag.voip em oi.com.br
Sexta Maio 16 12:49:59 BRT 2008


Srs,

para poder conhecer o poder do AEL no asterisk, vejam o que é possível fazer...
esse exten faz uma busca no e164.org (ENUMLOOKUP).

context enum
{
        _164XXXXXXXX   => goto 1645521${EXTEN:3}|1;
        _164XXXXXXXXXX => goto 16455${EXTEN:3}|1;
        _164. => {
                if ("x${ENUMCALLERID}" != "x")
                        Set(CALLERID(all)=${ENUMCALLERID});

                Set(dialto="");
                Set(number=${EXTEN:3});

                // Buscar registros SIP/IAX
                Set(numreg=${ENUMLOOKUP(+${number},ALL,c,,e164.org)});
                if (${numreg} > 0)
                {
                        // Se existir 1 ou mais registro ENUM, faz um loop buscando por SIP e IAX
                        for (i = 1; ${i} <= ${numreg}; i = ${i} + 1)
                        {
                                Set(dialstr="");
                                Set(info=${ENUMLOOKUP(+${number},ALL,,${i},e164.org)});
                                Set(tech=${CUT(info,:,1)});

                                switch (${tech})
                                {
                                        case sip:
                                                Set(dialstr="SIP/${info:4}");
                                                break;

                                        case iax2:
                                                Set(dialstr="IAX2/${info:5}");
                                                break;

                                        default:
                                                break;
                                }

                                if ("x${dialstr}" != "x")
                                {
                                        // Se encontrar SIP ou IAX, apenda na string que será usada no Dial()
                                        if ("x${dialto}" != "x")
                                                Set(dialto="${dialto}&${dialstr}");
                                        else
                                                Set(dialto="${dialstr}");
                                }
                        }
                }
                // Discagem
                if ("x${dialto}" != "x")
                {
                        ChanIsAvail(${dialto});
                        if ("x${AVAILORIGCHAN}" != "x")
                                Dial(${AVAILORIGCHAN},,T);
                }
                Hangup();
        }
}

-- 
Diego Aguirre
Infodag - Informática
FWD#: 459696
EnumLookup#: +55 21 8138-2710
DUNDi-br#: 21 8138-2710 


More information about the AsteriskBrasil mailing list