
Teilen Sie:
Karl ist Developer Advocate bei Vonage und kümmert sich um die Wartung unserer Ruby Server SDKs und die Verbesserung der Entwicklererfahrung für unsere Community. Er liebt es zu lernen, Dinge zu entwickeln, Wissen zu teilen und alles, was allgemein mit Webtechnologie zu tun hat.
Was kann ich mit MMS machen?
Lesedauer: 7 Minuten
Was kann ich mit MMS machen?
Eine Frage in diesem Sinne wurde kürzlich in einem unserer internen Slack-Kanäle gestellt.
Slack screenshot
MMS als Kommunikationskanal ist wahrscheinlich am besten für den Versand von Bildern bekannt, und in den Anfängen wurde MMS oft als "Picture Messaging" bezeichnet. In diesem Blogbeitrag sehen wir uns ein Beispiel für den Versand einer Bilddatei per MMS mit der Vonage Messages API an. Bevor wir jedoch dazu kommen, möchte ich ein wenig mehr Hintergrundwissen über MMS und einige seiner anderen Funktionen vermitteln.
Obwohl es hauptsächlich mit dem Versand von Bildern in Verbindung gebracht wird, steht das Akronym MMS eigentlich für "Multi Media Service". MMS ist nicht nur auf den Versand von Bilddateien beschränkt, sondern ermöglicht es Ihnen, viele verschiedene Dateitypen über das Mobilfunknetz zu versenden.
Die Vonage Messages API unterstützt derzeit vier verschiedene MMS-Nachrichtentypen:
Bild: Unterstützt das Senden von
.jpg,.jpeg,.pngund.gifDateienAudio: Unterstützt das Senden von
.mp3DateienVideo: Unterstützt das Senden von
.mp4DateienvCard: Unterstützt das Senden von
.vcfDateien
Warum MMS verwenden?
Es gibt viele verschiedene Anwendungsfälle für MMS-Nachrichten. Verwendet für Werbebotschaftenkönnen MMS im Vergleich zu SMS-Nachrichten eine zusätzliche Dimension bieten, indem sie ein Produkt mit Bildern, Videos oder sogar Soundclips bewerben. Außerdem gibt es viele transaktionale wie z. B. Lehrvideos als Teil eines Kundensupport-Workflows oder als Nachweis für die Zustellung von Paketen.
Versenden einer MMS-Nachricht mit der Vonage Messages API
Wenn Sie bereits SMS-Nachrichten mit Vonage verschickt haben, oder auch wenn Sie es noch nicht getan haben, ist es jetzt ganz einfach, MMS-Nachrichten mit Vonage zu verschicken, vor allem, da die Vonage Messages API zu unseren Server SDKs hinzugefügt wurde.
Die Messages API stellt einen einzigen POST Endpunkt: https://api.nexmo.com/v1/messagesund erwartet einen Authorization Header (wir empfehlen hier die Verwendung der Bearer Token-Authentifizierung) und einen JSON-Payload, der etwa so aussieht:
{
"message_type": "image",
"image": {
"url": "https://example.com/image.jpg"
},
"to": "447700900000",
"from": "447700900001",
"channel": "mms"
}Das obige Beispiel ist die JSON-Struktur, die Sie verwenden würden, um eine Bildnachricht per MMS zu versenden.
Dabei sind einige Dinge zu beachten: Die url Eigenschaft für das Bild muss eine öffentlich zugängliche URL sein, und es gibt bestimmte Anforderungen an die to und from Numbers.
Zur Nummer
Die Messages API unterstützt derzeit den Versand von MMS in den USA an Numbers in den folgenden Netzen:
AT&T
T-Mobile
Verizon
Die to Nummer, die der Vonage Messages API zur Verfügung gestellt wird, muss eine Nummer sein, die MMS in einem dieser Netze empfangen kann.
Von Nummer
Die from Nummer muss entweder eine USSC (US Short Code) sein, 10DLC (10-stellige lange Vorwahl), oder TFN (gebührenfreie Nummer) für MMS aktiviert und mit einer registrierten Kampagne. Die verschiedenen Arten von Numbers unterstützen unterschiedliche MMS-Funktionen:
USSC: Bilder, vCard
10DLC: Bilder, Audio, Video, vCard
TFN: Bilder, Audio, Video
Erfahren Sie mehr über die verschiedenen Arten von Telefonnummern.
Beispielanwendung
Die Verwendung der Vonage Message API zum Senden von MMS-Nachrichten lässt sich am besten anhand einer Beispielanwendung demonstrieren.
Ich habe keine Produkte, für die ich mit MMS werben könnte, aber ich liebe xkcd-Comicsalso habe ich das Vonage Ruby SDK verwendet, um eine kleine Ruby-Anwendung zu erstellen, die täglich eine MMS-Nachricht mit einem zufälligen Comic aus xkcd verschickt. Wenn Sie kein Rubyist sind, können Sie auch eines unserer anderen Server-SDKsverwenden oder direkt mit der Messages API arbeiten, um etwas Ähnliches zu implementieren.
Meine Ruby-Anwendung macht zwei Dinge:
Ruft die Daten für einen zufälligen xkcd-Comic von der xkcd-API
Sendet den Comic als MMS über die Vonage Messages API
Dann habe ich einen Cron-Job eingerichtet, der die Anwendung einmal am Tag zu einer bestimmten Zeit ausführt.
Einrichten der Abhängigkeiten
Für die erste Aufgabe der Anwendung - das Abrufen der Daten von der xkcd-API - bin ich auf ein RubyGem das diese Funktionalität bietet. Leider hat es nicht genau das getan, was ich für meine Anwendung wollte, was die Rückgabe der Daten angeht, also habe ich beschlossen, ein mein eigenes RubyGem, get_xkcdzu schreiben, das dies tat. Wenn du dich mit der Implementierung befassen möchtest, kannst du dir den Quellcode auf GitHub einsehen.
Mein Gemfile sieht so aus:
source "https://rubygems.org"
ruby "3.0"
gem "dotenv"
gem "vonage"
gem "rake"
gem "whenever", require: false
gem "get_xkcd"Die wichtigste Abhängigkeit ist hier das vonage gemdie ich verwende, um die MMS über die Vonage Messages API zu versenden.
Ich verwende meine get_xkcd um mit der xkcd-API zu interagieren. Die dotenv gem dient der Verwaltung der Umgebungsvariablen für meine Anwendung. Das rake gem und whenever gem dienen zum Einrichten einer Aufgabe, die über Cron ausgeführt wird.
Die Anwendungsdatei
Ich habe eine app.rb Datei erstellt, die die Logik zum Abrufen der xkcd-Comicdaten und zum anschließenden Senden einer MMS-Nachricht unter Verwendung einiger dieser Daten enthält.
Meine Hauptanwendungsdatei sieht wie folgt aus:
# 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)Die Anwendung beginnt mit der Anforderung der dotenv, vonage, und get_xkcd Edelsteine.
require 'dotenv'
require 'vonage'
require 'get_xkcd'Alle notwendigen Umgebungsvariablen werden in einer Datei .env Datei im Hauptverzeichnis meines Projekts definiert und dann in einen ENV Hash mit Hilfe der Dotenv.load Methode geladen.
Dotenv.loadDas erste, was meine Anwendung tun muss, ist, die Daten für einen beliebigen xkcd-Comic abzurufen. Meine GetXkcd Bibliothek definiert eine Comic Klasse, die mehrere Methoden bereitstellt. Eine dieser Methoden ist fetch_random_issue_data die, wie der Name schon sagt, die Daten für eine zufällige Ausgabe des xkcd-Comics abruft.
random_issue_data = GetXkcd::Comic.fetch_random_issue_dataDie App speichert die Rückgabe in einer random_issue_data Variable. Der Rückgabewert der Methode ist ein Ruby-Hash von Daten für einen zufälligen xkcd-Comic, einschließlich einer URL für das Comic-Bild als Wert des img Schlüssel und den Titel des Comics als Wert für den title Schlüssel. Diese Werte werden später bei der Erstellung der MMS-Nachricht verwendet.
Der Rest der Datei app.rb Datei befasst sich mit dem Erstellen und Versenden der MMS-Nachricht.
Instanziierung des Client-Objekts
Der erste Schritt beim Senden einer Nachricht mit der Vonage Messages API ist die Instanziierung eines Vonage Client Objekts. Hier geben wir zwei Schlüsselwortargumente an: application_id und private_key.
client = Vonage::Client.new(
application_id: ENV['APP_ID'],
private_key: File.read(ENV['PATH_TO_PRIVATE_KEY_PATH'])
)Sie fragen sich vielleicht, was diese beiden Argumente bedeuten.
Um die Messages API zu nutzen, müssen Sie eine Vonage-Applikationerstellen, entweder über das Entwickler-Dashboard oder über die Applications APIund aktivieren Sie sie für Nachrichten.
Screenshot of the Messages toggle in the Dashboard
Sobald die Anwendung erstellt ist, erhält sie eine eindeutige Anwendungs-ID. Sie können dann auch einen privaten Schlüssel für diese Anwendung erstellen und herunterladen.
Screenshot of the Generate Private Key button in the Dashboard
Mein privater Schlüssel ist im Stammverzeichnis meiner Projektdatei gespeichert. Die ID meiner Anwendung und der Pfad zu meinem privaten Schlüssel sind in meiner .env Datei definiert.
Eines der Details, die unsere Server-SDKs für Sie übernehmen, ist der Umgang mit der Authentifizierung und die Generierung von HTTP-Anfrage-Headern. Die application_id und private_key Daten, die bei der Instanziierung des Client Objekts übergebenen Daten werden anschließend verwendet, um ein JWT (JSON Web Token), das dann als Wert des Authorization Header gesetzt wird, der mit der HTTP-Anforderung an die Messages API gesendet wird.
Instanziierung des MMS-Nachrichtenobjekts
Das Vonage Ruby SDK definiert ein Messaging::Message Objekt, das Methoden zur Erstellung spezifischer Nachrichtenobjekte für jeden Kanal bereitstellt. Hier gibt der Aufruf der mms Methode gibt ein MMS Objekt mit Eigenschaften zurück, die auf den übergebenen Argumenten basieren.
message = Vonage::Messaging::Message.mms(
type: 'image',
message: {
url: random_issue_data['img'],
caption: random_issue_data['title']
}
)Hier setzen wir die type auf image (andere Optionen für MMS type sind audio, video, oder vcard). In der message Hash setzen wir die url auf die URL der img aus den xkcd-Daten, und ein optionales caption auf die title von diesen Daten.
Versenden der MMS-Nachricht
Und nun zum wichtigen Teil der Anwendung: dem Versand der MMS-Nachricht!
client.messaging.send(from: ENV['FROM_NUMBER'], to: ENV['TO_NUMBER'], **message)Der Aufruf der messaging Methode auf das Client Objekt, das wir zuvor erstellt haben, gibt ein Messaging Objekt zurück. Wir verketten dann einen send Methodenaufruf auf dieses zurückgegebene Objekt, der die from und to Zahlenargumente mit dem übergebenen message Objekt kombiniert, in JSON konvertiert und als Körper einer HTTP-Anforderung an den Messages API POST Endpunkt sendet.
Berücksichtigen Sie die Einschränkungen für from und to Numbers, die weiter oben in diesem Artikel erläutert wurden.
Einrichten des Cron-Jobs
Die letzte Aufgabe besteht darin, den Cron-Auftrag einzurichten. Ich könnte die Systemeinstellungen von crontab manuell bearbeiten, aber es gibt ein wirklich nützliches Rubygem namens whenever das diesen Prozess vereinfacht. Das whenever Gem bietet ein paar verschiedene Optionen für die Ausführung von Aufgaben, wie z.B. das Ausführen eines bash Befehl oder die Ausführung einer rake Aufgabe.
Rake ist ein Task-Runner für Ruby. Mit ihm können Sie bestimmte Aufgaben mit Ruby-Syntax definieren, die dann ausgeführt werden können, indem sie an den rake Befehl übergeben werden. Tasks werden in einem Rakefiledefiniert, also müssen wir einen zu unserem Projektverzeichnis hinzufügen.
# Rakefile
desc "Send a random XKCD comic via MMS"
task :send_xkcd_mms do
ruby 'app.rb'
endHier definiere ich eine einzelne Aufgabe mit einer Beschreibung (desc), einem Aufgabennamen send_xkcd_mmsund die Aufgabe selbst (definiert in einem do..end Block), die einfach meine app.rb Datei ausführt.
Zur Planung der Aufgabe mit dem whenever gem zu planen, muss ich eine schedule.rb Datei in einem config Verzeichnis erstellen und den Zeitplan darin definieren.
# schedule.rb
job_type :rake, "cd :path && bundle exec rake :task"
every 1.day, at: '9:00 am' do
rake "send_xkcd_mms"
end
Die Zeile job_type :rake, "cd :path && bundle exec rake :task" Zeile legt einige Standardwerte für die Ausführung der Aufgabe fest. Die Aufgabe selbst verwendet die Ruby-Syntax zum Festlegen eines Intervalls (every 1.day), eine bestimmte Zeit (at: '9:00 am'), und dann die Aufgabe, die wir innerhalb eines do..end Block (rake "send_xkcd_mms").
Um mein System zu aktualisieren crontab mit diesem Zeitplan zu aktualisieren, muss ich dann whenever --update-crontab über die Befehlszeile ausführen.
Und voila! Tägliche xkcd-Comics per MMS.
Screenshot of xkcd comic in an MMS
Schlussfolgerung und nächste Schritte
In diesem Blog-Beitrag erfahren Sie mehr über MMS, was Sie damit machen können und wie Sie die Vonage Messages API verwenden, um eine MMS-Nachricht zu versenden.
Wir freuen uns immer über die Beteiligung der Gemeinschaft. Sie können sich uns gerne auf dem Vonage Community Slack oder senden Sie uns eine Nachricht auf Twitter.
Teilen Sie:
Karl ist Developer Advocate bei Vonage und kümmert sich um die Wartung unserer Ruby Server SDKs und die Verbesserung der Entwicklererfahrung für unsere Community. Er liebt es zu lernen, Dinge zu entwickeln, Wissen zu teilen und alles, was allgemein mit Webtechnologie zu tun hat.