డాక్యుమెంటేషన్

పుష్ నోటిఫికేషన్‌లు

యాప్ మూసి ఉన్నప్పుడు కూడా ఆపరేటర్ జవాబులను, కాంపెయిన్‌లను చేరవేయండి — సరైన సంభాషణలోకి నేరుగా తీసుకెళ్లే డీప్ లింక్‌తో. పుష్ సబ్‌సిస్టమ్ మీ యాప్‌దే; SDK టోకెన్‌లను నమోదు చేసి సంభాషణలను తెరుస్తుంది.

Respondo ఏం పంపుతుంది#

  • మెసేజ్ పుష్‌లు — సందర్శకుడు భాగమైన సంభాషణలో ఆపరేటర్ లేదా AI ఇచ్చిన జవాబు.
  • కాంపెయిన్ పుష్‌లు — బయటకు వెళ్లే పుష్ కాంపెయిన్‌లు; ఇవి ఓపెన్ బీకన్‌ను కూడా నివేదిస్తాయి.

మెసేజ్ పుష్‌లు ఎప్పుడూ 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 project ID (Firebase console → Project settings) — డ్యాష్‌బోర్డ్ పుష్ ఫారంలో service-account JSON పక్కన దాని సొంత ఫీల్డ్‌గా నమోదు చేస్తారు.
  • Android యాప్ package name; అలాగే యాప్‌ను అదే Firebase ప్రాజెక్ట్‌కు కనెక్ట్ చేయండి (google-services.json).

Respondoలో కాన్ఫిగర్ చేయడం#

డ్యాష్‌బోర్డ్‌లో మీ విడ్జెట్ ఛానెల్‌కు APNs కీని, FCM service accountను దాని project IDతో పాటు జోడించండి. రెండు ప్లాట్‌ఫామ్‌లకూ పంపడానికి Respondoకు కావాల్సింది అంతే.

API ద్వారా ఈ క్రెడెన్షియల్స్‌ను అమర్చడం, పూర్తి ఫీల్డ్ రిఫరెన్స్ — ఇవి మీ SDK యాక్సెస్‌తో పాటు అందే పుష్ సెటప్ మార్గదర్శిలో ఉన్నాయి.

పేలోడ్ ఫార్మాట్#

పేలోడ్ ఎప్పుడూ రూట్‌లోని respondo కీ కిందే ఉంటుంది — ఆ కీ ఉండటాన్ని బట్టే SDK తన పుష్‌ను ఇతరుల పుష్‌ల నుంచి వేరు చేస్తుంది (iOSలో userInfoలో, Androidలో data["respondo"]లో JSON స్ట్రింగ్‌గా).

respondo పేలోడ్json
{
  "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 కూడా ఉంటుంది; అలాగే కాంపెయిన్ పుష్ డేటా నుంచి అదనపు ఫ్లాట్ స్ట్రింగ్ కీలు ఉండవచ్చు.

ట్యాప్‌లు & ఫోర్‌గ్రౌండ్ నిర్వహణ#

నోటిఫికేషన్‌ను ట్యాప్ చేసినప్పుడు ముడి పేలోడ్‌ను SDKకు అప్పగించండి. అది పేలోడ్‌ను పార్స్ చేసి సరైన సంభాషణను తెరుస్తుంది; పుష్ 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) — getToken() కాదు, getAPNSToken() వాడండి. 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);
}