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

会話におけるカスタムチャンネルの導入

最終更新日 April 27, 2021

所要時間:1 分

Vonageでは、ユーザが素晴らしい会話体験を創造し続けられるよう、最も堅牢で柔軟かつスケーラブルなプラットフォームを構築することをお約束します。このような考えのもと、In-App Voiceとメッセージ・チャンネルの新しい兄弟を発表できることを嬉しく思います:カスタムチャンネルです!

カスタムイベントを使用すると、あなたが想像できるあらゆるチャネルとのカスタム統合を作成することができます。例えば、他の メッセージングプラットフォーム, 電子メールまたは 支払い.

どのように機能するか

1.定義Custom Event対象

カスタムイベントには typebody.があります。 typeはカスタム・チャンネルの名前です。 "custom:".で始まります。 bodyはキーと値のペアで、イベントに渡すデータを定義します。

2.カスタムイベントの送信

カスタムイベントを会話に送信するには カンバセーションAPIまたはクライアントSDKを使用します。

Android SDKまたはiOS SDKを通じてイベントを送信する場合、イベント・タイプの接頭辞は自動的に追加されます。 "custom:"プレフィックスが自動的に追加されます。

以下は、サポートされている3つのSDKを使用した実現方法の例です。 クライアントSDK.

アンドロイド

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.")
})

ジャバスクリプト

conversation.sendCustomEvent({ type: 'custom:my_type', body: { myKey: 'myValue' }}).then((custom_event) => { ... });

3.カスタムイベントの受信

カスタム・イベントの受信は、アプリケーションのRTCで受信するという点で、他のイベントの受信と似ている。 event_url.

サポートされている3つのクライアントSDKでは、以下のように表示されます:

アンドロイド

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))");
}

ジャバスクリプト

conversation.on('custom:my_type', (from, event) => {
  console.log(event.body);
});

4.プッシュ通知の送信

AndroidやiOSのアプリケーションがバックグラウンドで動作している場合、カスタムイベントの着信をプッシュ通知でユーザーに知らせたいと思うかもしれません。

そのためには、プッシュ通知ごとに送信するペイロードをタイプごとに定義する必要があります:

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.プッシュ通知の受信

その後 プッシュ通知の設定モバイルアプリのプッシュ通知を設定したら、カスタムプッシュを受信する準備が整いました。以前に定義したカスタムデータには、以下のようにアクセスできます:

アンドロイド

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

統合完了

これで、カスタム・チャンネルとカスタム・プッシュ通知を会話体験に追加するために必要なものがすべて揃いました。どのチャンネルを追加し、どのように使ってユーザーとの会話を豊かにするのか、今から楽しみです!

次はどうする?

ご質問やご意見がありましたら、私たちの コミュニティ・スラックまたは support@nexmo.com

シェア:

https://a.storyblok.com/f/270183/384x384/b935cb065d/brittbarak.png
Britt Barakヴォネージの卒業生

ブリット・バラックはNexmoのプロダクトマネージャーで、Nexmo Conversation APIとクライアントSDKを担当しています。