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

Was kann ich mit MMS machen?

Zuletzt aktualisiert am August 30, 2022

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 showing the message "Hi team, what types of files can be sent over MMS?"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, .png und .gif Dateien

  • Audio: Unterstützt das Senden von .mp3 Dateien

  • Video: Unterstützt das Senden von .mp4 Dateien

  • vCard: Unterstützt das Senden von .vcf Dateien

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:

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.load

Das 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_data

Die 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 Application Capabilities, with the toggle set to "on"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 Application pageScreenshot 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'
end

Hier 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 issue 974 'The General Problem' in an MMSScreenshot 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:

https://a.storyblok.com/f/270183/373x376/e8d3211236/karl-lingiah.png
Karl LingiahRuby-Entwickler Advocate

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.