Este é um projeto de um Softphone desenvolvido em Flutter, projetado para rodar em dispositivos Android. O Softphone utiliza o protocolo SIP com WebSocket, implementado por meio de uma interface que converte UDP para WebSocket em JavaScript.
- Realizar e receber chamadas telefônicas através do servidor Issabel.
- Interface de usuário intuitiva e fácil de usar.
- Suporte a protocolo SIP com WebSocket para comunicação eficiente.
- Flutter SDK (>=2.12.0): link para download
- Dispositivo Android ou emulador para testar o aplicativo.
- Clone este repositório em sua máquina local:
git clone https://github.com/seu-usuario/seu-projeto.git
- Navegue até o diretório do projeto:
cd seu-projeto
- Execute o seguinte comando para instalar as dependências do Flutter:
flutter pub get
-
Instale e configure o servidor Issabel para se comunicar com o Softphone.
-
Faça o download do projeto WebSocketUDP disponível em https://github.com/gontijol/websocketUDP.
-
Siga as instruções fornecidas no repositório do projeto WebSocketUDP para configurar e executar a interface que converte UDP para WebSocket em JavaScript.
-
Certifique-se de ter as informações de configuração corretas para o servidor Issabel e a interface WebSocketUDP.
-
No código-fonte do projeto, localize o arquivo lib/config.dart e atualize as informações de configuração de acordo com seu ambiente:
const String sipUsername = 'nome_de_usuário_sip';
const String sipPassword = 'senha_sip';
const String websocketUDPUrl = 'url_da_interface_websocketUDP';
-
Conecte seu dispositivo Android ou inicie um emulador.
-
Execute o aplicativo Flutter:
flutter run
- Este projeto ainda está incompleto e requer alguns ajustes para estar totalmente funcional.
- Certifique-se de ter uma conexão estável com a internet ao executar o aplicativo.
- Se encontrar algum problema ou tiver alguma dúvida, sinta-se à vontade para entrar em contato com a equipe de desenvolvimento.
Contribuições são bem-vindas! Se você quiser melhorar este projeto, siga as etapas abaixo:
-
Fork este repositório.
-
Crie uma nova branch com a sua contribuição:
git checkout -b minha-contribuicao
https://www.fop2.com/docs/webrtc_guide.php#WebRTCConfigurationguide
Removida abstração de camada desnecessária Jssip
Configuração necessária no Issabel - Asterisk:
-
Defina um IP Estático
-
Clique em PBX > Ferramentas > Editor de Arquivos do Asterisk
-
procure pelo arquivo http_custom.conf e Defina seu IP
bindaddr=[SEU IP ESTÁTICO] bindport=8089
-
procure pelo arquivo pjsip_custom.conf e Defina seu IP
type=transport protocol=ws bind=0.0.0.0 ; All other transport parameters are ignored for wss transports.
-
Caso ambos arquivos estejam somente leitura, você poderá criar arquivos personalizados
exemplo: pjsip_custom_2.conf
e http_custom_2.conf
, dessa forma, basta incluir seus respectivos códigos acima, e incluir nos arquivos pjsip.conf
e http.conf
seus respctivos includes.
-
Ative o transporte
rtcp_mux
no ramal desejado para comunicação rtcp -
Salve e reinicie o Issabel
Caso o issabel esteja bloqueando conexões com erro 500, siga os seguintes passos: no arquivo pjsip_user.conf ou pjsip_custom.conf adicione o seguinte parâmetro :
bindport=8089
- Vá em Segurança > Firewall > Define Ports e defina uma nova porta
Nome: WS
Protocolo: TCP
Porta : 8080 > 8089
feito isso basta salvar o arquivo.
- Vá em Segurança > Firewall > Port Knocking Users e autorize um novo usuário com as portas:
SIP WS HTTP HTTPS