
Partager:
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.
Que puis-je faire avec le MMS ?
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
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,.pnget.giffichiersAudio : Prise en charge de l'envoi de
.mp3fichiersVideo : Prise en charge de l'envoi de
.mp4fichiersvCard : Permet d'envoyer des
.vcffichiers
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.loadLa 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_dataL'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
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
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'
endJe 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 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:
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.