https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-send-sms-messages-with-elixir-dr/E_SMS-Elixir_1200x600.png

Comment envoyer des SMS avec Elixir

Publié le April 28, 2021

Temps de lecture : 6 minutes

Les SMS continuent d'être le moteur d'une grande partie de nos communications mondiales aujourd'hui, et avec le nouveau SDK expérimental de Nexmo Elixir SDK expérimental, vous pouvez commencer à envoyer des SMS en Elixir. Tout ce dont vous avez besoin, c'est d'un Account Nexmo, d'un numéro de téléphone virtuel et de quelques lignes de code.

Dans ce tutoriel, nous allons parcourir les étapes pour envoyer votre premier SMS en Elixir. Vous n'avez besoin que d'une connaissance de base d'Elixir pour commencer - nous ferons le reste ensemble !

Si vous préférez, vous pouvez également cloner une version entièrement fonctionnelle de ce code sur GitHub.

Conditions préalables

Pour ce tutoriel, vous aurez besoin des éléments suivants :

  • Elixir installé sur votre ordinateur

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.

Vos références et votre numéro de téléphone Nexmo

Pour envoyer un SMS, vous devez obtenir la clé et le secret de votre API Nexmo. Vous devez également configurer un numéro de téléphone virtuel provisionné par Nexmo. Faisons cela ensemble maintenant.

Vos identifiants API

Une fois que vous vous êtes connecté au Nexmo Dashboardvous verrez vos identifiants API tout en haut de la page.

API credentials in the Vonage Developer DashboardAPI credentials in the Vonage Developer Dashboard

Prenez-en note et conservez-les en lieu sûr, car nous les utiliserons dans un instant.

Votre numéro de téléphone virtuel

L'étape suivante pour préparer l'envoi d'un SMS consiste à fournir un numéro de téléphone virtuel. Dans le tableau de bord Nexmo, vous verrez un lien déroulant appelé Numbers dans la barre latérale gauche. Lorsque vous cliquez dessus, le menu déroulant se développe et vous voyez plusieurs options. Cliquez sur l'option intitulée Buy Numbers.

Buy numbers menu optionBuy numbers menu option

Une fois que vous aurez accédé à la section Buy Numbers vous pourrez rechercher un numéro de téléphone sur la base des critères suivants Country, Features, Type. Vous pouvez également restreindre la recherche pour n'afficher que les numéros de téléphone comportant des combinaisons de chiffres spécifiques.

Buy Numbers interfaceBuy Numbers interface

Recherchez un numéro de téléphone avec un indicatif de pays qui vous convient. Vous n'avez besoin que de SMS pour Features et d'un Type de Mobile. Après avoir cliqué sur le bouton Search vous verrez apparaître une liste de Numbers potentiels. Vous pouvez choisir celui qui vous convient en cliquant sur le bouton de couleur orange Buy à droite.

Buy number buttons in list of available numbersBuy number buttons in list of available numbers

Vous avez maintenant provisionné avec succès un numéro de téléphone virtuel Nexmo. Comme vous l'avez fait avec vos identifiants API, copiez votre nouveau numéro de téléphone dans un endroit sûr. Nous l'utiliserons dans notre prochaine étape pour envoyer notre premier SMS avec Elixir.

Envoyer un SMS avec Elixir

Mise en place de la structure de notre code

A partir de votre terminal, créez un nouveau répertoire pour héberger votre projet Elixir, puis naviguez dans ce répertoire. Pour les besoins de ce tutoriel, nous l'appellerons send-sms-elixir.

mkdir send-sms-elixir cd send-sms-elixir

Nous aurons besoin de trois fichiers pour notre projet. Pour rappel, si vous prévoyez de livrer ce projet au contrôle de version public, assurez-vous de ne pas archiver votre fichier .env car il contient vos informations d'identification sensibles.

touch mix.exs send-sms.ex .env

Une fois que vous avez terminé, vous devriez avoir trois fichiers dans votre dossier ./send-sms-elixir dans votre dossier

├── mix.exs
├── send-sms.ex
├── .env

Définir notre fichier de mixage

Chaque projet Elixir qui a une dépendance externe doit créer un fichier Mix qui installe cette dépendance dans votre projet. Mix, pour ceux qui ne le connaissent pas, est similaire à Bundler en Ruby ou à npm en Node.js.

Dans notre fichier mix.exs nous définirons le nom de notre projet et deux dépendances, qui sont le SDK expérimental Nexmo Elixir et Envy, un paquet Hex qui nous aide à gérer nos variables d'environnement :

defmodule SendSms.Mixfile do
  use Mix.Project

  def project do
    [app: :send_sms,
     version: "0.0.1",
     deps: deps]
  end

  defp deps do
     [
       {:nexmo, "0.4.0", hex: :nexmo_elixir},
       {:envy, "~> 1.1.1"}
     ]
  end
end

Définition des variables d'environnement

Nous avons précédemment créé notre numéro de téléphone virtuel Nexmo et obtenu nos identifiants API Nexmo. Nous allons maintenant les intégrer dans notre application en les stockant dans notre fichier .env fichier. Dans votre fichier .env mettez ce qui suit, en fournissant votre clé API, votre secret API et votre numéro de téléphone Nexmo aux endroits appropriés :

NEXMO_API_KEY=
NEXMO_API_SECRET=
NEXMO_NUMBER=
SMS_API_ENDPOINT="https://rest.nexmo.com/sms/json"

En plus de notre clé API, de notre secret et de notre numéro de téléphone, nous fournissons également le point de terminaison de l'API SMS Nexmo dans notre fichier .env pour qu'il soit utilisé par le SDK.

Définir notre code Elixir

Nous sommes maintenant prêts à créer le code qui enverra notre premier SMS ! Ouvrez le fichier send_sms.ex et ajoutez ce qui suit :

defmodule SendSms do
  use Application

  def start(_type, _args) do
    unless Mix.env == :prod do
      Envy.auto_load
    end
  end

  def send_msg(to_number, message)
    Nexmo.Sms.send(
      from: System.get_env("NEXMO_NUMBER"),
      to: to_number,
      text: message
    )
  end
end

Dans ce qui précède, nous définissons un module appelé SendSms qui possède une fonction SendSms.start/2 qui charge nos variables d'environnement à partir du fichier .env à l'aide du paquet Envy.

Nous créons ensuite une deuxième fonction appelée SendSms.send/2 qui accepte comme argument le numéro du destinataire auquel nous souhaitons envoyer le texte et le message proprement dit. Dans la fonction, nous appelons la fonction Nexmo Elixir SDK Nexmo.Sms.send/1 et lui transmettons notre numéro virtuel Nexmo (stocké en tant que variable d'environnement), l'argument to_numberet le message.

Voilà, c'est fait ! Nous sommes maintenant prêts à exécuter notre code et à envoyer le message.

Exécution de l'application

La manière la plus simple d'exécuter votre application et d'envoyer un SMS est de charger votre projet dans iex, un shell Elixir interactif.

Commençons par compiler notre fichier send_sms.ex ce qui rendra la fonction send_msg/2 dans l'interpréteur de commandes. Pour le compiler, tout ce que nous avons à faire est de l'exécuter depuis la ligne de commande : elixirc send_sms.ex. Cela ne devrait prendre qu'un instant, et une fois que c'est terminé, nous pouvons exécuter notre application dans iex.

Pour exécuter votre projet dans iex à partir de votre ligne de commande, exécutez ce qui suit : iex -S mix. Cela démarrera votre projet et le lancera dans le shell.

Vous verrez une invite de commande qui ressemble à ceci :

Interactive Elixir (1.9.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

A ce stade, vous pouvez envoyer votre SMS !

iex(1)> SendSms.send_msg(RECIPIENT_NUMBER, "This is powered by Nexmo on Elixir!")

Vous recevrez en retour de l'API SMS Nexmo la confirmation que vous avez envoyé le message avec succès, avec un code d'état HTTP de 200.

Félicitations, vous avez réussi !

Pour en savoir plus

Si vous souhaitez en savoir plus sur les SMS et Nexmo, n'hésitez pas à consulter les documents suivants :

Partager:

https://a.storyblok.com/f/270183/384x384/e5480d2945/ben-greenberg.png
Ben GreenbergAnciens de Vonage

Ben est un développeur en seconde carrière qui a auparavant passé une décennie dans les domaines de la formation pour adultes, de l'organisation communautaire et de la gestion d'organisations à but non lucratif. Il a travaillé comme défenseur des développeurs pour Vonage. Il écrit régulièrement sur l'intersection du développement communautaire et de la technologie. Originaire de Californie du Sud et ayant longtemps vécu à New York, Ben réside aujourd'hui près de Tel Aviv, en Israël.