https://d226lax1qjow5r.cloudfront.net/blog/blogposts/what-can-i-do-with-mms/what-mms-can-do.png

Que puis-je faire avec le MMS ?

Publié le August 30, 2022

Temps de lecture : 8 minutes

Que puis-je faire avec le MMS ?

Une question de ce type a récemment été posée sur l'un de nos canaux Slack internes.

Slack screenshot showing the message "Hi team, what types of files can be sent over MMS?"Slack screenshot

Le MMS en tant que canal de communication est probablement mieux connu pour l'envoi d'images, et à ses débuts, le MMS était souvent appelé "messagerie d'images". Dans ce billet de blog, nous verrons un exemple d'envoi d'un fichier image par MMS à l'aide de l'API Messages de Vonage. Mais avant d'en arriver là, je voulais vous donner un peu plus d'informations sur le MMS et sur certaines de ses autres capacités.

Bien qu'il soit principalement associé à l'envoi d'images, l'acronyme MMS signifie en fait "Multi Media Service". Les MMS ne se limitent pas à l'envoi de fichiers images, mais permettent d'envoyer de nombreux types de fichiers sur le réseau cellulaire.

L'API Messages de Vonage prend actuellement en charge quatre types de messages MMS différents :

  • Image : Prise en charge de l'envoi .jpg, .jpeg, .png et .gif fichiers

  • Audio : Prise en charge de l'envoi de .mp3 fichiers

  • Video : Prise en charge de l'envoi de .mp4 fichiers

  • vCard : Permet d'envoyer des .vcf fichiers

Pourquoi utiliser le MMS ?

Il existe de nombreux cas d'utilisation de la messagerie MMS. Utilisé pour la messagerie promotionnelleLes MMS peuvent ajouter une dimension supplémentaire par rapport aux SMS, en faisant la promotion d'un produit à l'aide d'images, de vidéos ou même de clips sonores. Il existe également de nombreux cas d'utilisation transactionnelles Il existe également de nombreuses utilisations transactionnelles, telles que les vidéos d'instruction dans le cadre d'un flux de travail d'assistance à la clientèle, ou la fourniture d'une preuve de livraison de colis.

Envoi d'un message MMS avec l'API Messages de Vonage

Si vous avez déjà utilisé Vonage pour envoyer des messages SMS, ou même si vous ne l'avez pas fait, il est très facile de commencer à envoyer des messages MMS à l'aide de Vonage, surtout maintenant que l'API de messages de Vonage a été ajoutée à nos SDK de serveur. Vonage Messages API a été ajoutée à nos SDK de serveur..

L'API Messages expose un seul point de terminaison POST unique : https://api.nexmo.com/v1/messageset attend un en-tête Authorization (nous recommandons ici d'utiliser l'authentification par jeton porteur) et une charge utile JSON qui ressemble à ceci :

{
  "message_type": "image",
  "image": {
    "url": "https://example.com/image.jpg"
  },
  "to": "447700900000",
  "from": "447700900001",
  "channel": "mms"
}

L'exemple ci-dessus est la structure JSON que vous utiliseriez pour envoyer un message image par MMS.

Il y a quelques points à prendre en compte : la propriété de l'image doit être une URL accessible au public et il y a certaines exigences concernant la propriété de l'image. url pour l'image doit être une URL accessible au public, et il y a certaines exigences concernant les propriétés to et from nombres.

Au nombre de

L'API Messages prend actuellement en charge l'envoi de MMS aux ÉTATS-UNIS aux numéros des réseaux suivants :

  • AT&T

  • T-Mobile

  • Verizon

Le numéro to fourni à l'API Messages de Vonage doit être un numéro qui peut recevoir des MMS sur l'un de ces réseaux.

A partir de Numbers

Le numéro from doit être soit un numéro de USSC (US Short Codes), 10DLC (code long à 10 chiffres), ou un TFN (numéro gratuit) activé pour les MMS et lié à une campagne enregistrée. Les différents types de numéros prennent en charge différentes fonctionnalités MMS :

  • USSC : images, vCard

  • 10DLC : images, audio, vidéo, vCard

  • TFN : images, audio, Video

En savoir plus sur les différents types de numéros de téléphone.

Exemple d'Applications

La meilleure façon d'illustrer l'utilisation de l'API de Vonage pour l'envoi de messages MMS est de passer par un exemple d'application.

Je n'ai pas de produits à promouvoir via le MMS, mais j'adore les bandes dessinées de bandes dessinées xkcdJ'ai donc utilisé le SDK Ruby de Vonage pour créer une petite application Ruby qui envoie chaque jour un message MMS contenant une bande dessinée aléatoire tirée de xkcd. Si vous n'êtes pas Rubyiste, vous pouvez utiliser l'un de nos autres SDK serveurou travailler directement avec l'API Messages pour mettre en œuvre quelque chose de similaire.

Mon application Ruby fait deux choses :

  • Récupère les données d'une bande dessinée xkcd aléatoire à partir de l'API API xkcd

  • Envoie la bande dessinée sous forme de MMS à l'aide de l'API Messages de Vonage Messages API

J'ai ensuite mis en place une tâche Cron qui exécute l'application une fois par jour à une heure donnée.

Mise en place des dépendances

Pour la première tâche de l'application - récupérer les données de l'API xkcd - je suis tombé sur un RubyGem qui fournissait cette fonctionnalité. Malheureusement, il ne faisait pas exactement ce que je voulais pour mon application en termes de retour des données, et j'ai donc décidé d'écrire mon propre RubyGem, get_xkcdqui l'a fait. Si vous voulez vous plonger dans l'implémentation, vous pouvez consulter le code source sur GitHub.

Mon Gemfile ressemble à ceci :

source "https://rubygems.org"

ruby "3.0"

gem "dotenv"
gem "vonage"
gem "rake"
gem "whenever", require: false
gem "get_xkcd"

La dépendance la plus importante ici est le fichier vonage gemque j'utilise pour envoyer le MMS via l'API Messages de Vonage.

J'utilise mon get_xkcd pour interagir avec l'API de xkcd. Le fichier dotenv gem sert à gérer les variables d'environnement de mon application. Le fichier rake gem et whenever gem servent à mettre en place une tâche à exécuter via Cron.

Le dossier d'application

J'ai créé un fichier app.rb qui contient la logique pour obtenir les données des bandes dessinées xkcd et ensuite envoyer un message MMS en utilisant certaines de ces données.

Mon fichier d'application principal ressemble à ceci :

# app.rb

require 'dotenv'
require 'vonage'
require 'get_xkcd'

Dotenv.load

random_issue_data = GetXkcd::Comic.fetch_random_issue_data

client = Vonage::Client.new(
  application_id: ENV['APP_ID'],
  private_key: File.read(ENV['PATH_TO_PRIVATE_KEY_PATH'])
)

message = Vonage::Messaging::Message.mms(
  type: 'image',
  message: {
    url: random_issue_data['img'],
    caption: random_issue_data['title']
  }
)

client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)

L'application commence par exiger la présence de l'élément dotenv, vonage, et get_xkcd gems.

require 'dotenv'
require 'vonage'
require 'get_xkcd'

Toutes les variables d'environnement nécessaires sont définies dans un fichier .env dans le répertoire racine de mon projet et chargées ensuite dans un fichier ENV à l'aide de la méthode Dotenv.load méthode.

Dotenv.load

La première chose que mon application doit faire est d'obtenir les données d'une bande dessinée xkcd aléatoire. Ma bibliothèque GetXkcd définit une classe Comic qui fournit plusieurs méthodes. L'une de ces méthodes est fetch_random_issue_data qui, comme son nom l'indique, récupère les données d'un numéro aléatoire de la bande dessinée xkcd.

random_issue_data = GetXkcd::Comic.fetch_random_issue_data

L'application stocke le retour dans une random_issue_data variable. La valeur de retour de la méthode est un Ruby Hash de données pour une bande dessinée xkcd aléatoire, comprenant une URL pour l'image de la bande dessinée en tant que valeur de la clé img et le titre de la BD comme valeur de la clé title comme valeur de la clé. Ces valeurs seront utilisées ultérieurement lors de la création du message MMS.

Le reste du fichier app.rb traite de la création et de l'envoi du message MMS.

Instauration de l'objet client

La première étape de l'envoi d'un message à l'aide de l'API Messages de Vonage consiste à instancier un objet Vonage Client . Ici, nous transmettons deux arguments de type mot-clé : application_id et private_key.

client = Vonage::Client.new(
  application_id: ENV['APP_ID'],
  private_key: File.read(ENV['PATH_TO_PRIVATE_KEY_PATH'])
)

Vous vous demandez peut-être ce que représentent ces deux arguments.

Pour utiliser l'API Messages, vous devez créer une application Vonagevia le tableau de bord du développeur ou de l Applications APIet l'activer pour Messages.

Screenshot of the Messages toggle in the Dashboard Application Capabilities, with the toggle set to "on"Screenshot of the Messages toggle in the Dashboard

Une fois créée, l'application aura un identifiant unique. Vous pourrez également générer et télécharger une clé privée pour cette application.

Screenshot of the Generate Private Key button in the Dashboard Application pageScreenshot of the Generate Private Key button in the Dashboard

Ma clé privée est stockée dans le répertoire racine de mon fichier de projet. L'identifiant de mon application et le chemin d'accès à ma clé privée sont définis dans mon fichier .env fichier.

L'un des détails dont nos SDK de serveur s'occupent pour vous est la gestion de l'authentification et la génération d'en-têtes de requête HTTP. Les en-têtes application_id et private_key transmises lors de l'instanciation de l'objet Client sont ensuite utilisées pour générer un JWT (jeton Web JSON) qui est ensuite défini comme la valeur de l'en-tête Authorization envoyé avec la requête HTTP à l'API Messages.

Instauration de l'objet message MMS

Le SDK Ruby de Vonage définit un objet Messaging::Message qui fournit des méthodes pour créer des objets de message spécifiques pour chaque canal. Ici, l'appel de la méthode mms renvoie un objet MMS avec des propriétés basées sur les arguments passés.

message = Vonage::Messaging::Message.mms(
  type: 'image',
  message: {
    url: random_issue_data['img'],
    caption: random_issue_data['title']
  }
)

Ici, nous fixons la valeur type à image (les autres options pour MMS type sont audio, video, ou vcard). Dans le message nous attribuons à l'élément url à l'URL de la page img des données de xkcd, et une valeur facultative de caption à l'URL title de ces données.

Envoi du message MMS

Passons maintenant à la partie la plus importante de l'application : l'envoi du message MMS !

client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)

L'appel de la méthode messaging sur l'objet Client que nous avons créé précédemment renvoie un objet Messaging objet. Nous enchaînons ensuite une invocation de méthode send sur cet objet retourné, qui combine les méthodes from et to avec l'objet message transmis, le convertit en JSON et l'envoie en tant que corps d'une requête HTTP au point de terminaison Messages API POST Messages.

N'oubliez pas les restrictions concernant from et to expliquées plus haut dans cet article.

Configuration de la tâche Cron

La dernière tâche consiste à configurer la tâche Cron. Je pourrais éditer le fichier crontab de mon système, mais il existe un Rubygem très utile appelé whenever qui simplifie le processus. Le gem whenever fournit quelques options différentes pour exécuter des tâches, telles que l'exécution d'une commande bash ou l'exécution d'une tâche rake tâche.

Rake est un programme d'exécution de tâches pour Ruby. Il vous permet de définir certaines tâches avec la syntaxe Ruby, qui peuvent ensuite être exécutées en étant passées à la commande rake à des fins d'exécution. Les tâches sont définies dans un fichier RakefileNous devons donc en ajouter une dans le répertoire de notre projet.

# Rakefile

desc "Send a random XKCD comic via MMS"
task :send_xkcd_mms do
  ruby 'app.rb'
end

Je définis ici une tâche unique avec une description (desc), un nom de tâche send_xkcd_mmset la tâche elle-même (définie dans un bloc do..end ) qui consiste simplement à exécuter mon fichier app.rb fichier.

Pour planifier la tâche avec le programme whenever gem je dois créer un fichier schedule.rb dans un répertoire config et y définir la planification.

# schedule.rb

job_type :rake, "cd :path && bundle exec rake :task"

every 1.day, at: '9:00 am' do
  rake "send_xkcd_mms"
end

La ligne job_type :rake, "cd :path && bundle exec rake :task" définit des valeurs par défaut pour l'exécution de la tâche. La tâche elle-même utilise la syntaxe Ruby pour définir un intervalle (every 1.day), une heure spécifique (at: '9:00 am'), puis la tâche que nous voulons planifier à l'intérieur d'un do..end bloc (rake "send_xkcd_mms").

Pour mettre à jour la base de données de mon système crontab de mon système avec ce calendrier, je dois ensuite exécuter whenever --update-crontab à partir de la ligne de commande.

Et voilà ! Les bandes dessinées quotidiennes xkcd via MMS.

Screenshot of xkcd comic issue 974 'The General Problem' in an MMSScreenshot of xkcd comic in an MMS

Conclusion et prochaines étapes

Dans ce billet de blog, nous en avons appris un peu plus sur les MMS, ce que vous pouvez faire avec, et comment utiliser l'API Messages de Vonage pour envoyer un message MMS.

La participation de la communauté est toujours la bienvenue. N'hésitez pas à nous rejoindre sur le Communauté Vonage Slack ou envoyez-nous un message sur sur Twitter.

Partager:

https://a.storyblok.com/f/270183/373x376/e8d3211236/karl-lingiah.png
Karl LingiahDéveloppeur Ruby Advocate

Karl est un défenseur des développeurs pour Vonage, qui se concentre sur la maintenance de nos SDK de serveur Ruby et sur l'amélioration de l'expérience des développeurs pour notre communauté. Il aime apprendre, fabriquer des objets, partager ses connaissances et tout ce qui a trait à la technologie du web.