Partilhar via


Implementar a monitorização de interações com notificações push

Para saber mais sobre a abordagem geral para configurar notificações push no Customer Insights - Journeys, visite a descrição geral da configuração de notificações push.

Para ativar notificações push no Customer Insights - Journeys, precisa de concluir os seguintes passos:

  1. Configuração de aplicação de notificação push
  2. Mapeamento de utilizador para notificações push
  3. Registo de dispositivos para notificações push
  4. Receber notificações push em dispositivos
  5. Relatório de interação para notificações push

Para reportar as taxas de abertura, a aplicação precisa de voltar a enviar estes dados para o Customer Insights - Journeys.

Importante

Para monitorizar as ligações que os destinatários abrem nas notificações, tem de obter o consentimento do cliente para a monitorização. Saiba mais sobre estratégias para recolher o consentimento do cliente em Customer Insights - Journeys: Descrição geral da gestão do consentimento

Enviar eventos para o Customer Insights - Journeys

URL do Pedido:

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

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

} 

Devoluções: 202 se o pedido estiver correto, 400 caso contrário

Nome Descrição
TrackingId Cada notificação tem um identificador de monitorização nos respetivos dados. Este identificador tem de ser enviado para a monitorização de eventos.
DeviceToken Token exclusivo para o dispositivo móvel que regista o evento.
PushNotificationStatus Código de estado para o evento. '1' devolvido para o evento Aberto.
orgId Identificador da organização Customer Insights - Journeys.

Código Swift de amostra para enviar eventos no 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()
}


Código Java de amostra para enviar eventos no Android

Parte 1: Gerar o 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 para enviar o evento para o servidor

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