
Teilen Sie:
Britt Barak ist Produktmanagerin bei Nexmo und zuständig für die Nexmo Conversation API und Client SDKs.
Einführung von benutzerdefinierten Kanälen in Konversationen
Lesedauer: 1 Minute
Wir bei Vonage sind bestrebt, möglichst robuste, flexible und skalierbare Plattformen zu entwickeln, damit Sie Ihren Nutzern weiterhin großartige Konversationserlebnisse bieten können. In diesem Sinne freuen wir uns, ein neues Geschwisterchen für In-App Voice- und Nachrichtenkanäle ankündigen zu können: Benutzerdefinierte Kanäle!
Mithilfe von benutzerdefinierten Ereignissen können Sie eine benutzerdefinierte Integration mit jedem erdenklichen Kanal erstellen. Zum Beispiel, andere Messaging-Plattformen, Emailsoder Zahlungen.
Wie es funktioniert:
1. Die Definition derCustom Event Objekt
Ein benutzerdefiniertes Ereignis hat ein type und ein body. Die type ist der von Ihnen gewählte Name für den benutzerdefinierten Kanal, der mit dem Schlüssel "custom:". Die body sind Schlüssel-Wert-Paare, die die Daten definieren, die Sie in dem Ereignis übergeben möchten.
2. Senden von benutzerdefinierten Ereignissen
Sie können benutzerdefinierte Ereignisse an eine Konversation senden über Unterhaltungen APIoder Client SDKs senden.
Wenn Sie ein Ereignis über die Android- oder iOS-SDKs senden, wird das "custom:" Präfix für den Ereignistyp automatisch in Ihrem Namen hinzugefügt.
Im Folgenden finden Sie Beispiele dafür, wie dies mit den drei unterstützten Client SDKs.
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. Empfang von benutzerdefinierten Ereignissen
Der Empfang eines benutzerdefinierten Ereignisses ist ähnlich wie der Empfang jedes anderen Ereignisses, da Sie es auf dem RTC Ihrer Anwendung empfangen event_url.
In unseren drei unterstützten Client-SDKs erhalten Sie sie wie unten dargestellt:
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. Senden von Push-Benachrichtigungen
Wenn Ihre Android- oder iOS-Anwendung im Hintergrund läuft, möchten Sie Ihren Benutzer vielleicht mit einer Push-Benachrichtigung über ein eingehendes benutzerdefiniertes Ereignis informieren.
Dazu müssen Sie die Nutzlast, die pro Push-Benachrichtigung gesendet werden soll, für jeden Typ definieren:
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. Empfang von Push-Benachrichtigungen
Nach Einrichtung von Push-Benachrichtigungen für Ihre mobilen Anwendungen eingerichtet haben, sind Sie bereit, Ihre benutzerdefinierten Push-Nachrichten zu empfangen. Sie können auf die benutzerdefinierten Daten, die Sie zuvor definiert haben, wie folgt zugreifen:
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
}
} Integration abgeschlossen
Jetzt haben Sie alles, was Sie brauchen, um einen benutzerdefinierten Kanal mit benutzerdefinierten Push-Benachrichtigungen in Ihre Konversationserlebnisse zu integrieren. Wir können es kaum erwarten, zu sehen, welche Kanäle Sie hinzufügen und wie Sie diese nutzen werden, um die Konversation Ihrer Nutzer mit Ihnen zu bereichern!
Was kommt als Nächstes?
Sehen Sie sich die vollständigen Leitfäden für benutzerdefinierte Ereignisse an für Unterhaltungen API und für Client-SDKs.
Hier finden Sie Beispiele für benutzerdefinierte Kanalintegrationen mit WeChat, SendinBlue-E-Mails, oder Zahlungen mit Stripe.
Mehr Konversationen erkunden API und Client SDK Funktionen in unserer öffentlichen Dokumentation.
Sollten Sie Fragen oder Feedback haben - lassen Sie es uns auf unserem Gemeinschaft Slack oder support@nexmo.com