Condividi tramite


Implementare il rilevamento delle interazioni con le notifiche push

Per ulteriori informazioni sull'approccio generale alla configurazione delle notifiche push in Customer Insights - Journeys, visita la panoramica sulla configurazione delle notifiche push.

Per abilitare le notifiche push in Customer Insights - Journeys, devi completare i seguenti passaggi:

  1. Configurazione dell'applicazione delle notifiche push
  2. Mapping utente per notifiche push
  3. Registrazione del dispositivo per le notifiche push
  4. Ricevere notifiche push sui dispositivi
  5. Report di interazione per notifiche push

Per poter generare report sulla frequenza dei clic, l'applicazione deve inviare questi dati a Customer Insights - Journeys.

Importante

Per tener traccia dei collegamenti aperti dai destinatari nelle notifiche, è necessario raccogliere il consenso al monitoraggio dei clienti. Scopri di più sulle strategie per raccogliere il consenso dei clienti in Customer Insights - Journeys: Panoramica sulla gestione del consenso

Invia eventi a Customer Insights - Journeys

URL della richiesta:

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

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

} 

Restituisce: 202 se la richiesta è valida, 400 in caso contrario

Nome Descrzione
TrackingId Ogni notifica ha un identificatore di rilevamento nei suoi dati. Questo identificatore deve essere inviato per il rilevamento degli eventi.
DeviceToken Token univoco per il dispositivo mobile che registra l'evento.
PushNotificationStatus Codice di stato dell'evento. "1" viene restituito per l'evento aperto.
orgId Identificatore dell'organizzazione Customer Insights - Journeys.

Frammento di codice Swift per inviare gli eventi in 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()
}


Frammento di codice Java per inviare gli eventi in Android

Parte 1: genera il payload

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

Parte 2: HttpClient per l'invio dell'evento al server

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