
Compartilhar:
Britt Barak é gerente de produto na Nexmo, responsável pela Conversation API da Nexmo e pelos SDKs para clientes.
Apresentando os canais personalizados nas conversas
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?
Confira os guias completos sobre eventos personalizados para a Conversation API e para SDKs de cliente.
Veja exemplos de integrações personalizadas de canais com o WeChat, e-mails do SendinBlueou pagamentos com o Stripe.
Explore mais conversas API e Client SDK em nossa documentação pública.
Caso tenha alguma dúvida ou sugestão, entre em contato conosco em nosso Slack da Comunidade ou pelo e-mail support@nexmo.com