Testar Integração/API Softswitch
O objetivo deste documento é mostrar como realizar testes utilizando o web service do Softswitch.
O teste foi realizado na versão 5 e utilizado como base o documento Integração - PCRT 5.6.1
O softswitch utiliza o padrão de arquitetura SOAP, para testar iremos utilizar o Soap Ui:
Ao iniciar o Soap Ui, criaremos um novo projeto:
Inserindo um link wsdl, ele irá procurar todos os requests disponíveis para serem utilizados. No exemplo foi inserido o link http://IP_INTERACE:PORTA/SipPulse/SubscriberWS?wsdl
mostrando todos requests relacionados à Subscriber
:
Após inserir o link deve aparecer a lista de requests disponíveis:
Para realizar a insersão de um assinante, basta dar dois cliques no request e irá abrir uma nova tela contendo todos dados disponíveis para serem enviados no request:
Preencher também as informações do usuário que irá enviar o request:
OBS: O usuário utilizado pela API é o mesmo utilizado para acessar a interface web. Caso haja necessidade deve ser criado um novo usuário na interface web:
Identificando erros:
Os logs de insersão de dados podem ser consultados no log do glassfish, no exemplo a variável blockCollectCalls é do tipo boolean e é requirida para insersão de assinantes. No request foi enviado sem definir um valor:
cd /opt/glassfish/domains/domain1/logs
tail -f server.log
Ao clicar em executar no Soap UI é gerado um log no glassfish. Através dele é possível analisar e identificar a variável que está causando a falha:
at br.com.voffice.sippulse.ws.dto.SubscriberDTO$JaxbAccessorM_isBlockCollectCalls_setBlockCollectCalls_boolean.set(MethodAccessor_Boolean.java:59)
Outro caso que podemos encontrar na API SOAP é quando não há um usuário administrador no SSW e tentamos enviar uma requisição.
Não existe um log especificando o erro explicitamente, mas notamos a seguinte mensagem:
O erro TransactionRolledbackLocalException
ocorre porque o GlassFish reverteu a transação devido a uma ArrayIndexOutOfBoundsException
, que acontece quando o código tenta acessar um índice inválido de um array ou lista vazia. Isso pode estar relacionado a dados ausentes ou inválidos (como login e senha no XML). Para resolver, valide os dados de entrada, trate exceções adequadamente no EJB, e revise os logs para entender melhor a origem do problema.
DICA:
Após entender quais campos são necessários para enviar a requisição você pode montar um POST utilizando o comando Curl:
Atente-se aos campos obrigatórios como Rateplan e Profile.
SIPPulse Routing and Billing Solutions for SIP