
Teilen Sie:
Sina ist Java Developer Advocate bei Vonage. Er hat einen akademischen Hintergrund und ist generell neugierig auf alles, was mit Autos, Computern, Programmierung, Technologie und der menschlichen Natur zu tun hat. In seiner Freizeit geht er gerne spazieren oder spielt Videospiele.
Ankündigung des Vonage Java SDK v7.0.0
Einführung
Seit ich bei Vonage bin, habe ich mich auf die Verbesserung des Kern-Java-SDK indem ich einige technische Schulden abbaue und dafür sorge, dass es auf dem neuesten Stand der API-Spezifikationen. In diesem Beitrag erkläre ich einige der wichtigsten Änderungen am SDK und was in nächster Zeit ansteht. Hoffentlich kann ich auch Sie davon überzeugen, auf die neueste Version zu aktualisieren 🙂 . Sie können sich auch die Versionshinweise für jede Version auf GitHub.
Sicherheit
Wenn ich Ihnen nur einen Grund für ein Upgrade nennen könnte, dann wäre es die Sicherheit. Die Versionen vor 6.4.2 sind anfällig für über 50 CVE-Sicherheitslücken aufgrund veralteter Abhängigkeiten (hauptsächlich Jackson, das wir für die JSON-Serialisierung verwenden).
Vor Version 7.0.0 war das SDK auf eine kleine interne Bibliothek für die Arbeit mit JWTs angewiesen. Diese Bibliothek war seit einigen Jahren nicht mehr aktualisiert worden und lief noch unter der Marke Nexmo. Sie ist nun in die Vonage-Organisation auf GitHub (https://github.com/Vonage/vonage-jwt-jdk) und Maven Centralumgezogen, wo sie aus Gründen der Konsistenz einen neuen Namen und Aktualisierungen der Abhängigkeiten aus Sicherheitsgründen erhielt.
Neue Funktionen
Die bemerkenswerteste Funktion ist die Messages API, die in 6.5.0 hinzugefügt wurde (lesen Sie über die Ankündigung hier). Ich schrieb kürzlich einen Blogbeitrag über die Implementierung von Messages v1 im Java SDKgeschrieben, und ich hoffe, dass einige von Ihnen, die dies lesen, sie bereits nutzen! Unterstützung für den Pricing API Endpunkt, um ausgehende Preise für alle Länder abzurufen wurde ebenfalls in 6.5.0 hinzugefügt.
Zwei neue Funktionen wurden in 7.0.0 hinzugefügt. Premium Text-to-Speech ist jetzt GA, daher wurde das Flag zur Aktivierung dieser Funktion in die TalkAction NCCO HINZUGEFÜGT. Sie können nun auch telefonisch zu Zahlungen über das Telefon mit der neuen Aktion Pay NCCO. Hier ist ein Link zur Spezifikation.
Abwertungen und Umzüge
Umzüge sind eine einschneidende Veränderung, daher die große Versionsaktualisierung. Die SMS-Such-API war schon lange veraltet und wurde schließlich vollständig entfernt, so dass sie natürlich auch aus dem SDK entfernt wurde. Das veraltete Text-to-Speech voiceName Feld wurde ebenfalls entfernt, um von seiner Verwendung abzuraten, da es bereits veraltet war. Stattdessen sollten Sie das neue premium Flagge verwenden, wie oben beschrieben. Einige interne Überarbeitungen haben auch dazu geführt, dass einige Klassen, die niemals öffentlich zugänglich sein sollten (wie Klassen, die mit Endpoint) wie beabsichtigt paketprivat gemacht wurden. AbstractClient war nicht als öffentlich zugängliches Feature gedacht und diente intern keinem wirklichen Zweck, daher wurde es ebenfalls entfernt. Dasselbe gilt für AbstractAuthMethod. Für den unwahrscheinlichen Fall, dass Sie sich auf Apache Commons verlassen haben (insbesondere, lang3, io und logging) Bibliotheken als implizite Abhängigkeit hinzugefügt wurden, sind diese ebenfalls verschwunden.
Die wichtigste Verwerfung, die es zu beachten gilt, betrifft die Redact API. Sie war zwar schon seit einiger Zeit Teil des SDK, hat aber nie die Developer Preview verlassen. Grundsätzlich unterstützt das Java SDK nur APIs, die in den Hauptversionen "General Availability" sind. Wir verwerfen sie also mit der Absicht, sie zu entfernen, bis wir sicher sind, dass wir sie als GA-Service vollständig unterstützen. Abgesehen davon wird das ipAddress Feld in AdvancedInsightRequest veraltet, um seinen Verwerfungsstatus in der Number Insight API-Spezifikation. Es wird in der nächsten Hauptversion entfernt werden.
Korrekturen und Verbesserungen
Da sich unsere APIs weiterentwickeln, müssen stark typisierte SDKs aktualisiert werden, um Änderungen in der Spezifikation widerzuspiegeln. Wir halten Ausschau nach Fällen, in denen das SDK nicht mit der API übereinstimmt, aber wir finden nicht immer alles. Bitte melden Sie uns alle Probleme und wir werden versuchen, sie in der nächsten Version zu beheben!
Der CallEvent Webhook fehlte das Feld call_uuid Feld, das in 6.4.2 hinzugefügt wurde. Die com.vonage.client.sms.MessageStatus enum fehlten einige der Fehlercodes, die in der Spezifikationwas korrigiert wurde. Es gab einige Probleme mit den NCCO-Klassen, die nicht mit der Spezifikation konform waren der Spezifikation. Vor allem die Actions waren im Objektmodell nicht richtig definiert, so dass die Deserialisierung nicht wie vorgesehen funktionierte. SipEndpoint fehlte das headers Feld und WebSocketEndpoint beschränkte fälschlicherweise headers Map-Werte auf Strings. Die NCCO-Endpunkte validieren nun die uri Felder mit java.net.URI. Die Builder wurden außerdem paketprivat gemacht, so dass Sie sie von der statischen builder() Methode erworben werden müssen, um Konsistenz zu gewährleisten.
Implementierung der Number Insight API im Java SDK wurde aktualisiert, damit sie mit der Spezifikation übereinstimmt. Die meisten Probleme betrafen fehlende Felder oder Felder in der falschen Klasse (einige Funktionen wurden z. B. von Advanced zu Standard insight verschoben). Die Dokumentation wurde ebenfalls verbessert und dort ergänzt, wo sie fehlte. Einige der inneren Enums (zum Beispiel in AdvancedInsightResponse) wurden in separate Dateien verschoben, so dass bei einer Verschiebung von Funktionen von z. B. Advanced nach Standard in Zukunft keine Änderungen mehr erforderlich sind. Zusätzliche Werte für InsightStatus wurden hinzugefügt. Für die synchrone Version von AdvancedInsightRequestwurde ein neues boolesches Feld realTimeData hinzugefügt. Wenn es auf truegesetzt wird, erhalten Sie den Status in AdvancedInsightResponse.
Es wurden einige Korrekturen an der Messages API vorgenommen. Vor allem in WhatsappTemplateRequest's parameters Feld, das die Spezifikation irreführenderweise als ein List<Map, String, ?>> dargestellt wird, obwohl es in Wirklichkeit List<String>. Eine weitere Korrektur ist das policy und locale Felder. Da das erste Feld derzeit nur einen einzigen gültigen Wert hat, ist es in der API optional. Letzteres war in Version 6.5.0 ein grundlegender Fehler, da es die Verwendung von Gebietsschemata mit weniger als 4 Zeichen verhinderte. Außerdem war aus der Dokumentation nicht klar ersichtlich, welche Werte gültig sind. Um Verwirrung zu vermeiden, wurde die vollständige Liste der von WhatsApp unterstützten Sprachen als Enum hinzugefügt. Anstatt also einen möglicherweise ungültigen String zu übergeben, müssen Sie nicht mehr danach suchen, was unterstützt wird - es ist alles im SDK aufgezählt! Generell war die Validierung von Absendernummern im SDK (d.h. das from Feld) war für SMS, MMS und WhatsApp fehlerhaft. SMS- und MMS-Absender können nun alphanumerische Zeichen (d. h. IDs) enthalten, während der WhatsApp-Absender eine Nummer eines WhatsApp Business Accounts sein muss.
Generell ist das SDK intern etwas aufgeräumter (in Bezug auf Codequalität, Konsistenz usw.) und hat eine höhere Testabdeckung. Aus der Sicht des Benutzers sind die anderen verschiedenen Verbesserungen die Einstellung von Content-Type, Accept und User-Agent Header in ausgehenden Anfragen sowie die explizite Verwendung der UTF-8-Kodierung. Für diejenigen, die sich über die Kompatibilität Gedanken machen, sei gesagt, dass wir uns bemühen, Java 8 noch eine ganze Weile zu unterstützen, es sei denn, es gibt einen zwingenden Grund aus Sicht der Wartbarkeit, auf 11 oder 17 umzusteigen. Das SDK wurde mit JDK 18 getestet, so dass wir derzeit jede moderne Version von Java unterstützen.
Straßenkarte
Neben routinemäßigen Wartungsarbeiten, um sicherzustellen, dass die aktuelle Implementierung mit den API-Spezifikationen übereinstimmt, und allgemeinen Korrekturen ist die nächste große Aufgabe für das Java SDK die neue Video APIdie sich derzeit in der Beta-Phase befindet. Das OpenTok Java SDK wird schließlich auslaufen. Anstatt separate Repos, Artefakte, Versionen, Codebases usw. zu haben, haben wir beschlossen, die Benutzererfahrung durch die Integration der Video-Funktionalität direkt in unsere Kern-SDKs zu optimieren. Wir werden die Unterstützung dafür in den SDKs schrittweise durch Beta-Releases einführen. Wenn Sie also daran interessiert sind, die Videofunktionen zu nutzen, halten Sie Ausschau nach Maven Zentrale nach Beta-Versionen des Java-SDKs Ausschau halten!
Natürlich wird es in der Zwischenzeit weiterhin Mainline-Releases mit Patches, Korrekturen und sogar neuen GA-Funktionen geben, aber in der Zwischenzeit werden wir an der Implementierung der Video API in den SDKs arbeiten. Da sich die OpenTok-Codebasis architektonisch so sehr von der des Kern-SDKs unterscheidet, wird dies für mich eine komplette Neuschreibung sein. Mit Blick auf die Zukunft ist mir bewusst, dass einige Benutzer des Java SDK asynchrone Anfragen und Antworten wünschen. Dies ist der nächste Punkt auf meiner Wunschliste für größere Verbesserungen des SDK, also bleiben Sie dran.
Abmeldung
Das war's für den Moment! Wenn Sie auf irgendwelche Probleme stoßen oder Verbesserungsvorschläge haben, können Sie gerne einen Fehler auf GitHub zu meldenoder erreichen Sie uns auf Twitter oder schauen Sie bei unserem Gemeinschaft Slack. Ich hoffe, Sie haben viel Spaß bei der Nutzung der Vonage APIs mit der neuesten Version des Java SDK!
Teilen Sie:
Sina ist Java Developer Advocate bei Vonage. Er hat einen akademischen Hintergrund und ist generell neugierig auf alles, was mit Autos, Computern, Programmierung, Technologie und der menschlichen Natur zu tun hat. In seiner Freizeit geht er gerne spazieren oder spielt Videospiele.