ਦਸਤਾਵੇਜ਼

ਪੁਸ਼ ਸੂਚਨਾਵਾਂ

ਐਪ ਬੰਦ ਹੋਣ ਦੇ ਬਾਵਜੂਦ ਸਹਾਇਤਾ ਕਰਮੀਆਂ ਦੇ ਜਵਾਬ ਅਤੇ ਮੁਹਿੰਮਾਂ ਪਹੁੰਚਾਓ — deep link ਸਿੱਧਾ ਸਹੀ ਗੱਲਬਾਤ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ। ਪੁਸ਼ ਦਾ ਸਬ-ਸਿਸਟਮ ਤੁਹਾਡੀ ਐਪ ਦਾ ਹੁੰਦਾ ਹੈ; SDK ਟੋਕਨ ਦਰਜ ਕਰਦਾ ਹੈ ਅਤੇ ਗੱਲਬਾਤਾਂ ਖੋਲ੍ਹਦਾ ਹੈ।

Respondo ਕੀ ਭੇਜਦਾ ਹੈ#

  • ਸੁਨੇਹਾ ਪੁਸ਼ — ਉਸ ਗੱਲਬਾਤ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਮੀ ਜਾਂ AI ਦਾ ਜਵਾਬ, ਜਿਸ ਵਿੱਚ ਵਿਜ਼ਿਟਰ ਸ਼ਾਮਲ ਹੈ।
  • ਮੁਹਿੰਮ ਪੁਸ਼ — ਬਾਹਰ ਭੇਜੀਆਂ ਪੁਸ਼ ਮੁਹਿੰਮਾਂ, ਜੋ ਖੁੱਲ੍ਹਣ ਦਾ ਬੀਕਨ ਵੀ ਭੇਜਦੀਆਂ ਹਨ।

ਸੁਨੇਹਾ ਪੁਸ਼ਾਂ ਵਿੱਚ ਹਮੇਸ਼ਾ ਇਸ ਰੂਪ ਦਾ deep link ਹੁੰਦਾ ਹੈ: respondo://conversation/<id>। ਮੁਹਿੰਮ ਪੁਸ਼ਾਂ ਵਿੱਚ ਉਹ deep link ਹੁੰਦਾ ਹੈ ਜੋ ਮੁਹਿੰਮ ਉੱਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੋਵੇ — ਇਹ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਸੈੱਟ ਨਾ ਹੋਣ ਉੱਤੇ ਪੁਸ਼ ਵਿੱਚ ਕੋਈ deep link ਨਹੀਂ ਹੁੰਦਾ।

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 ਦੀ ਪਹੁੰਚ ਨਾਲ ਮਿਲਦੀ ਹੈ।

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

ਸਾਰੇ ਮੁੱਲ ਸਿੱਧੀਆਂ (flat) ਸਤਰਾਂ ਹਨ। ਸੂਚਨਾ ਦਾ ਸਿਰਲੇਖ ਅਤੇ ਮਜ਼ਮੂਨ ਪਲੇਟਫਾਰਮ ਦੀ ਢੋਆ-ਢੁਆਈ ਰਾਹੀਂ ਪਹੁੰਚਦੇ ਹਨ — APNs ਉੱਤੇ aps.alert ਅਤੇ FCM ਉੱਤੇ message.notification — ਨਾ ਕਿ respondo ਆਬਜੈਕਟ ਦੇ ਅੰਦਰ।

ਮੁਹਿੰਮ ਵਾਲੇ ਪੁਸ਼ ਵਿੱਚ delivery_id ਵੀ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਖੁੱਲ੍ਹਣ ਦਾ ਬੀਕਨ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ; ਨਾਲ ਹੀ ਉਨ੍ਹਾਂ ਵਿੱਚ ਮੁਹਿੰਮ ਦੇ push data ਵਿੱਚੋਂ ਵਾਧੂ ਸਿੱਧੀਆਂ ਸਤਰ-ਕੁੰਜੀਆਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।

ਟੈਪ ਤੇ ਫ਼ੋਰਗਰਾਊਂਡ ਸੰਭਾਲਣਾ#

ਸੂਚਨਾ ਉੱਤੇ ਟੈਪ ਹੋਣ ਵੇਲੇ ਕੱਚਾ payload 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 ਸੱਦੋ।

ਕਿਹੜਾ ਟੋਕਨ ਦੇਣਾ ਹੈ। backend ਹਰ ਡਿਲੀਵਰੀ ਨੂੰ ਪਲੇਟਫ਼ਾਰਮ ਮੁਤਾਬਕ ਭੇਜਦਾ ਹੈ — iOS ਸਿੱਧਾ APNs ਨੂੰ, Android FCM ਨੂੰ — ਸੋ ਤੁਹਾਨੂੰ ਪਲੇਟਫ਼ਾਰਮ ਦੇ ਨੇਟਿਵ ਟਰਾਂਸਪੋਰਟ ਵਾਲਾ ਟੋਕਨ ਹੀ ਦਰਜ ਕਰਨਾ ਹੈ, ਨਾ ਕਿ ਜੋ ਵੀ ਤੁਹਾਡੀ ਪੁਸ਼ ਲਾਇਬ੍ਰੇਰੀ ਵਾਪਸ ਕਰ ਦੇਵੇ:
  • Android — FirebaseMessaging.getToken() ਤੋਂ ਮਿਲਿਆ FCM registration token।
  • 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 ਆਪਣਾ registration token ਬਦਲਦਾ ਰਹਿੰਦਾ ਹੈ; Android ਨੂੰ ਸਿੰਕ ਵਿੱਚ ਰੱਖੋ।
if (!Platform.isIOS) {
  FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}