Biblioteca simplificada de comunicação (chamada de audio, audioconferência, videochamada, videoconferência e troca de mensagem de texto) via browser utilizando Websocket e SIP.
Biblioteca simplificada de comunicação (chamada de audio, audioconferência, videochamada, videoconferência e troca de mensagem de texto) via browser utilizando Websocket e SIP.
ps.: No momemto apenas chamada de audio está implementada.
O projeto ainda se encontro em processo de desenvolvimento por isso ainda não publicado no NPM. Para usar você deverá puxar a lib do github. Para isso basta adicionar a linha abaixo no seu package.json
:
"verto-gateway": "git+https://github.com/luanyata/verto-gateway.git"
Em seguida realize a instalação do mesmo com seu gerenciar de pacotes:
npm install
ou
yarn install
Agora carregue os javascripts no seu HTML antes dos seus javascript:
<script src="../node_modules/verto/src/vendor/adapter-latest.js"></script>
<script src="../node_modules/verto/src/vendor/media-device-id.min.js"></script>
<script src="../node_modules/jquery/dist/jquery.min.js"></script>
<script src="../node_modules/jquery-json/dist/jquery.json.min.js"></script>
<script src="../node_modules/verto/src/jquery.verto.js"></script>
<script src="../node_modules/verto/src/jquery.FSRTC.js"></script>
<script src="../node_modules/verto/src/jquery.jsonrpcclient.js"></script>
Para que o audio das chamadas sejam executada, é necessario a criação da tag audio
seguindo algumas recomendações:
<audio id="call" hidden autoplay></audio>
Para que o ramal que recebe a chamada sinalize que está tocando deve ser criada uma tag audio
seguindo algumas recomendações:
ring
src
deve conter o audio a ser reproduzido
<audio id="ring" hidden src="../sound/ring.mp3"></audio>
Resposavel por registrar o ramal
import { Config } from 'verto-gateway';
Config.start('parametro');
Parametros:
true
será utilizado o stun do freeswitch stun:stun.freeswitch.org
Exemplo Objeto Final:
{
agent: { login: "luan", passwd: "12345" },
wssAddress: "luanyata.com:8082",
wsFallbackURL: ["luan.com:8082","yata.com:8082"],
useIce: true,
tag: "call"
};
Contem todas as ações que podem ser feitas na chamada:
import { Actions } from 'verto-gateway';
Para realizar uma chamada basta chamar a função call()
parando dois parametro:
Actions.call('8888', '9999');
Para atender a chamada basta chamar a função answer()
:
Actions.answer();
Para por seu microfone no mudo basta chamar a função mute()
:
Actions.mute();
Para retirar seu microfone do mute basta chamar a função unmute()
:
Actions.unmute();
Para por a chamada em espera basta chamar a função hold()
:
Actions.hold();
Para remover a chamada da espera basta chamar a função unhold()
:
Actions.unhold();
Para enviar eventos dtmf basta chamar a função dtmf()
passando um parametro:
Actions.dtmf('valorDTMF');
Para desligar a chamada basta chamar a função hangup()
:
Actions.hangup();
Para desregistrar o ramal basta chamar a função logout()
. Com isso o a conexão com o socket será finalizada:
Actions.logout();
Para poder utilizar a função de auto atendimento basta adicionar adicionar a chave autoAnswer
com o valor true
no localStorage
.
Algumas informações que trafegam pelo websocket se dará acesso através de eventos, sendo eles:
Você receberá o estado do ramal através do emissor de evento handleWsState
com a classificação wsState
.
import { Events } from 'verto-gateway'
Events.handleWsState.on('wsState', state => {...} )
Existem tipos de 2 estados:
logged
ou failed-login
respectivamente.close
quando o ramal realizar o logout no Freeswitch.Em uma chamada existem dois tipos de eventos Inbound e Outbound. Em cada um dos estados do tipo da chamada uma serie de eventos são disparados utilizando o emissor Events.handleCallState
.
import { Events } from 'verto-gateway'
Events.handleCallState.on('EVENTO_ID', phoneNumber => {...} )
Estado Ring:
BINA
:
- Envia o número de quem está ligando.
- Tipo: String
RECEIVE_CALL
:
- Envia o objeto verto contendo a conversa.
- Tipo: Object
Estado Answering:
ANSWERING
- Informando que o ramal está enviando a resposta para estabelecer a comunicação.
- Tipo: Boolean
- Valor: true
Estado Active:
INBOUND_ACTIVE
:
- Informa que a comunicação foi estabelecida entre aos ramais e está em conversação.
- Tipo: Boolean
- Valor: true
Estado Hangup:
INBOUND_HANGUP_CAUSE
:
- Informa o motivo do desligamento da chamada.
- Tipo: String
ps.: Todos os motivos dos possiveis desligamentos podem ser obtidos na documentação do Freeswitch
Estado Destroy
INBOUND_ACTIVE
:
- Informando que a chamada foi desligada.
- Tipo: Boolean
- Valor: false
ANSWERING
:
- Reinicia o estado da solicitação da comunicação.
- Tipo: Boolean
- Valor: false
Estado Trying
TRYNG
:
- Informa que está tentando/chamando o número destino
- Tipo: Boolean
- Valor: true
Estado Active
OUTBOUND_ACTIVE
:
- Informa que a comunicação foi estabelecida entre aos ramais e está em conversação.
- Tipo: Boolean
- Valor: true
Estado Hangup:
OUTBOUND_HANGUP_CAUSE
:
- Informa o motivo do desligamento da chamada.
- Tipo: String
ps.: Todos os motivos dos possiveis desligamentos podem ser obtidos na documentação do Freeswitch
Estado Destroy
INBOUND_ACTIVE
:
- Informa que os ramais não estão mais ativos para a chamada que estava acontecendo.
- Tipo: Boolean
- Valor: false
Copyright (c) 2020 Luan Lima