डॉक्युमेंटेशन

पुश नोटिफिकेशन

ॲप बंद असतानाही सपोर्ट प्रतिनिधींची उत्तरे आणि मोहिमा पोहोचवा — थेट योग्य संभाषणात नेणाऱ्या डीप लिंकसह. पुश सबसिस्टम तुमच्या ॲपच्या ताब्यात असते; SDK फक्त टोकन नोंदवते आणि संभाषणे उघडते.

Respondo काय पाठवते#

  • मेसेजचे पुश — अभ्यागत सहभागी असलेल्या संभाषणातील सपोर्ट प्रतिनिधी किंवा AI चे उत्तर.
  • मोहिमेचे पुश — बाहेर जाणाऱ्या पुश मोहिमा, ज्या उघडल्याची नोंद (open beacon) देखील पाठवतात.

मेसेजच्या पुशमध्ये नेहमी respondo://conversation/<id> या स्वरूपाची डीप लिंक असते. मोहिमेच्या पुशमध्ये मोहिमेवर कॉन्फिगर केलेली डीप लिंक असते — ती ऐच्छिक आहे, आणि ठरवलेली नसेल तर पुशमध्ये डीप लिंक नसते.

Apple (APNs)#

iOS पुश थेट APNs वर चालतात — Firebase ची गरज नाही. तुमच्या Apple Developer खात्यातून हे मिळवा:

  • APNs Auth Key (.p8 टोकन की).
  • त्या कीचा Key ID.
  • तुमचा Team ID.
  • ॲपचा bundle id.

Google (FCM)#

Android पुश Firebase Cloud Messaging मधून जातात. तुमच्या Firebase प्रकल्पातून हे मिळवा:

  • Cloud Messaging भूमिका असलेला service account JSON.
  • Firebase प्रोजेक्ट ID (Firebase कन्सोल → Project settings) — डॅशबोर्डच्या पुश फॉर्ममध्ये service-account JSON शेजारी स्वतंत्र फील्ड म्हणून भरला जातो.
  • Android ॲपचे package name, आणि ॲप त्याच Firebase प्रकल्पाशी जोडा (google-services.json).

Respondo मध्ये कॉन्फिगरेशन#

डॅशबोर्डमध्ये तुमच्या विजेट चॅनेलला APNs की आणि प्रोजेक्ट ID सह FCM service account जोडा. दोन्ही प्लॅटफॉर्मवर पाठवण्यासाठी Respondo ला एवढेच लागते.

API मधून क्रेडेन्शियल्स सेट करणे आणि सर्व फील्डचा संपूर्ण तपशील तुमच्या SDK ॲक्सेससोबत मिळणाऱ्या पुश सेटअप गाइडमध्ये दिलेला आहे.

payload चे स्वरूप#

payload नेहमी रूटमधल्या respondo की खाली असते — ती असल्यामुळेच SDK स्वतःचे पुश इतरांपासून वेगळे ओळखते (iOS वर userInfo मध्ये, Android वर data["respondo"] मध्ये JSON स्ट्रिंग म्हणून).

respondo payloadjson
{
  "respondo": {
    "type": "message",
    "conversation_id": "a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90",
    "message_id": "e9a3c1f6-4b8d-4e0a-b5f3-1d7b2a4e9c63",
    "deep_link": "respondo://conversation/a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90"
  }
}

सर्व मूल्ये सपाट स्ट्रिंग असतात. नोटिफिकेशनचे शीर्षक आणि मजकूर प्लॅटफॉर्मच्या ट्रान्स्पोर्टमधून येतात — APNs वर aps.alert आणि FCM वर message.notification — respondo ऑब्जेक्टच्या आत नाही.

मोहिमेच्या पुशमध्ये delivery_id देखील असतो, जो उघडल्याची नोंद (open beacon) पाठवण्यासाठी वापरला जातो, आणि मोहिमेच्या पुश डेटामधल्या अतिरिक्त सपाट स्ट्रिंग की देखील असू शकतात.

टॅप आणि फोरग्राउंड हाताळणे#

नोटिफिकेशनवर टॅप झाल्यावर कच्चा payload SDK ला द्या. SDK तो payload वाचते आणि योग्य संभाषण उघडते; पुश Respondo चा नसेल, तर ते false परत करते (अशा वेळी तो तुम्ही स्वतः हाताळा).

टॅप हाताळणे (प्रति प्लॅटफॉर्म)text
Android:  RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS:      Respondo.handlePush(userInfo: userInfo)
Flutter:  Respondo.handlePushData(message.data)

डुप्लिकेट पुश message_id नुसार एकत्र केले जातात, आणि तेच संभाषण फोरग्राउंडमध्ये उघडे असताना सिस्टीम नोटिफिकेशन दाखवले जात नाही — या दोन्ही गोष्टी SDK आपोआप सांभाळते.

डिव्हाइस टोकन नोंदवणे#

तुमचे ॲप स्वतःच्या पुश सबसिस्टमकडून डिव्हाइस टोकन मिळवते आणि ते setPushToken ला देते. लॉगआउटच्या वेळी clearPushToken कॉल करा.

कोणते टोकन द्यायचे. बॅकएंड प्रत्येक डिलिव्हरी प्लॅटफॉर्मनुसार पाठवतो — iOS थेट APNs कडे, Android FCM कडे — त्यामुळे तुमची पुश लायब्ररी जे काही परत करेल ते नव्हे, तर त्या प्लॅटफॉर्मच्या नेटिव्ह ट्रान्सपोर्टचेच टोकन तुम्ही नोंदवले पाहिजे:
  • Android — FirebaseMessaging.getToken() कडून मिळणारा FCM रजिस्ट्रेशन टोकन.
  • iOS (नेटिव्ह) — didRegisterForRemoteNotificationsWithDeviceToken कडून मिळणारा APNs डिव्हाइस टोकन (hex).
  • Flutter मधून iOS (firebase_messaging) — getAPNSToken() वापरा, getToken() नाही. iOS वर FCM टोकन दिल्यास तो APNs कडे जातो, जिथे तो वैध डिव्हाइस टोकन नसतो आणि पुश कधीच पोहोचत नाहीत. getAPNSToken() लाँचनंतरच्या पहिल्या काही क्षणांत null असू शकतो — तसे असल्यास थोड्या वेळाने पुन्हा प्रयत्न करा.
Android — FirebaseMessagingServicekotlin
override fun onNewToken(token: String) {
    Respondo.setPushToken(token)
}
iOS — AppDelegateswift
func application(
    _ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
    let token = deviceToken.map { String(format: "%02x", $0) }.joined()
    Respondo.setPushToken(token)
}
Flutter — firebase_messagingdart
// iOS ला APNs टोकन लागतो; Android ला FCM टोकन लागतो.
final token = Platform.isIOS
    ? await FirebaseMessaging.instance.getAPNSToken()
    : await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);

// FCM आपला रजिस्ट्रेशन टोकन बदलत राहते; Android ला त्याच्याशी जुळवून ठेवा.
if (!Platform.isIOS) {
  FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}