https://d226lax1qjow5r.cloudfront.net/blog/blogposts/secure-your-inbound-media-files-with-the-vonage-messages-api/secure-inbound-media_messagesapi.png

Sichern Sie Ihre eingehenden Mediendateien mit der Vonage Messages API

Zuletzt aktualisiert am April 4, 2023

Lesedauer: 2 Minuten

Vonage's Messages API ermöglicht Zwei-Wege-Unterhaltungen über eine Reihe verschiedener Messaging-Kanäle. Viele dieser Kanäle unterstützen das Senden und Empfangen von Mediendateien, wie z. B. Bilder, Audio und Video.

Diese multimediale Nachrichtenübermittlung ist für eine Vielzahl von Situationen äußerst nützlich. Ein Beispiel: Ein Kunde muss einem Unternehmen ein Video von einem fehlerhaften Produkt oder Bilder von einem Transportschaden bei einer Lieferung schicken.

Eingehende Nachrichten werden über einen Webhook für eingehende Nachrichten. Um eingehende Nachrichten empfangen zu können, müssen Sie zunächst diesen Webhook einrichten. Dies kann über das Vonage Dashboardüber die folgenden Schritte:

  • Erstellen einer Vonage-Anwendung (falls Sie dies nicht bereits getan haben)

  • Innerhalb dieser Anwendung:

    • Aktivieren Sie es für die Messages API

    • Setzen Sie die Eingangs-URL auf die URL, unter der Sie Ihre eingehenden Nachrichten empfangen möchten.

Vonage Dashboard Messages Application Inbound URL settingVonage Dashboard Messages Application Inbound URL setting

Nutzlast der eingehenden Nachricht

Eingehende Nachrichten enthalten eine JSON-Nutzlast mit Details zur Nachricht. Bei Nachrichten des Typs "Text" ist dies zum Beispiel der Text der Nachricht selbst:

{
   "channel": "messenger",
   "message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
   "to": "9876543210",
   "from": "0123456789",
   "timestamp": "2023-01-01T14:00:00.000Z",
   "message_type": "text",
   "text": "Hey there!"
}

Bei Nachrichten mit einem Medientyp, wie z. B. Bilder oder Videos, werden diese auf den Medienservern von Vonage gespeichert, und die Nachricht enthält eine eindeutige URL, mit der Sie z. B. auf die Mediendatei zugreifen können:

{
   "channel": "messenger",
   "message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
   "to": "9876543210",
   "from": "0123456789",
   "timestamp": "2023-01-01T14:00:00.000Z",
   "message_type": "image",
   "image": {
      "url": "https://api-us.nexmo.com/v3/media/1b456509-974c-458b-aafa-45fc48a4d976"
   }
}

Standard-Sicherheit

Die Medien werden nur 48 Stunden lang gespeichert, und Sie müssen eine GET-Anforderung an die spezifische URL stellen, die in der Nutzlast der eingehenden Nachricht angegeben ist, um auf die Mediendatei zuzugreifen. Zum Beispiel:

GET /v3/media/1b456509-974c-458b-aafa-45fc48a4d976
Host: api-us.nexmo.com

Die Tatsache, dass Sie die spezifische URL benötigen und dass sie nach einer bestimmten Zeit abläuft, bietet ein gewisses Maß an eingebauter Sicherheit. Diese Sicherheitsstufe birgt jedoch einige geringfügige Risiken. Beispielsweise könnte die URL durch Brute-Force-Methoden aufgedeckt werden, und jeder, der die URL besitzt, könnte auf die Mediendatei zugreifen, ohne zusätzliche Anmeldedaten zu benötigen.

Erhöhte Sicherheit mit Secure Inbound Media

Eine erhöhte Sicherheit kann für bestimmte Anwendungsfälle wünschenswert sein, z. B. wenn der Kunde in einer Betreuungssituation sensible Informationen in Form von Bildern oder Videos senden muss. Hier kommt die Messages API zum Einsatz Sichere eingehende Medien Funktion helfen!

Um die Funktion zu aktivieren, bearbeiten Sie im Vonage Dashboard die Anwendung, in der Sie die Inbound-URL für den Webhook festgelegt haben, und schalten Sie den Schalter "Enhanced Inbound Media Security" in die Position "on".

Vonage Dashboard Messages Application Enhanced Inbound Media ToggleVonage Dashboard Messages Application Enhanced Inbound Media Toggle

Wenn die Funktion aktiviert ist, enthalten eingehende Nachrichten-Webhooks weiterhin eine URL für den Zugriff auf die Medien. Allerdings muss die GET-Anforderung für den Zugriff auf die Medien jetzt einen Authorization-Header mit dem Schema Bearer und den Anmeldeinformationen enthalten, die ein JSON-Web-Token (JWT). Das JWT muss mit der Anwendungs-ID und dem privaten Schlüssel aus der Vonage-Anwendung generiert werden, in der Sie die Inbound-Webhook-URL festgelegt haben. Zum Beispiel:

GET /v3/media/1b456509-974c-458b-aafa-45fc48a4d976
Host: api-us.nexmo.com
Authorization: Bearer eyJ0eXAiOiJKV1Qi...

Wenn die Funktion aktiviert ist, führt eine GET-Anforderung an die Medien-URL ohne einen korrekt gesetzten Authorization-Header zu einer 401 Unauthorized-Antwort.

JWTs generieren

Sie können ein JWT über unser Online-Tool oder über die Vonage CLI. Im Zusammenhang mit einer Serveranwendung können Sie eines unserer Server-SDKs verwenden, um das JWT als Teil Ihres gesamten Anwendungsworkflows zu erzeugen. Nachfolgend finden Sie ein Beispiel für die Generierung eines JWT mit dem Ruby Server SDK.

require 'vonage'

jwt = Vonage::JWT.generate(
 application_id: ENV['VONAGE_APPLICATION_ID'],
 private_key: ENV['VONAGE_PRIVATE_KEY_PATH']
)

(Das Beispiel setzt voraus, dass 'VONAGE_APPLICATION_ID' und 'VONAGE_PRIVATE_KEY_PATH' als Umgebungsvariablen in der Ruby-Anwendung gesetzt sind).

Nächste Schritte

Ist Secure Inbound Media für Ihre Anwendung oder Ihren Anwendungsfall nützlich? Dann sollten Sie jetzt mit Vonage APIs loslegen. Sehen Sie sich die Dokumentation. Wenn Sie Fragen oder Feedback haben, nehmen Sie an der Vonage Entwickler-Slackund wir werden uns bei Ihnen melden.

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.