https://d226lax1qjow5r.cloudfront.net/blog/blogposts/introducing-custom-channel-in-conversations-dr/E_Client-SDK-Update_1200x600.png

Introducción de canales personalizados en las conversaciones

Publicado el April 27, 2021

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é?

Si tiene alguna pregunta o comentario - háganoslo saber en nuestro Comunidad Slack o support@nexmo.com

Compartir:

https://a.storyblok.com/f/270183/384x384/b935cb065d/brittbarak.png
Britt BarakAntiguos alumnos de Vonage

Britt Barak es Product Manager en Nexmo, para Nexmo Conversation API y Client SDKs.