https://a.storyblok.com/f/270183/82140/bda0f4bc3d/e_client-sdk-update_1200x600.png

Apresentando os canais personalizados nas conversas

Publicado em April 27, 2021

Tempo de leitura: 2 minutos

Na Vonage, estamos comprometidos em desenvolver as plataformas mais robustas, flexíveis e escaláveis possíveis, para que você possa continuar criando excelentes experiências de conversação para seus usuários. Com isso em mente, temos o prazer de anunciar um novo recurso para os canais de Voice e mensagens dentro do aplicativo: os Canais Personalizados!

Usando eventos personalizados, você pode criar uma integração personalizada com qualquer canal que imaginar. Por exemplo, outras plataformas de mensagens, e-mailsou pagamentos.

Como funciona:

1. Definindo o Custom Event Objeto

Um evento personalizado possui um type e um body. O type é o nome escolhido por você para o canal personalizado, que começa com a chave "custom:". O body são pares chave-valor que definem os dados que você deseja passar no evento.

2. Envio de eventos personalizados

Você pode enviar eventos personalizados para uma conversa por meio da Conversation APIou pelos SDKs do cliente.

Ao enviar um evento por meio dos SDKs do Android ou do iOS, o "custom:" prefixo do tipo de evento é adicionado automaticamente para você.

A seguir, apresentamos exemplos de como isso pode ser feito utilizando os três SDKs 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. Recebimento de eventos personalizados

Receber um evento personalizado é semelhante a receber qualquer outro evento: você o receberá no RTC do seu aplicativo event_url.

Nos três SDKs de cliente compatíveis, você o receberá conforme mostrado a seguir:

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. Envio de notificações push

Se a sua aplicação para Android ou iOS estiver em execução em segundo plano, talvez você queira notificar o usuário sobre um evento personalizado recebido por meio de uma notificação push.

Para isso, é preciso definir a carga útil a ser enviada por notificação push, de acordo com cada 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. Recebimento de notificações push

Depois de configurar as notificações push para seus aplicativos móveis, você estará pronto para receber suas notificações push personalizadas. Você pode acessar os dados personalizados que definiu anteriormente da seguinte maneira:

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

Integração concluída

Agora você tem tudo o que precisa para criar um canal personalizado com notificações push personalizadas em suas experiências de conversa. Mal podemos esperar para ver quais canais você vai adicionar e como vai usá-los para enriquecer a conversa dos seus usuários com você!

E agora?

Caso tenha alguma dúvida ou sugestão, entre em contato conosco em nosso Slack da Comunidade ou pelo e-mail support@nexmo.com

Compartilhar:

https://a.storyblok.com/f/270183/384x384/b935cb065d/brittbarak.png
Britt BarakEx-funcionários da Vonage

Britt Barak é gerente de produto na Nexmo, responsável pela Conversation API da Nexmo e pelos SDKs para clientes.