Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Usando Recursos Centrais de Redes de Telecomunicações para Desenvolver Aplicativos da Web: Parte 2: Usando APIs com estilo REST

Raghunath Nair, Principal Software Engineer, IBM
author photo
Raghunath E. Nair é engenheiro de software principal do laboratório de software da IBM Índia, em Bangalore. Ele passou a fazer parte da IBM em 2006. Sua função mais recente é o design, desenvolvimento e suporte de software para telecomunicações para o software IBM WebSphere, incluindo IBM WebSphere TWSS e IBM WebSphere IMS Connector. Suas áreas de especialização são integração de middleware, SOA, serviços da Web e telecomunicações. Foi coautor de Using WebSphere Message Broker as an ESB with WebSphere Process Server na série IBM Redbooks, e tem diploma de Bacharel em Tecnologia em Eletrônica e Comunicações pela Universidade de Calicute.
Chandrashekar Naik, Staff Software Engineer, IBM
author photo
Chandrashekar B. Naik é engenheiro de software da equipe do laboratório de software da IBM Índia. Ele passou a fazer parte da IBM em 2004 e tem experiência em design, desenvolvimento e teste de software. Suas áreas de especialização incluem Java, J2EE e programação de serviços da Web, incluindo WebSphere Application Server, Telecom Web Services Server, Mobile Portal Accelerator, computação disseminada e software WebSphere para telecomunicações. Atualmente, trabalha com desenvolvimento, suporte e teste do WebSphere Telecom Web Services Server. Chandrashekar também é programador certificado pela Sun e tem diploma de Bacharel em Engenharia em Ciências da Computação pela Universidade Tecnológica Visveswaraiah, de Belgaum.

Resumo:  Tradicionalmente, o desenvolvimento de aplicativos de telecomunicações implicava trabalhar com as complexidades das redes de telecomunicações e possuir qualificações técnicas em protocolos de telecomunicações, como SMPP, MLP e Parlay. Este artigo em duas partes descreve como um desenvolvedor de aplicativos de terceiros pode desenvolver serviços de valor agregado, que aproveitam recursos centrais de telecomunicações que estão disponíveis na rede do provedor de serviços, sem possuir essas qualificações de programação. Este artigo, a Parte 2, trata de formas diferentes de desenvolver aplicativos de telecomunicações com facilidade, usando APIs com estilo REST expostas pelo IBM ® WebSphere® Telecom Web Services Server (TWSS).

Visualizar mais conteúdo nesta série

Data:  12/Mai/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  1884 visualizações
Comentários:  


Esta é a Parte 2 de um artigo de duas partes, que demonstra como desenvolvedores com qualificações limitadas em programação podem desenvolver um aplicativo da Web de telecomunicações com facilidade, usando APIs com estilo REST expostas pelo IBM® WebSphere® Telecom Web Services Server, Versão 7.1. Comparado com o método de serviços da Web descrito na Parte 1, a chamada no estilo REST é muito mais simples, e não há necessidade de gerar clientes de serviços da Web a partir de arquivos WSDL. A Parte 1 desta série trata do Cenário 1: criando um aplicativo de telecomunicações com serviços da Web (clique no link "Mais conteúdo desta série" sob o resumo deste artigo para ler a Parte 1).

Cenário 2. Criar um aplicativo da Web de telecomunicações com Ajax e JSON

Este cenário demonstra como desenvolver um aplicativo da Web de telecomunicações usando a abordagem de design do Ajax, o formato de dados JavaScript Object Notation (JSON) e APIs com estilo REST expostas pelo Telecom Web Services Server.

O caso de uso

  • Um varejista deseja enviar um anúncio a todos os seus clientes, informando-os sobre uma oferta sazonal. O varejista também deseja saber o status de entrega dessas mensagens SMS.
  • O varejista terceiriza esse trabalho a um provedor de aplicativos de terceiros, que precisa enviar mensagens SMS em massa usando um aplicativo de telecomunicações da Web 2.0.

Crie o aplicativo da Web 2.0

Nesta seção, demonstramos como desenvolver o aplicativo usando a tecnologia Ajax para a GUI, APIs com estilo REST para acessar os recursos de telecomunicações e o formato de dados JSON para conter a carga útil. A página HTML de amostra em anexo (consulte Downloads) demonstra como fazer uma chamada de Ajax para os recursos de REST, usando o objeto de dados JSON para o TWSS. A parte do JavaScript que faz a chamada é explicada aqui (consulte o código da Listagem 1).

Na função do JavaScript, é obtido um manipulador para o objeto XMLHttpRequest específico do navegador. A mensagem de JSON é formada usando o senderName, endereços e parâmetros de mensagem obtidos à página HTML (somente os endereços e a mensagem são parâmetros obrigatórios).

O método stringify usado aqui converte o objeto JSON em texto JSON. Pode-se encontrar um link para esse método na seção Recursos deste artigo.

O XMLHttpRequest é inicializado por meio do método aberto. Estes são os parâmetros passados para esse método:

  • Método HTTP a ser usado para enviar a solicitação
  • URL que aponta para o recurso de REST.
    Nota: o IBM WebSphere Telecom Toolkit não suporta a carga útil JSON. Em vez disso, aponta a URL para o URI de REST real do TWSS para testar o mesmo. Consulte a documentação do TWSS 7.1, Developing > REST Style Access Using HTTP > Interfaces, para obter mais informações sobre os recursos de REST disponíveis que suportam JSON. Pode-se encontrar um link para essa documentação nos Recursos deste artigo.
  • Valor booleano que indica se a transação é assíncrona

O método sendSMS envia o objeto JSON para o servidor usando esses parâmetros.

A função onreadystatechange é acionada sempre que o estado de prontidão muda. Ela recebe o objeto JSON de resposta contendo o messageId, que é o identificador de solicitação que identifica uma solicitação de entrega de SMS.

Agora, esse messageId pode ser usado para obter o status de entrega do SMS enviado.


Listagem 1. Script de Java para chamar um recurso de REST de SMS
<script type="text/javascript">
function sendSMS()
{
	var xmlHttp= null;
	var url = "http://localhost:9089/ShortMessageService/services/JSON/sms";
	
	if (window.XMLHttpRequest)
	  {// code for IE7+, Firefox, Chrome, Opera, Safari
		  xmlHttp = new XMLHttpRequest();
	  }
	else
	  {// code for IE6, IE5
	  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	  }

	var senderName = document.getElementById('senderName').value;
	var address = document.getElementById('addresses').value;
	var message = document.getElementById('message').value;

	var addressArr = new Array();
	var addresses = address.split(/,/);
	for ( var i = 0; i < addresses.length; i++) {
		addressArr.push(addresses[i]);
	}

	//Create the JSON Object
	var jsObject = {"addresses": addressArr ,"senderName": "" 
			+ senderName + "","message": "" + message + ""};
	var jsSON = JSON.stringify(jsObject);
	
	xmlHttp.open("POST", "" + url + "", true);
	
	xmlHttp.onreadystatechange = function () {
		
  	if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
       	my_JSON_object = JSON.parse(xmlHttp.responseText);
       
		if (my_JSON_object.messageId!=undefined) {
			alert("Response from Server:"+ my_JSON_object.messageId);
			document.getElementById("requestIdentifier").value = "";
			document.getElementById("dStat").innerHTML="";
		} 
		else if (my_JSON_object.result!=undefined) {
       	    document.getElementById("requestIdentifier").value = my_JSON_object.result;
    	   	my_JSON_object = JSON.parse(xmlHttp.responseText);
    	   	document.getElementById("dStat").innerHTML="";
		}
  	} 
	};
	
	xmlHttp.send(jsSON);
}
</script>

O código da Listagem 2 mostra a função JavaScript que demonstra como obter o status de entrega do SMS enviado.


Listagem 2. JavaScript para chamar uma operação getDeliveryStatus
<script type="text/javascript">
function getDeliveryStatus()
{
      var xmlHttp= null;
      var url = 
      "http://localhost:9089/ShortMessageService/services/JSON/smsDeliveryStatus";
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
                 xmlHttp=new XMLHttpRequest();
          }
      else
          {// code for IE6, IE5
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }

      var reqId = document.getElementById('requestIdentifier').value;
      xmlHttp.open("POST", ""+ url +"", true);

      var jsObject = {"requestIdentifier": + reqId +""};
	
      var jsSON = JSON.stringify(jsObject);
      xmlHttp.open("POST", ""+ url +"", true);
	
      xmlHttp.onreadystatechange = function () {
                  if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
                          xmlNode = JSON.parse(xmlHttp.responseText);

                          if (xmlNode.messageId!=undefined) {
                          alert("Response from Server:"+ xmlNode.messageId);
                          document.getElementById("dStat").innerHTML="";
                        } 
                        else
                                {

               var innerHTML = '<table border=\'2\' >' +
               '<tr> <th> address </th> <th> Delivery Status</th> </tr>' ;
               for (var i = 0 ; i < xmlNode.result.length ; i++) {
                                var item = xmlNode[i];
                                innerHTML += '<tr>' +
                                '<td> ' + xmlNode.result[i].address + '</td>' +
                                '<td> ' + xmlNode.result[i].deliveryStatus + ' </td>' +
                                '</tr>';
               }
               innerHTML += "</table>";
               document.getElementById("dStat").innerHTML = innerHTML;
               }
               }
               };
               xmlHttp.send(jsSON);
}
</script>

Nota:
o código de amostra fornecido encontrará restrições ao cross-site scripting, caso o script esteja hospedado em outro servidor. Para resolver esse problema, é possível escolher uma destas duas ações:

  • Usar um navegador que não restrinja o cross-site scripting. Advertência: isso pode afetar a segurança.
  • Certifique-se de que o script esteja executando no mesmo servidor que o TWSS.

Cenário 3. Crie um aplicativo de telecomunicações usando Java e OneAPI

Sobre o OneAPI

"A iniciativa GSMA OneAPI define um conjunto de APIs leves e convenientes para a Web, suportado de forma comum, para permitir que operadoras móveis e outras operadoras de rede exponham informações e possibilidades de rede úteis para os desenvolvedores de aplicativos da Web. Visa reduzir o esforço e o tempo necessários para criar aplicativos e conteúdo portáteis de uma operadora móvel para outra".
Fonte: Web site do GSMA OneAPI. Pode-se encontrar um link para ele na seção Recursos deste artigo.

O Cenário 3 demonstra o mesmo caso de uso do Cenário 2. Entretanto, aqui, demonstramos como desenvolver um aplicativo de telecomunicações usando um programa Java simples com os recursos de REST OneAPI expostos pelo TWSS v7.1.

O TWSS 7.1 suporta a especificação OneAPI Versão 0.9. Os modelos de dados suportados incluem XML, JSON e form-url-encoded. Geralmente, as solicitações são em form-url-encoded e as respostas são sempre em XML. Consulte TWSS 7.1: Developing > REST Style Access Using HTTP > Interfaces para ver detalhes sobre os serviços suportados no TWSS 7.1, incluindo SMS, TL e Pagamento. Pode-se encontrar um link para eles na seção Recursos deste artigo.

O código da Listagem 3 instrui a operação sendSMS com parâmetros obrigatórios e opcionais. Observe estes elementos:

  • A URL é acrescentada aos argumentos para formar a URL do recurso.
  • O método de execução do método HTTPClient é chamado com um parâmetro de HTTPMethod para enviar a solicitação para a URL de REST do TWSS.
  • A resposta é recebida por meio do método getResponseBody de HTTPMethod.
  • Após o recebimento da resposta de sendSMS, o messageID é recuperado a partir da resposta, e um getDeliveryStatus é consultado de forma semelhante.
  • O status de entrega da mensagem é exibido na parte inferior.

Listagem 3. Fragmento de código Java para chamar uma operação sendSMS
//initialize HTTPClient object
org.apache.commons.httpclient.HttpClient client = 
        new org.apache.commons.httpclient.HttpClient();

//construct the sendSMS request 
urlString = resourceURL + "?" + strAddressArr + "&message=" + strMessage + 
	"&correlator=" + strCorrel + "&notifyURL=" + strNotifyURL + 
	"&senderName=" + strSenderName;
	
//initialize PostMethod specifying target URL  
org.apache.commons.httpclient.methods.PostMethod postMethod = 
        new org.apache.commons.httpclient.methods.PostMethod(urlString);
	
//execute the postmethod and get the status of the HTTP response
statusCode = client.executeMethod(postMethod);
System.out.println("HTTP status code:"+ statusCode);
	
//Read body of response into a string
postResponse = postMethod.getResponseBody();
strResponseAsAString = new String(postResponse);
System.out.println("SendSMS Response :" + strResponseAsAString);

//Create URL string for getSmsDeliveryStatus. 
//The getMessageId method retrieves the messageIdentifer from sendSMS response XML
urlString = resourceURL +"?messageId=" + getMessageId(strResponseAsAString);
		
//initialize GetMethod specifying target URL
org.apache.commons.httpclient.methods.GetMethod getMethod = 
        new org.apache.commons.httpclient.methods.GetMethod(urlString);
		
//execute getmethod and get the status of the HTTP response
       statusCode = client.executeMethod(getMethod);
       System.out.println("HTTP status code:"+ statusCode);
       	
       //Read body of response into a string
       postResponse = getMethod.getResponseBody();
System.out.println("Message Delivery Status:" + new String(postResponse));

Nota:
Todo o código Java é fornecido como um Intercâmbio de Projeto na seção Downloads deste artigo. Certifique-se de que o caminho de desenvolvimento do projeto tenha uma referência ao arquivo com.ibm.jaxws.thinclient_7.0.0.jar disponível em RAD75Home\runtimes\base_v7\runtimes.


Cenário 4. Crie um aplicativo de telecomunicações usando widgets Dojo de amostra

O TWSS 7.1 fornece interfaces com RESTful compatíveis com a especificação GSMA OneAPI v0.9, além das interfaces de serviços da Web já existentes. Para complementar essas interfaces, os widgets Dojo de amostra com estilo REST foram incluídos no IBM WebSphere Telecom Toolkit. Esses widgets Dojo de amostra podem ser usados dentro do aplicativo da Web para acessar os recursos da rede de telecomunicações. A amostra inclui widgets para estes fins:

  • Localização de terminal
  • Serviço de Mensagens Curtas
  • Serviços de pagamento

Os widgets são desenvolvidos usando o Dojo Toolkit, disponível no Web Services Feature Pack para o Rational Application Developer. Se o Web Services Feature Pack está instalado, as bibliotecas Dojo disponíveis no feature pack podem ser usadas. Se não está, é possível fazer o download do Dojo Toolkit. Pode-se encontrar um link para ele na seção Recursos deste artigo.

O Cenário 4 demonstra o mesmo caso de uso do Cenário 2. Esses widgets de amostra permitem que as páginas da Web acessem recursos centrais da rede, e simplificam bastante o desenvolvimento de aplicativos de telecomunicações. Esses widgets OneAPI Dojo de amostra podem ser testados no Telecom Web Services Simulator fornecido no kit de ferramentas. Este é o processo de instalação das amostras de REST:

  1. Instale o IBM WebSphere Telecom Toolkit v7.1 no Rational Application Developer v7.5 ou posterior.
  2. Abra o Rational Application Developer.
  3. Carregue as amostras na área de trabalho do Rational Application Developer, usando a páginaImport links from the Telecom Web Services Feature Samples . É possível acessar essa página selecionando Help > Samples > Samples > Technology Samples > Telecom Web Services Feature > Telecom Web Services Samples > One API Widget Sample.
  4. Revise as instruções sobre pré-requisitos clicando no link Setup Instructions .
  5. Importe a amostra,
  6. Importe o Dojo Toolkit para a pasta WebContent no projeto OneAPISample.
  7. Para testar essas amostras com relação ao simulador de serviços da Web, prefixe /ParlayX21Web ao valor do atributo endPoint na tag <div> em cada um dos arquivos HTML de amostra sob a pasta telcoSampleWidgets: OneAPISample > WebContent > dojo > telcoSampleWidgets. Por exemplo, este deve ser o endPoint do Short Message Service: /ParlayX21Web/ShortMessageService/services/REST/sms
  8. Implemente e execute o WebSphere Simulator no IBM® WebSphere® Application Server versão 7.0 ou posterior.
    Nota: esses widgets OneAPI de amostra podem ser testados no simulador de serviços da Web fornecido no kit de ferramentas.
  9. Clique com o botão direito do mouse e selecione OneAPISamples > Webcontent > dojo > telcoSampleWidgets > sendSmsDemo.html e selecione Run As > Run on server.

Esta ação abre uma página com a amostra OneAPI sendSmsDemo, como mostra a Figura 1.


Figura 1. Amostra de OneAPI sendSmsDemo
OneAPI sample page with sendSmsDemo widget

  1. Na visualização Activity do Web Services Simulator, verifique se as mensagens SMS foram entregues

Figura 2. Visualização Activity mostrando a entrega de SMS
Shows date, time, beginning of content

Visualização maior da Figura 2.

Dica:
consulte a atualização do IBM Education Assistant para o WebSphere Telecom Toolkit > versão 7.1, que fornece etapas detalhadas sobre a configuração dos widgets Dojo de amostra fornecidos no Rational Application Developer. Pode-se encontrar um link para ela na seção Recursos deste artigo. Nota: No caso dos widgets Dojo de amostra que foram fornecidos, supõe-se que eles sejam servidos a partir do mesmo servidor que o TWSS. Do contrário, é possível que as restrições ao cross-site scripting se apliquem.


Resumo

A dinâmica do segmento de mercado de telecomunicações em transformação e a Web 2.0 estão criando várias possibilidades interessantes. A disponibilidade dos recursos da rede de telecomunicações por meio da interface disseminada de HTTP, o suporte para cargas úteis XML e JSON, as APIs com estilo REST e as interfaces de serviços da Web fazem com que um desenvolvedor de aplicativos de terceiros desenvolva e forneça aplicativos de telecomunicações inovadores com mais facilidade. Essa barreira de entrada baixa para os provedores de conteúdo da Web, por sua vez, significa serviços melhores para os clientes.

Informações sobre downloads

Descrição: Intercâmbio de Projeto com código de amostra

Sobre os downloads

  • Pode-se encontrar o código de origem do Cenário 3 no arquivo TWSS_Usage_Sample_PI.zip .
  • Pode-se encontrar o código de origem do Cenário 2 no arquivo groupSMS.zip .
  • Certifique-se de que o caminho de desenvolvimento do projeto StartNotificationClient tenha uma referência ao arquivo com.ibm.ws.webservices.thinclient_7.0.0.jar , disponível emRAD75Home\runtimes\base_v7\runtimes.
  • Certifique-se de que o caminho de desenvolvimento do projeto OneAPIJavaClient tenha uma referência ao arquivo com.ibm.jaxws.thinclient_7.0.0.jar , disponível em RAD75Home\runtimes\base_v7\runtimes.


Downloads

DescriçãoNomeTamanhoMétodo de download
Source code for Scenario 3TWSS_Usage_Sample_PI.zip115KBHTTP
Source code for Scenario 2groupSMS.zip2KBHTTP

Informações sobre métodos de download


Recursos

Aprender

Obter produtos e tecnologias

Discutir

Sobre os autores

author photo

Raghunath E. Nair é engenheiro de software principal do laboratório de software da IBM Índia, em Bangalore. Ele passou a fazer parte da IBM em 2006. Sua função mais recente é o design, desenvolvimento e suporte de software para telecomunicações para o software IBM WebSphere, incluindo IBM WebSphere TWSS e IBM WebSphere IMS Connector. Suas áreas de especialização são integração de middleware, SOA, serviços da Web e telecomunicações. Foi coautor de Using WebSphere Message Broker as an ESB with WebSphere Process Server na série IBM Redbooks, e tem diploma de Bacharel em Tecnologia em Eletrônica e Comunicações pela Universidade de Calicute.

author photo

Chandrashekar B. Naik é engenheiro de software da equipe do laboratório de software da IBM Índia. Ele passou a fazer parte da IBM em 2004 e tem experiência em design, desenvolvimento e teste de software. Suas áreas de especialização incluem Java, J2EE e programação de serviços da Web, incluindo WebSphere Application Server, Telecom Web Services Server, Mobile Portal Accelerator, computação disseminada e software WebSphere para telecomunicações. Atualmente, trabalha com desenvolvimento, suporte e teste do WebSphere Telecom Web Services Server. Chandrashekar também é programador certificado pela Sun e tem diploma de Bacharel em Engenharia em Ciências da Computação pela Universidade Tecnológica Visveswaraiah, de Belgaum.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Industries, Rational
ArticleID=658236
ArticleTitle=Usando Recursos Centrais de Redes de Telecomunicações para Desenvolver Aplicativos da Web: Parte 2: Usando APIs com estilo REST
publish-date=05122011
author1-email=raghunath.nair@in.ibm.com
author1-email-cc=
author2-email=chandrashekar@in.ibm.com
author2-email-cc=