
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
Créer un service Web SMS avec Java
Nous avons construit cet exemple en utilisant JDK 11, Gradle 7.1, Gretty 3.0.5, et le SDK Vonage Server pour Java v.6.4.0.
L'API SMS API de Vonage est un service qui vous permet d'envoyer et de recevoir des SMS partout dans le monde. Vonage fournit des API REST, mais il est beaucoup plus facile d'utiliser le SDK Java que nous avons écrit pour vous.
Vous avez déjà appris à envoyer des SMS avec Java. Dans ce tutoriel, nous allons aller plus loin et créer un service Web autour de cette méthode !
Voir le code source sur GitHub.
Conditions préalables
Avant de commencer, il y a quelques éléments que vous devez installer sur votre machine de développement :
Gradle pour construire votre projet
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Créer le projet
Tout d'abord, vous devez configurer votre projet Gradle et télécharger le SDK Java de Vonage.
Créez un répertoire contenant votre projet. Dans ce répertoire, exécutez gradle init.
Créer un nouveau projet Gradle :
Exécuter
gradle init --type=java-applicationcommandeSélectionnez
Groovycomme langue de scriptSélectionner
JUnit Jupitercomme cadre de testLaisser la valeur par défaut
Project nameLaisser la valeur par défaut
Source package
Installer le SDK Java de Vonage
Ensuite, ouvrez le fichier build.gradle et ajoutez ce qui suit au bloc des dépendances :
// Install the Vonage Java SDK
implementation 'com.vonage:client:6.4.0'Maintenant, si vous ouvrez votre console dans le répertoire qui contient ce fichier build.gradle vous pouvez exécuter :
Cette commande téléchargera le SDK Java de Vonage et le stockera pour plus tard. Si vous aviez un code source, il serait également compilé, mais vous n'en avez pas encore écrit. Corrigeons cela !
Créer un service Web pour envoyer des SMS
Nous allons construire un petit service HTTP et le tester avec Postman. Heureusement, Gradle rend cela relativement facile.
Tout d'abord, appliquez le plugin Gretty au fichier build.gradle en ajoutant ceci à votre plugins bloc :
id 'war'
id 'org.gretty' version '3.0.5'La première ligne indique à Gradle qu'il doit construire un fichier war, en utilisant les fichiers sources dans src/main/java et src/main/webapp. La deuxième ligne ajoute la possibilité de lancer votre application web directement depuis Gradle en utilisant le conteneur de servlet Jetty !
Ensuite, définissons le chemin d'accès au contexte à / pour des raisons de simplicité.
Ajouter le bloc suivant à build.gradle:
gretty {
contextPath = '/'
}Exécuter gradle appRun (notez que vous utilisez appRun et non run pour lancer le serveur web). La première fois, le téléchargement des dépendances prendra un certain temps.
Au bout du compte, vous devriez obtenir quelque chose comme ceci :
Jetty exécute maintenant votre service web (vide). Lancez l'URL que vous voyez pour vérifier qu'il fonctionne correctement. Elle devrait ressembler à ceci :
Empty web page
Maintenant, écrivons un servlet ! Créez un fichier appelé 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);
}
}
}Ensuite, nous devons configurer le servlet dans notre conteneur de servlets en créant la propriété suivante 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>Remplir VONAGE_API_KEY et VONAGE_API_SECRET avec les valeurs trouvées dans votre tableau de bord de l'API Vonage. Vous devrez remplacer VONAGE_BRAND_NAME par l'un de vos numéros virtuels Vonage numéros virtuels de Vonage.
Note : Dans certains pays (US),
VONAGE_BRAND_NAMEdoit être l'un de vos numéros virtuels Vonage. Dans d'autres pays (Royaume-Uni), vous êtes libre de choisir une chaîne alphanumérique - par exemple, votre nom de marque comme AcmeInc. Pour en savoir plus sur les fonctions SMS spécifiques à chaque pays, consultez le portail de développement.
Ensuite, lancez gradle appRun. Si tout se construit correctement, lançons Postman et faisons une requête POST à http://localhost:8080/send-sms/en spécifiant message et to dans le corps de la requête, comme indiqué ci-dessous :
Making a request with Postman
J'espère que cela a fonctionné ! Vous avez maintenant construit un service Web REST pour l'envoi de SMS ! En réalité, il y a beaucoup d'autres choses à faire avant de le déployer. Vous pourriez envisager d'ajouter l'authentification (sinon, n'importe qui pourrait envoyer un message en utilisant votre Account API Vonage !), un formulaire Web agréable pour envoyer des messages au service, et améliorer la gestion des erreurs - mais c'est un bon début !
Références
Partager:
Julia s'engage à aider ses collègues développeurs en créant des tutoriels, des guides et des ressources pratiques. Grâce à son expérience en matière de sensibilisation et d'éducation, elle vise à rendre la technologie plus accessible et à améliorer l'expérience globale des développeurs. Vous pouvez souvent la trouver lors d'événements communautaires locaux.
