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

Introduction de canaux personnalisés dans les conversations

Publié le April 27, 2021

Temps de lecture : 2 minutes

Chez Vonage, nous nous engageons à construire les plateformes les plus robustes, les plus flexibles et les plus évolutives possibles afin que vous puissiez continuer à créer des expériences de conversation exceptionnelles pour vos utilisateurs. Dans cette optique, nous sommes heureux d'annoncer un nouveau frère pour les canaux vocaux et de messages In-App Messaging : Les canaux personnalisés !

Grâce aux événements personnalisés, vous pouvez créer une intégration personnalisée avec n'importe quel canal imaginable. Par exemple, d'autres plateformes de messagerie, les courrielsou paiements.

Comment cela fonctionne-t-il ?

1. Définir lesCustom Event Objet

Un événement personnalisé possède un type et un body. Le type est le nom que vous avez choisi pour le canal personnalisé, qui commence par la clé "custom:". Les body sont des paires clé-valeur qui définissent les données que vous souhaitez transmettre dans l'événement.

2. Envoi d'événements personnalisés

Vous pouvez envoyer des événements personnalisés à une conversation par l'intermédiaire de l Conversation APIConversations, ou les SDK clients.

Lorsque vous envoyez un événement par l'intermédiaire des SDK Android ou iOS, le préfixe "custom:" pour le type d'événement est automatiquement ajouté en votre nom.

Vous trouverez ci-dessous des exemples de la manière dont cela peut être réalisé en utilisant les trois SDK clients pris en charge SDK client.

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. Réception d'événements personnalisés

La réception d'un événement personnalisé est similaire à la réception de tout autre événement dans la mesure où vous le recevrez sur le RTC de votre application event_url.

Dans nos trois SDK clients pris en charge, vous le recevrez comme indiqué ci-dessous :

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. Envoi de notifications push

Si votre application Android ou iOS s'exécute en arrière-plan, vous souhaiterez peut-être informer votre utilisateur de l'arrivée d'un événement personnalisé à l'aide d'une notification push.

Pour ce faire, vous devez définir la charge utile à envoyer par notification push et par type :

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. Réception d'une notification push

Après avoir configuré les notifications push pour vos applications mobiles, vous êtes prêt à recevoir vos notifications push personnalisées. Vous pouvez accéder aux données personnalisées que vous avez définies précédemment comme suit :

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
    }
}

Intégration terminée

Vous avez maintenant tout ce qu'il vous faut pour intégrer un canal personnalisé avec des notifications push personnalisées dans vos expériences de conversation. Nous sommes impatients de voir quels canaux vous ajouterez et comment vous les utiliserez pour enrichir la conversation de vos utilisateurs avec vous !

Quelle est la prochaine étape ?

Si vous avez des questions ou des commentaires, faites-le nous savoir sur notre Communauté Slack ou sur support@nexmo.com

Partager:

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

Britt Barak est chef de produit chez Nexmo, pour les SDK Nexmo Conversation API et Client.