Merekam peristiwa pengguna real-time

Halaman ini menjelaskan cara mencatat peristiwa pengguna secara real time.

Untuk jenis peristiwa pengguna yang dapat Anda catat, lihat kolom eventType dari objek userEvents. Dengan menyerap peristiwa pengguna, Anda dapat meningkatkan kualitas hasil. Misalnya, peristiwa pengguna memengaruhi peringkat hasil penelusuran. Hasil dengan rasio klik-tayang yang lebih tinggi akan ditingkatkan, sedangkan hasil dengan rasio klik-tayang yang lebih rendah akan diturunkan. Jangan mencatat peristiwa pengguna untuk dokumen yang belum Anda impor.

Jika Anda menggunakan aplikasi dengan beberapa penyimpanan data yang terpasang, masukkan peristiwa pengguna di tingkat lokasi, bukan di tingkat penyimpanan data. Hal ini memungkinkan peristiwa pengguna tertentu dikirim ke penyimpanan data yang terkait dengannya. Saat mencatat peristiwa pengguna di tingkat lokasi, Anda harus menyertakan kolom engine dalam peristiwa pengguna untuk mengaitkan peristiwa dengan aplikasi yang benar. Untuk contoh peristiwa pengguna yang menyertakan kolom engine, lihat referensi berikut:

Untuk mengimpor peristiwa pengguna historis secara massal, lihat Mengimpor peristiwa pengguna historis.

Anda dapat mencatat peristiwa pengguna dengan cara berikut:

Untuk representasi JSON peristiwa pengguna, lihat userEvents dalam referensi API.

Sebelum memulai

Sebelum mengimpor peristiwa pengguna:

Merekam peristiwa pengguna real-time dengan piksel JavaScript

Untuk mencatat peristiwa pengguna dengan piksel JavaScript:

  1. Buat kunci API untuk panggilan ke metode userEvents.collect.
  2. Lihat contoh piksel JavaScript untuk mengetahui contoh tag JavaScript yang mengumpulkan peristiwa pengguna.

Membuat kunci API

Kunci API diperlukan jika Anda menggunakan piksel JavaScript untuk mengumpulkan peristiwa pengguna dari browser pengguna.

Untuk membuat kunci API untuk panggilan ke metode userEvents.collect, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Credentials.

    Kredensial

  2. Dalam daftar project di bagian atas halaman konsol Google Cloud , pilih project Anda (project mungkin sudah dipilih).

  3. Klik Create credentials, lalu pilih kunci API. Jangan tambahkan pembatasan perujuk apa pun. Beberapa setelan privasi pengguna tidak meneruskan URL perujuk.

    • Catat kunci API yang dihasilkan, yang akan Anda gunakan saat memanggil pencatatan log peristiwa pengguna.
  4. Untuk meningkatkan keamanan, tambahkan pembatasan HTTP ke Kunci API Anda guna membatasi akses ke layanan Gemini Enterprise di https://discoveryengine.googleapis.com/*.

Contoh piksel JavaScript

Contoh berikut mencatat peristiwa pengguna view-item menggunakan piksel JavaScript.

Untuk representasi JSON untuk peristiwa pengguna, lihat userEvents di referensi API.

<script type="text/javascript">
var user_event = {
  "eventType" : "view-item",
  "userPseudoId": "USER_PSEUDO_ID",
  "engine": "projects/PROJECT_ID/locations/LOCATION_ID/collections/default_collection/engines/APP_ID",
  "userInfo": {
      "userId": "USER_ID"
  },
  "attributionToken": "ATTRIBUTION_TOKEN",
  "tagIds": "TAG_ID",
  "documents": [
      {
        "id": "DOCUMENT_ID"
      }
  ]
};

var _gre = _gre || {};
// Credentials for project.
_gre.apiKey = '[API_KEY]';
_gre.logEvent = user_event;
_gre.projectId = 'PROJECT_ID';
_gre.locationId = 'LOCATION_ID';
_gre.dataStoreId = 'DATA_STORE_ID';

(function() {
  var gre = document.createElement('script'); gre.type = 'text/javascript'; gre.async = true;
  gre.src = 'https://www.gstatic.com/discoveryengine/v1beta_event.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gre, s);
})();

</script>

Merekam peristiwa pengguna real-time dengan metode userEvents.write

REST

Anda dapat menggunakan metode userEvents.write untuk mengirim peristiwa pengguna langsung ke API dari server backend Anda.

Untuk mencatat peristiwa pengguna, kirim permintaan POST ke metode userEvents.write dan berikan isi permintaan yang sesuai. Untuk representasi JSON peristiwa pengguna, lihat userEvents dalam referensi API.

Jika Anda mencatat peristiwa pengguna di tingkat lokasi, gunakan endpoint https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/userEvents:write.

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global/userEvents:write" \
     -d '{
         "eventType": "view-item",
         "userPseudoId": "visitor0",
         "engine": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID",
         "eventTime": "2020-01-01T03:33:33.000001Z",
         "tagIds": ["321"],
         "attributionToken": "ABC",
         "attributes": {
            "example_text_attribute": {
              "text": ["text_1", "text_2"]
            },
            "example_number_attribute": {
               "numbers": [3.14, 42, 1.2345]
            }
          },
         "documents": [{
            "id": "abc"
          }],
         "userInfo": {
           "userId": "abc",
           "userAgent": "Mozilla/5.0"
         },
         "pageInfo": {
          "uri": "http://example",
          "referrerUri": "http://example",
          "pageViewId": "currentPageUri"
         }
        }'

C#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise C#.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

using Google.Cloud.DiscoveryEngine.V1;

public sealed partial class GeneratedUserEventServiceClientSnippets
{
    /// <summary>Snippet for WriteUserEvent</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void WriteUserEventRequestObject()
    {
        // Create client
        UserEventServiceClient userEventServiceClient = UserEventServiceClient.Create();
        // Initialize request argument(s)
        WriteUserEventRequest request = new WriteUserEventRequest
        {
            ParentAsDataStoreName = DataStoreName.FromProjectLocationDataStore("[PROJECT]", "[LOCATION]", "[DATA_STORE]"),
            UserEvent = new UserEvent(),
            WriteAsync = false,
        };
        // Make the request
        UserEvent response = userEventServiceClient.WriteUserEvent(request);
    }
}

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Go.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


//go:build examples

package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewUserEventClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.WriteUserEventRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#WriteUserEventRequest.
	}
	resp, err := c.WriteUserEvent(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Java.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import com.google.cloud.discoveryengine.v1.DataStoreName;
import com.google.cloud.discoveryengine.v1.UserEvent;
import com.google.cloud.discoveryengine.v1.UserEventServiceClient;
import com.google.cloud.discoveryengine.v1.WriteUserEventRequest;

public class SyncWriteUserEvent {

  public static void main(String[] args) throws Exception {
    syncWriteUserEvent();
  }

  public static void syncWriteUserEvent() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (UserEventServiceClient userEventServiceClient = UserEventServiceClient.create()) {
      WriteUserEventRequest request =
          WriteUserEventRequest.newBuilder()
              .setParent(
                  DataStoreName.ofProjectLocationDataStoreName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]")
                      .toString())
              .setUserEvent(UserEvent.newBuilder().build())
              .setWriteAsync(true)
              .build();
      UserEvent response = userEventServiceClient.writeUserEvent(request);
    }
  }
}

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Python.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# This snippet has been automatically generated and should be regarded as a
# code template only.
# It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
#   client as shown in:
#   https://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import discoveryengine_v1


def sample_write_user_event():
    # Create a client
    client = discoveryengine_v1.UserEventServiceClient()

    # Initialize request argument(s)
    request = discoveryengine_v1.WriteUserEventRequest(
        parent="parent_value",
    )

    # Make the request
    response = client.write_user_event(request=request)

    # Handle the response
    print(response)

Ruby

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Ruby.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

require "google/cloud/discovery_engine/v1"

##
# Snippet for the write_user_event call in the UserEventService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::UserEventService::Client#write_user_event.
#
def write_user_event
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::UserEventService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::WriteUserEventRequest.new

  # Call the write_user_event method.
  result = client.write_user_event request

  # The returned object is of type Google::Cloud::DiscoveryEngine::V1::UserEvent.
  p result
end