Partager via


Mettre en œuvre le suivi des interactions par notification Push

Pour en savoir plus sur l’approche globale de configuration des notifications push dans Customer Insights - Journeys, consultez la présentation de la configuration des notifications push.

Pour activer les notifications Push dans Customer Insights - Journeys, vous devez suivre les étapes suivantes :

  1. Ouvrir les configurations d’application notification push
  2. Mappage des utilisateurs des notifications push
  3. Enregistrement de l’appareil pour les notifications push
  4. Réception des notifications Push sur des appareils mobiles
  5. Interactions par notification Push

Afin de générer des rapports sur les taux d’ouverture, l’application doit renvoyer ces données à Customer Insights - Journeys.

Important

Pour suivre les liens que les destinataires ouvrent dans les notifications, vous devez recueillir le consentement de suivi des clients. En savoir plus sur les stratégies de collecte du consentement des clients dans Customer Insights - Journeys : Présentation de la gestion du consentement

Envoyer des événements dans Customer Insights - Journeys

URL de la demande :

POST {PublicEndpoint}api/v1.0/orgs/<orgId>/pushdatareceiver/events
{ 

    "TrackingId": "00000000-0000-0000-0000-000000000000", 
    "DeviceToken": "%DeviceToken", 
    "PushNotificationStatus":  1

} 

Renvoie : 202 si la demande est correcte, sinon 400

Nom Description
TrackingId Chaque notification a un ID de suivi dans ses données. Cet identificateur doit être envoyé pour le suivi des événements.
DeviceToken Jeton unique pour l’appareil mobile enregistrant l’événement.
PushNotificationStatus Code Statut de l’événement. "1" renvoyé pour l’événement Ouvert.
orgId Identificateur de l’organisation Customer Insights - Journeys.

Exemple de code Swift pour envoyer les événements dans iOS

func createInteraction(typeInteraction: Int, trackingId: String) {
    if !trackingId.isEmpty || trackingId == "00000000-0000-0000-0000-000000000000" {
        return
    }
    let orgId = UserDefaults.standard.string(forKey: "organizationId2")
    let endP = UserDefaults.standard.string(forKey: "endpoint2")
    if orgId == nil || endP == nil {
        return
    }
    let url = URL(
        string: String(
            format: "https://%@/api/v1.0/orgs/%@/pushdatareceiver/events", endP ?? "", orgId ?? ""))!
    let session = URLSession.shared
    // now create the URLRequest object using the url object
    var request = URLRequest(url: url)
    request.httpMethod = "POST"  //set http method as POST
    // add headers for the request
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")  // change as per server requirements
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    do {
        // convert parameters to Data and assign dictionary to httpBody of request
        let deviceToken = UserDefaults.standard.string(forKey: "deviceToken")
        let jsonBodyDict = [
            "PushNotificationStatus": String(typeInteraction), "DeviceToken": deviceToken,
            "TrackingId": trackingId,
        ]
        request.httpBody = try JSONSerialization.data(
            withJSONObject: jsonBodyDict, options: .prettyPrinted)
    } catch let error {
        print(error.localizedDescription)
        return
    }
    // create dataTask using the session object to send data to the server
    let task = session.dataTask(with: request) { data, response, error in
        if let error = error {
            print("Post Request Error: \(error.localizedDescription)")
            return
        }
        // ensure there is valid response code returned from this HTTP response
        guard let ttpResponse = response as? HTTPURLResponse,
            (200...299).contains(httpResponse.statusCode)
        else {
            print("Invalid Response received from the server")
            return
        }
        print("Interaction creation successful.")
    }
    // perform the task
    task.resume()
}


Exemple de code Java pour envoyer les événements dans Android

Partie 1 : Générer la charge utile

EventTrackingContract: 
public String toJsonString() { 
        JSONObject jsonObject = new JSONObject(); 
        try { 
            jsonObject.put("PushNotificationStatus", mEvent.toString()); 
            jsonObject.put("DeviceToken", mDeviceToken); 

            jsonObject.put("TrackingId", trackingId); 
        } catch (JSONException e) { 
            Log.d(LOG_TAG, "Json exception while creating event tracking contract: " + e.getMessage()); 
        } 
        return jsonObject.toString(); 
    } 
 
EventTypeEnum: 
public enum EventType {
    Opened(1); 
}

Partie 2 : HttpClient pour envoyer l’événement au serveur

AsyncTask.execute(new Runnable() { 
            @Override 
            public void run() { 
                SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); 
                String hostname = sharedPreferences.getString(HOST_NAME, ""); 
                String organizationId = sharedPreferences.getString(ORGANIZATION_ID, ""); 
                final HashMap<String, String> headers = new HashMap<>(); 
                headers.put("Content-Type", "application/json"); 
                final EventTrackingContract eventTrackingContract = new EventTrackingContract(event); 
                Log.d(TAG, eventTrackingContract.toJsonString()); 
                String response = HttpClientWrapper.request(String.format("https://%s/api/v1.0/orgs/%s/pushdatareceiver/events" 

, hostname, organizationId, trackingId), 
                        "POST", headers, eventTrackingContract.toJsonString()); 
                Log.d(TAG, response); 
            } 
        });