Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

O teste foi realizado na versão 5 .4 e utilizado como base o documento Integração - PCRT 5.0 / PCRT 56.1 / PCRT 5.2.

O softswitch utiliza o padrão de arquitetura RESTSOAP, para testar iremos utilizar o Soap Ui:

...

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:

...

Image AddedImage Added

Expand
titleRequest completo
Code Block
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.ws.sippulse.voffice.com.br/">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:insertSubscriber>
         <!--Optional:-->
         <subscriber>
            <!--Optional:-->
            <accountCode>teste_integra3@ssw5.sippulse.com</accountCode>
            <activeIncomingCalls>true</activeIncomingCalls>
            <activeOutgoingCalls>true</activeOutgoingCalls>
            <addServiceHeader>false</addServiceHeader>
            <!--Optional:-->
            <address></address>
            <!--Optional:-->
            <areaCode>48</areaCode>
            <blockAnonymousCalls>true</blockAnonymousCalls>
            <blockCollectCalls></blockCollectCalls>
            <blockEntry0303>false</blockEntry0303>
            <!--Optional:-->
            <callFwd></callFwd>
            <!--Optional:-->
            <callLimit>0</callLimit>
            <callsOnlyByIp>false</callsOnlyByIp>
            <!--Optional:-->
            <city></city>
            <!--Optional:-->
            <cityCode>55</cityCode>
            <!--Optional:-->
            <complement></complement>
            <!--Optional:-->
            <contractNumber></contractNumber>
            <copyPassertedRpid>false</copyPassertedRpid>
            <!--Optional:-->
            <countryCode>55</countryCode>
            <!--Optional:-->
            <document></document>
            <!--Optional:-->
            <domain>ssw5.sippulse.com</domain>
            <!--Optional:-->
            <emailAddress>teste_integra3@sippulse.com</emailAddress>
            <!--Optional:-->
            <firstName></firstName>
            <!--Optional:-->
            <fwdBusy></fwdBusy>
            <!--Optional:-->
            <id></id>
            <!--Optional:-->
            <lastName></lastName>
            <!--Optional:-->
            <localArea>SC</localArea>
            <lowCreditLimit>0.0</lowCreditLimit>
            <lowCreditNotification>false</lowCreditNotification>
            <!--Optional:-->
            <mobile></mobile>
            <!--Optional:-->
            <noAnswer></noAnswer>
            <!--Optional:-->
            <number></number>
            <!--Optional:-->
            <password>teste123</password>
            <!--Optional:-->
            <passwordPortal>teste123</passwordPortal>
            <!--Optional:-->
            <phone></phone>
            <!--Optional:-->
            <profile>teste</profile>
            <!--Optional:-->
            <quarter></quarter>
            <!--Optional:-->
            <ratePlanId>2</ratePlanId>
            <resellerBillingType></resellerBillingType>
            <!--Optional:-->
            <resellerId>1</resellerId>
            <resellerMarkup>1</resellerMarkup>
            <!--Optional:-->
            <resellerRatePlanId></resellerRatePlanId>
            <!--Optional:-->
            <rings></rings>
            <!--Optional:-->
            <rpid></rpid>
            <softphoneAllowed>true</softphoneAllowed>
            <!--Optional:-->
            <state></state>
            <!--Optional:-->
            <username>teste_integra3</username>
            <validateSource0303>false</validateSource0303>
            <!--Optional:-->
            <voiceMailPassword>teste123</voiceMailPassword>
            <voicemail>teste_integra3@sippulse.com</voicemail>
            <!--Optional:-->
            <zip></zip>
         </subscriber>
         <!--Optional:-->
         <principal>
            <!--Optional:-->
            <login>suportepulse</login>
            <!--Optional:-->
            <password>@#ashdiuhs87856!!</password>
         </principal>
      </ser:insertSubscriber>
   </soapenv:Body>
</soapenv:Envelope>

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:server.log

...

Code Block
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:

Code Block
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:

Code Block
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0

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.

Code Block
curl -X POST http://45.229.107.102:8080/SipPulse/SubscriberWS \
     -H "Content-Type: text/xml; charset=utf-8" \
     -d '<?xml version="1.0" encoding="UTF-8"?>
         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.ws.sippulse.voffice.com.br/">
            <soapenv:Header/>
            <soapenv:Body>
               <ser:insertSubscriber>
                  <subscriber>
                     <accountCode>4933473498-API</accountCode>
                     <activeIncomingCalls>1</activeIncomingCalls>
                     <activeOutgoingCalls>1</activeOutgoingCalls>
                     <addServiceHeader>1</addServiceHeader>
                     <address>12312312</address>
                     <areaCode>48</areaCode>
                     <blockAnonymousCalls>0</blockAnonymousCalls>
                     <blockCollectCalls>0</blockCollectCalls>
                     <blockEntry0303>1</blockEntry0303>
                     <callFwd></callFwd>
                     <callLimit>0</callLimit>
                     <callsOnlyByIp>1</callsOnlyByIp>
                     <city>Teste</city>
                     <cityCode>2892</cityCode>
                     <complement></complement>
                     <contractNumber></contractNumber>
                     <copyPassertedRpid>0</copyPassertedRpid>
                     <countryCode>55</countryCode>
                     <document></document>
                     <domain>sip.atplus.com.br</domain>
                     <emailAddress>testeapi@teste.com</emailAddress>
                     <firstName>teste</firstName>
                     <fwdBusy>0</fwdBusy>
                     <id></id>
                     <lastName></lastName>
                     <localArea>48</localArea>
                     <lowCreditLimit>0</lowCreditLimit>
                     <lowCreditNotification>0</lowCreditNotification>
                     <mobile></mobile>
                     <noAnswer></noAnswer>
                     <number></number>
                     <password>12345</password>
                     <passwordPortal>12345</passwordPortal>
                     <phone></phone>
                     <profile>DIDS_OUTROS</profile>
                     <quarter></quarter>
                     <ratePlanId>5</ratePlanId>
                     <resellerBillingType></resellerBillingType>
                     <resellerId></resellerId>
                     <resellerMarkup>0</resellerMarkup>
                     <resellerRatePlanId></resellerRatePlanId>
                     <rings>30</rings>
                     <rpid></rpid>
                     <softphoneAllowed>1</softphoneAllowed>
                     <state></state>
                     <username>4933473498-API</username>
                     <validateSource0303>0</validateSource0303>
                     <voiceMailPassword>12345</voiceMailPassword>
                     <voicemail>0</voicemail>
                     <zip></zip>
                  </subscriber>
                  <principal>
                     <login>USUARIO</login>
                     <password>#qiourtyeuiwp#AAAAAAAAAAAA</password>
                  </principal>
               </ser:insertSubscriber>
            </soapenv:Body>
         </soapenv:Envelope>'