
Compartir:
Britt Barak es Product Manager en Nexmo, para Nexmo Conversation API y Client SDKs.
Introducción de canales personalizados en las conversaciones
Tiempo de lectura: 2 minutos
En Vonage, nos comprometemos a construir las plataformas más sólidas, flexibles y escalables posibles para que puedas seguir creando excelentes experiencias de conversación para tus usuarios. Con esto en mente, nos complace anunciar un nuevo hermano para los canales de voz y mensajes integrados en la aplicación: Canales personalizados.
Utilizando eventos personalizados, puede crear una integración personalizada con cualquier canal que pueda imaginar. Por ejemplo, otras plataformas de mensajería, correos electrónicoso pagos.
Cómo funciona:
1. Definición de laCustom Event Objeto
Un evento personalizado tiene un type y un body. El type es el nombre elegido para el canal personalizado, que comienza con la tecla "custom:". El body son pares clave-valor que definen los datos que te gustaría pasar en el evento.
2. Envío de eventos personalizados
Puede enviar eventos personalizados a una Conversación a través de la Conversaciones APIo SDKs de Cliente.
Al enviar un evento a través de los SDK de Android o iOS, el prefijo "custom:" para el tipo de evento se añade automáticamente en su nombre.
A continuación se muestran ejemplos de cómo puede lograrse utilizando los tres SDK de cliente compatibles SDK de cliente.
Android
var sendListener: NexmoRequestListener<Void> = object: NexmoRequestListener<Void> {
override fun onError(error: NexmoApiError) {...}
override fun onSuccess(var1: Void?) {...}
}
conversation.sendCustomEvent("my_type", hashMapOf("myKey" to "myValue"), sendListener) iOS
conversation.sendCustom(withEvent: "my_type", data: ["myKey": "myValue"], completionHandler: { (error) in
if let error = error {...}
NSLog("Custom event sent.")
}) JavaScript
conversation.sendCustomEvent({ type: 'custom:my_type', body: { myKey: 'myValue' }}).then((custom_event) => { ... }); 3. Recepción de eventos personalizados
Recibir un evento personalizado es similar a recibir cualquier otro evento en que lo recibirás en el RTC de tu aplicación event_url.
En nuestros tres SDK de cliente compatibles, lo recibirá como se muestra a continuación:
Android
var customEventListener: NexmoCustomEventListener = NexmoCustomEventListener { event ->
Log.d(TAG, "Received custom event with type " + event.customType + ": " + event.data)
}
conversation.addCustomEventListener(customEventListener) iOS
//In `NXMConversationDelegate`:
func conversation(_ conversation: NXMConversation, didReceive event: NXMCustomEvent) {
NSLog("Received custom event with type \(String(describing: event.customType)): \(String(describing: event.data))");
} JavaScript
conversation.on('custom:my_type', (from, event) => {
console.log(event.body);
}); 4. Envío de notificaciones push
Si su aplicación Android o iOS se está ejecutando en segundo plano, es posible que desee notificar a su usuario acerca de un evento personalizado entrante con una notificación push.
Para ello, debe definir la carga útil que se enviará por notificación push en función del tipo:
PUT https://api.nexmo.com/v2/applications/:your_nexmo_application_id
{
"capabilities": {
"rtc": {
...
"push_notifications": {
"custom:my_type": {
enabled: true,
template: {
notification: {
body: "Value sent: '${event.body.my_key}' !”
},
data: {
image: "https://example.image.jpg",
myKey: myValue
}
}
}
}
}
} 5. Recepción de notificaciones push
Después de configurar las notificaciones push para tus aplicaciones móviles, ya estás listo para recibir tus push personalizados. Puede acceder a los datos personalizados que definió previamente de la siguiente manera:
Android
if (NexmoClient.isNexmoPushNotification(message!!.data)) {
NexmoPushPayload nexmoPushPayload = nexmoClient.processPushPayload(message!!.data, pushListener)
when(nexmoPushPayload.pushTemplate){
Custom ->
nexmoPushEvent.customData //got custom push data 😀
Default ->
nexmoPushEvent.eventData // got default push event data
}
} iOS
NSDictionary* pushData = [get the payload];
if ([NXMClient.shared.isNexmoPush:pushData]) {
NXMPushPayload nexmoPushPayload = [NXMClient.shared processPushPayload:pushData];
if (nexmoPushPayload.template == NXMPushTemplateCustom){
nexmoPushEvent.customData //got custom push data 😀
}
if (nexmoPushPayload.template == NXMPushTemplateDefault){
nexmoPushEvent.eventData // got default push event data
}
} Integración completa
Ya tienes todo lo que necesitas para integrar un canal personalizado con notificaciones push personalizadas en tus experiencias de conversación. Estamos impacientes por ver qué canales añadirás y cómo los utilizarás para enriquecer la conversación de tus usuarios contigo.
¿Y ahora qué?
Consulte las guías completas de eventos personalizados para Conversaciones API y para SDK de cliente.
Encuentre ejemplos de integraciones de canales personalizados con WeChat, SendinBlue correos electrónicoso pagos con Stripe.
Explorar más conversaciones API y Client SDK en nuestra documentación pública.
Si tiene alguna pregunta o comentario - háganoslo saber en nuestro Comunidad Slack o support@nexmo.com