
Compartir:
Sina es promotora de desarrollo Java en Vonage. Procede del mundo académico y, en general, siente curiosidad por todo lo relacionado con los coches, los ordenadores, la programación, la tecnología y la naturaleza humana. En su tiempo libre, se le puede encontrar paseando o jugando a videojuegos de competición.
Anuncio del SDK Java de Vonage v7.0.0
Introducción
Desde que me uní a Vonage, me he centrado en mejorar el núcleo Java SDK pagando algunas deudas técnicas y asegurándome de que esté actualizado con las últimas especificaciones de la API. En este post, voy a explicar algunos de los cambios destacados en el SDK y lo que está en el horizonte. Con suerte, también podré convencerte para que actualices a la última versión 🙂 . También puedes consultar las notas de la versión para cada versión en GitHub.
Seguridad
Si sólo pudiera darle una razón para actualizar, sería la seguridad. Las versiones anteriores a la 6.4.2 son susceptibles a más de 50 vulnerabilidades de seguridad CVE debido a dependencias obsoletas (principalmente Jackson, que es lo que usamos para la serialización JSON).
Antes de la versión 7.0.0, el SDK dependía de una pequeña biblioteca interna para trabajar con JWT. Esta biblioteca no se había actualizado desde hacía unos años y seguía bajo la marca Nexmo. Ahora se ha trasladado a la org de Vonage en GitHub(https://github.com/Vonage/vonage-jwt-jdk) y a Maven Centralrecibiendo un cambio de marca para mayor consistencia junto con actualizaciones de dependencia para mayor seguridad.
Novedades
La característica más notable es la Messages API, que se añadió en 6.5.0 (lea sobre el anuncio aquí). Hace poco escribí una entrada de blog sobre la implementación de Mensajes v1 en el SDK de Java.así que espero que algunos de los que lean esto ya la estén utilizando. Soporte para el Pricing API para recuperar los precios de salida de todos los países en todos los países.
En 7.0.0 se han añadido dos nuevas funciones. La función de texto a voz es ahora GA, por lo que la bandera para activarlo se ha añadido a la TalkAction NCCO. Ahora también puede solicitar pagos por teléfono mediante la nueva acción Pagar OCN. Aquí hay un enlace a la especificación.
Amortizaciones y supresiones
Las eliminaciones son un cambio de ruptura, de ahí la actualización de la versión principal. La API de búsqueda de SMS estaba obsoleta desde hace tiempo y finalmente se ha eliminado por completo, por lo que, naturalmente, también se ha eliminado del SDK. El campo heredado de texto a voz voiceName campo también se ha eliminado para desincentivar su uso, ya que estaba obsoleto. En su lugar, debe utilizar el nuevo indicador premium como se ha descrito anteriormente. Algunas refactorizaciones internas también han dado lugar a que algunas clases que nunca deberían haber sido de acceso público (como las clases que terminan en Endpoint) se conviertan en paquete privado como se pretendía. AbstractClient no estaba pensada como una característica de cara al público y no servía para nada internamente, por lo que también se ha eliminado. Lo mismo ocurre con AbstractAuthMethod. En el caso de que estuviera confiando en Apache Commons (específicamente, lang3, io y logging) como dependencia implícita, también han desaparecido.
La principal deprecación a tener en cuenta tiene que ver con la Redact API. Aunque ha formado parte del SDK durante algún tiempo, nunca ha abandonado la versión preliminar para desarrolladores. Por norma, el SDK de Java sólo admite las API que están "disponibles para el público en general" en las versiones principales, por lo que la estamos desaprovechando con la intención de eliminarla hasta que estemos seguros de que es totalmente compatible con el servicio GA. Aparte de eso, el campo ipAddress en AdvancedInsightRequest ha quedado obsoleto para reflejar su estado de obsoleto en la especificación de la API API Number Insight API. Se eliminará en la próxima versión importante.
Correcciones y mejoras
A medida que nuestras API evolucionan, los SDK de tipado fuerte deben actualizarse para reflejar los cambios en la especificación. Estamos atentos a los casos en los que el SDK no está sincronizado con la API, pero no siempre lo detectamos todo, así que infórmenos de cualquier problema e intentaremos solucionarlo en la próxima versión.
El webhook CallEvent webhook carecía del campo call_uuid que se añadió en 6.4.2. El enum com.vonage.client.sms.MessageStatus enum faltaban algunos de los códigos de error descritos en la especificaciónlo que se ha rectificado. Había algunos problemas con las clases NCCO, que no cumplían la especificación. la especificación. En particular, las acciones no estaban correctamente definidas en el modelo de objetos, por lo que la deserialización no funcionaba como estaba previsto. SipEndpoint faltaba el campo headers y WebSocketEndpoint restringía incorrectamente headers Map a cadenas. Los puntos finales NCCO validan ahora los campos uri campos mediante java.net.URI. Los constructores también se han convertido en paquetes privados, por lo que debe adquirirlos desde el método static builder() para mantener la coherencia.
Implementación de la Number Insight API en el SDK de Java se ha actualizado para que sea coherente con la especificación. La mayoría de los problemas se referían a campos que faltaban o a campos que se encontraban en la clase incorrecta (por ejemplo, algunas funciones han pasado de Advanced a Standard Insight). También se ha mejorado la documentación y se ha añadido donde faltaba. Algunos de los enums internos (por ejemplo, en AdvancedInsightResponse) se han trasladado a archivos independientes, de modo que si la funcionalidad se traslada, por ejemplo, de Avanzado a Estándar, no sea necesario realizar un cambio de última hora en el futuro. Se han añadido valores adicionales para InsightStatus adicionales. Para la versión síncrona de AdvancedInsightRequestse ha añadido un nuevo campo booleano realTimeData se ha añadido. Si se establece en trueobtendrá el estado en AdvancedInsightResponse.
Se han realizado algunas correcciones en la Messages API. Sobre todo en WhatsappTemplateRequest's parameters que la especificación presentaba engañosamente como un List<Map, String, ?>> cuando en realidad debería ser List<String>. Otra solución es utilizar policy y locale . Dado que el primero tiene un único valor válido en este momento, es opcional en la API. El segundo tenía un fallo más fundamental en la versión 6.5.0, ya que impedía utilizar locales con menos de 4 caracteres. Además, la documentación no dejaba claro cuáles eran los valores válidos. Para evitar confusiones, se ha añadido la lista completa de idiomas admitidos por WhatsApp en forma de enumeración, de modo que en lugar de pasar una cadena potencialmente no válida, ya no tendrá que buscar los idiomas admitidos, ya que están enumerados en el SDK. En términos más generales, la validación por parte del SDK de los Numbers del remitente (es decir, el campo from ) era incorrecta para SMS, MMS y WhatsApp. Ahora, los remitentes de SMS y MMS pueden contener caracteres alfanuméricos (es decir, ID), mientras que el remitente de WhatsApp debe ser un número de WhatsApp Business Account.
En términos más generales, el SDK es un poco más ordenado internamente (en términos de calidad del código, coherencia, etc.) y tiene una mayor cobertura de pruebas. Desde el punto de vista del usuario, las otras mejoras diversas son la configuración de Content-Type, Accept y User-Agent en las peticiones salientes, así como el uso explícito de la codificación UTF-8. Para aquellos que se pregunten por la compatibilidad, nos esforzamos por dar soporte a Java 8 durante bastante tiempo, a menos que haya una razón más convincente desde el punto de vista del mantenimiento para pasar a 11 o 17. El SDK ha sido probado en JDK 18, por lo que cualquier versión moderna de Java es actualmente compatible.
Mapa de carreteras
Aparte del mantenimiento rutinario para garantizar que la implementación actual es coherente con las especificaciones de la API y las correcciones generales, la próxima gran novedad del SDK de Java es la nueva Video APIque actualmente está en fase beta. La página OpenTok Java SDK desaparecerá con el tiempo. En lugar de tener repositorios separados, artefactos, versiones, bases de código, etc., hemos decidido simplificar la experiencia del usuario integrando la funcionalidad de Video directamente en nuestros SDKs centrales. Vamos a ir introduciendo la compatibilidad con los SDK de forma gradual a través de versiones beta, así que si estás interesado en utilizar las funciones de vídeo, estate atento en Maven Central para las versiones beta del SDK de Java.
Por supuesto, mientras tanto, seguirá habiendo versiones principales con parches, correcciones e incluso nuevas características GA, pero en el ínterin, vamos a estar trabajando en la implementación de la Video API en los SDKs. Dado que el código base de OpenTok es tan diferente arquitectónicamente del SDK principal, esto va a ser una reescritura completa para mí. Mirando más allá, soy consciente de que algunos usuarios del SDK de Java quieren peticiones y respuestas asíncronas. Este es el siguiente punto de mi lista de mejoras importantes para el SDK, así que estad atentos.
Despedida
Eso es todo por ahora. Si te encuentras con algún problema o tienes sugerencias de mejora, no dudes en plantear un problema en GitHubo ponte en contacto con nosotros en Twitter o pásate por nuestro Slack de la comunidad. Espero que tengas una gran experiencia al usar las API de Vonage con la última versión del SDK de Java.
Compartir:
Sina es promotora de desarrollo Java en Vonage. Procede del mundo académico y, en general, siente curiosidad por todo lo relacionado con los coches, los ordenadores, la programación, la tecnología y la naturaleza humana. En su tiempo libre, se le puede encontrar paseando o jugando a videojuegos de competición.