npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ipcom/asterisk-ami

v0.0.28

Published

Asterisk manager for Asterisk versions 18 and 20

Downloads

24

Readme

@ipcom/asterisk-ami

@ipcom/asterisk-ami é 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 @ipcom/asterisk-ami
# ou
yarn add @ipcom/asterisk-ami

Uso Básico

Conectando ao Asterisk

import { eAmi as Eami } from '@ipcom/asterisk-ami';

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 === 'AgentComplete') {
        console.log(evt);
    }
});

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

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

Configuração do Asterisk

Para utilizar o módulo @ipcom/asterisk-ami, é 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.