
Compartilhar:
Julia está empenhada em capacitar outros desenvolvedores por meio da criação de tutoriais, guias e recursos práticos. Com experiência em divulgação e educação, ela busca tornar a tecnologia mais acessível e aprimorar a experiência geral dos desenvolvedores. É comum encontrá-la em eventos da comunidade local.
Crie um serviço web de SMS com Java
Criamos este exemplo usando o JDK 11, o Gradle 7.1, o Gretty 3.0.5 e o Vonage Server SDK para Java v.6.4.0
A SMS API da Vonage é um serviço que permite enviar e receber mensagens SMS em qualquer lugar do mundo. A Vonage oferece APIs REST, mas é muito mais fácil usar o SDK Java que criamos para você.
Você já aprendeu a enviar mensagens SMS com Java. Neste tutorial, vamos dar um passo adiante e criar um serviço web com base nisso!
Veja o código-fonte no GitHub.
Pré-requisitos
Antes de começar, há algumas coisas que você precisará ter instaladas no seu computador de desenvolvimento:
Gradle para compilar seu projeto
Criar o projeto
Primeiro, você precisa configurar seu projeto Gradle e baixar o SDK Java da Vonage.
Crie um diretório para armazenar seu projeto. Dentro desse diretório, execute gradle init.
Crie um novo projeto Gradle:
Execute
gradle init --type=java-applicationo comandoSelecione
Groovycomo linguagem de scriptSelecione
JUnit Jupitercomo estrutura de testesManter o padrão
Project nameManter o padrão
Source package
Instale o SDK Java da Vonage
Em seguida, abra o build.gradle arquivo e adicione o seguinte ao bloco de dependências:
// Install the Vonage Java SDK
implementation 'com.vonage:client:6.4.0'Agora, se você abrir o terminal no diretório que contém esse build.gradle arquivo, você pode executar:
Este comando baixará o SDK Java da Vonage e o armazenará para uso posterior. Se você tivesse algum código-fonte, ele também o compilaria — mas você ainda não escreveu nenhum. Vamos resolver isso!
Crie um serviço web para enviar SMS
Vamos criar um pequeno serviço HTTP e, em seguida, testá-lo com o Postman. Felizmente, o Gradle facilita bastante isso.
Primeiro, aplique o plugin Gretty ao build.gradle arquivo, adicionando isto ao seu plugins bloco:
id 'war'
id 'org.gretty' version '3.0.5'A primeira linha indica ao Gradle que ele deve compilar um arquivo WAR, utilizando os arquivos-fonte em src/main/java e src/main/webapp. A segunda linha adiciona a capacidade de iniciar seu aplicativo web diretamente do Gradle usando o contêiner de servlets Jetty!
A seguir, vamos definir o caminho de contexto como / , por uma questão de simplicidade.
Adicione o bloco a seguir a build.gradle:
gretty {
contextPath = '/'
}Executar gradle appRun (observe que você deve usar appRun e não run para executar o servidor web). Na primeira vez, isso vai demorar um pouco, pois ele precisa baixar algumas dependências.
Por fim, você deverá ver algo assim:
O Jetty já está executando seu serviço web (vazio). Acesse a URL exibida para verificar se ele está funcionando corretamente. Deve ficar mais ou menos assim:
Empty web page
Agora vamos escrever um servlet! Crie um arquivo chamado src/main/java/sms/webservice/SendSMSServlet.java.
package sms.webservice;
import com.vonage.client.VonageClient;
import com.vonage.client.VonageClientException;
import com.vonage.client.sms.MessageStatus;
import com.vonage.client.sms.SmsSubmissionResponse;
import com.vonage.client.sms.messages.TextMessage;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServlet;
public class SendSMSServlet extends HttpServlet {
private String VONAGE_BRAND_NAME;
private VonageClient client;
public void init(ServletConfig config) {
// Load configuration from the servlet container:
VONAGE_BRAND_NAME = config.getInitParameter("from_number");
String api_key = config.getInitParameter("api_key");
String api_secret = config.getInitParameter("api_secret");
client = VonageClient.builder().apiKey(api_key).apiSecret(api_secret).build();
}
protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException {
try {
// Extract form parameters from the request:
String to_number = req.getParameter("to");
String message = req.getParameter("message");
TextMessage sms = new TextMessage(VONAGE_BRAND_NAME,
to_number,
message
);
SmsSubmissionResponse response = client.getSmsClient().submitMessage(sms);
if (response.getMessages().get(0).getStatus() == MessageStatus.OK) {
System.out.println("Message sent successfully.");
resp.getWriter().println(response.getMessages().get(0));
} else {
System.out.println("Message failed with error: " + response.getMessages().get(0).getErrorText());
}
} catch (VonageClientException nce) {
throw new ServletException(nce);
}
}
}E, em seguida, precisamos configurar o servlet em nosso contêiner de servlets, criando o seguinte em src/main/webapp/WEB-INF/web.xml:
<web-app>
<servlet>
<servlet-name>send-sms</servlet-name>
<servlet-class>sms.webservice.SendSMSServlet</servlet-class>
<init-param>
<param-name>from_number</param-name>
<param-value>VONAGE_BRAND_NAME</param-value>
</init-param>
<init-param>
<param-name>api_key</param-name>
<param-value>VONAGE_API_KEY</param-value>
</init-param>
<init-param>
<param-name>api_secret</param-name>
<param-value>VONAGE_API_SECRET</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>send-sms</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>Preencha VONAGE_API_KEY e VONAGE_API_SECRET com os valores encontrados no seu Painel da API da Vonage. Você precisará substituir VONAGE_BRAND_NAME por um dos seus números virtuais.
Observação: Em alguns países (EUA),
VONAGE_BRAND_NAMEdeve ser um dos seus números virtuais da Vonage. Em outros países (Reino Unido), você pode escolher livremente uma sequência alfanumérica — por exemplo, o nome da sua marca, como AcmeInc. Leia sobre os recursos de SMS específicos de cada país no portal de desenvolvedores.
Em seguida, execute gradle appRun. Se tudo for compilado corretamente, vamos abrir o o Postman e fazer uma solicitação POST para http://localhost:8080/send-sms/, especificando message e to no corpo, conforme mostrado abaixo:
Making a request with Postman
Espero que tenha dado certo! Então, agora você criou um serviço web REST para enviar mensagens SMS! Na verdade, há muitas outras coisas que você provavelmente vai querer fazer antes de colocar isso em produção. Você poderia pensar em adicionar autenticação (caso contrário, qualquer pessoa poderia enviar uma mensagem usando sua Account da API da Vonage!), um formulário web bacana para enviar solicitações ao serviço e melhorar o tratamento de erros — mas esse já é um bom começo!
Referências
Compartilhar:
Julia está empenhada em capacitar outros desenvolvedores por meio da criação de tutoriais, guias e recursos práticos. Com experiência em divulgação e educação, ela busca tornar a tecnologia mais acessível e aprimorar a experiência geral dos desenvolvedores. É comum encontrá-la em eventos da comunidade local.