Asterisk: Servidor de Conferência com LUA



Asterisk é um poderoso framework para construção de softswitch de Telefonia IP. No entanto, a sua configuração via "extensions.conf" para o Dialplan é um pouco chato, se você realmente gostaria de programar o seu Dialplan (por exemplo: if-then-else, ler um arquivo, executar algum programa de linha de comando...). O Diaplan também pode ser implementado usando LUA: extensions.lua.

Aqui, está a uma demo curta de como configurar no Asterisk um servidor de conferência telefônica que é acessível através de número de telefone utilizando a ITSP GVT (Internet telephony service providere o Dialplan implementado em LUA.

Então em nosso cenário temos um numero valido da ITSP onde nossos clientes vão ligar e suas chamadas serão enviadas para uma sala de conferencia telefónica.

Utilizo este código em um Asterisk 12.8.2 com um CentOS 7.

sip.conf:
[general]
allowguest=no
alwaysauthreject=yes
 
canreinvite=no

disallow=allow
allow=g711

;ITSP GVT Esta é a ligação ascendente recebida
register => LOGIN:SENHA_VONO@vono.net.br/trunk_incoming

[trunk_incoming]
type=peer
username=vono
secret=senha_vono
domain=vono.net.br
fromuser=vono
fromdomain=vono.net.br
host=vono.net.br
insecure=very
qualify=no
port=5060
nat=no
disallow=all
allow=ilbc
dtmfmode=rfc2833
context=recebe_vono
reinvite=no
canreinvite=no
extensions.lua:
extensions.lua:

  extensions = {}
  
  extensions.trunk_incoming = {
       ["_X"] = function(c, e)
    app.playback("beep")
    
    app.read("room", "conf-getconfno")
        room = channel["room"]:get()
        if room == nil then
           app.playback("beepErr")
           app.hangup()
        end
 
    app.verbose("sala de conferência " .. room .. ": " .. channel.CALLERID("num"):get() .. " entrou")
    app.playback("conf-enteringno")
    app.sayDigits(room, "f")
   
    app.confBridge(room)
    end;
}
NOTA: O Asterisk não recarrega o extensions.lua automaticamente, mesmo não usando núcleo de recarga. Após a configuração você deve recarregar o modulo na Comand Line Interface do Asterisk. Use o seguinte comando: "module reload pbx_lua.so"

NOTA: A LUA-parser em Asterisk é muito crítico. Tenha cuidado ao usar os espaços e alinhar (Indentação) o código corretamente.


NOTA: O tráfego não é criptografado com a ITSP. o correto seria usar uma segurança do tipo IPSec-tunnel.

Nenhum comentário

Toda vez que um homem supera os reveses, torna-se mentalmente e espiritualmente mais forte!

Tecnologia do Blogger.