extended-ami-ipcom
TypeScript icon, indicating that this package has built-in type declarations

1.0.12 • Public • Published

extended-ami-ipcom

extended-ami-ipcom é um cliente AMI (Asterisk Manager Interface) desenvolvido em TypeScript. Ele permite que você se conecte ao Asterisk através da porta 5038/TCP ou qualquer outra porta configurada no manager.conf, escutando eventos padrão do Asterisk e realizando requisições de ações.

Sumário

Instalação

Para instalar o módulo, você pode usar npm ou yarn:

npm install extended-ami-ipcom
# ou
yarn add extended-ami-ipcom

Uso Básico

Conectando ao Asterisk

import { eAmi as Eami } from 'extended-ami-ipcom';

export const ami = new Eami({
    host: '192.168.0.10',
    port: 5038,
    userName: 'amiIpcom',
    password: 'amiIpcomPass',
    additionalOptions: {
        debug: false,
        emitAllEvents: true,
        reconnect: true,
        resendAction: false,
     },
    });

Criando uma Ação para Originar uma Ligação

try {
    const originateCall = await ami.actions
        .Originate({
            Channel: `PJSIP/1000`,
            CallerID: Number(4531225150),
            Context: 'default',
            Priority: 1,
            Async: true,
            ChannelId: '123456789',
            Exten: Number(4531225150),
            Timeout: 30000, // Em milisegundos
            Variable: `variable1=myVariable1,variable2=myVariable2`,
            ActionID: '123456789',
            Action: 'Originate',
        });
    console.log(originateCall);
} catch (e) {
    console.log(e);
}

Escutando Eventos

ami.events.on('events', async (evt) => {
    if (evt.Event === 'QueueMember') {
        console.log(evt);
    }
});

// Ou
// Usando Type Guards para eventos específicos:
import { isAgentComplete } from 'extended-ami-ipcom';

ami.events.on('events', async (evt) => {
    if (isAgentComplete(evt)) {
        evt.Event = 'AgentComplete';
        const amiService = new HandleEvents();
        amiService.AgentComplete(evt, socketIo);
        return;
    }
});

Configuração do Asterisk

Para utilizar o módulo extended-ami-ipcom, é necessário configurar o manager.conf no Asterisk:

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

[amiIpcom]
secret = amiIpcomPass
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.0.0.0
permit=192.168.0.1/255.255.255.255
writetimeout = 5000
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
displayconnects = no

Para verificar se o Asterisk está conectado corretamente, execute o seguinte comando na CLI do Asterisk:

manager show connected

Isso deve retornar algo como:

ipcomcloud*CLI> manager show connected
Username         IP Address        Start       Elapsed   FileDes   HttpCnt   Read   Write
amiIpcom         192.168.0.1       1723835531  12074     11        0         08191  08191
1 users connected.

Funcionalidades Principais

Escutar Eventos: O módulo pode escutar uma ampla variedade de eventos do Asterisk, como AgentDump, AgentLogin, AgentLogoff, QueueMember, entre outros.

Executar Ações: Execute ações no Asterisk como PJSIPHangup, PJSIPNotify, Originate, e muitas outras.

Tipagem Completa: Feito em TypeScript, garantindo tipagem completa para todos os eventos e ações.

Exemplos de Código

Os exemplos já foram incluídos nas seções anteriores de uso básico.

API e Tipagem

Ainda em desenvolvimento. A documentação completa da API será lançada em breve, incluindo detalhes sobre todos os eventos e ações suportadas.

Contribuição

Estamos abertos a contribuições! Se você deseja ajudar a melhorar este módulo, sinta-se à vontade para fazer um fork e enviar pull requests. Estamos especialmente interessados em adicionar mais tipagens e exemplos de uso. Diretrizes mais detalhadas serão publicadas em breve.

Licença

Este projeto é licenciado sob a MIT License.

Contato e Suporte

Para suporte, entre em contato via Twitter. Link para meu perfil @real_fftheodoro.

Package Sidebar

Install

npm i extended-ami-ipcom

Weekly Downloads

2

Version

1.0.12

License

MIT

Unpacked Size

244 kB

Total Files

62

Last publish

Collaborators

  • fabioftheodoro