Menetapkan TTL (time-to-live) pada data percakapan

Ringkasan

Ada dua cara untuk menetapkan waktu habis masa berlaku percakapan di CX Insights: menggunakan kolom expire_time, atau menggunakan kolom ttl. Anda dapat menggunakan kolom expire_time untuk menyetel stempel waktu yang menunjukkan kapan percakapan akan berakhir, atau kolom ttl untuk menyetel durasi waktu (dalam detik) hingga percakapan akan berakhir. Jika percakapan memiliki nilai expire_time dan ttl, CX Insights akan menggunakan nilai expire_time.

Percakapan yang disetel agar berakhir menggunakan kolom expire_time atau ttl akan dihapus 24 jam setelah waktu habis masa berlaku yang ditentukan tercapai. Lihat Dokumentasi resource percakapan untuk mengetahui detail selengkapnya. Halaman ini menunjukkan cara menyetel TTL, baik untuk setiap percakapan maupun untuk semua percakapan dalam project tertentu.

Jika percakapan tidak disetel agar berakhir, percakapan akan tetap ada di CX Insights tanpa batas waktu, meskipun percakapan dapat dihapus secara manual kapan saja.

Membuat percakapan dengan nilai TTL

Contoh berikut menggambarkan cara menetapkan nilai TTL untuk percakapan baru yang dibuat menggunakan kolom ttl di resource Conversation.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Google Cloud Project ID Anda.
  • TRANSCRIPT_URI: URI Cloud Storage yang mengarah ke file yang berisi transkrip percakapan.
  • MEDIUM: ditetapkan ke PHONE_CALL atau CHAT, bergantung pada jenis data. Jika tidak ditentukan, nilai defaultnya adalah PHONE_CALL.
  • SECONDS: time-to-live (waktu hingga percakapan berakhir) dalam detik dan fraksi detik.

Metode HTTP dan URL:

POST https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/conversations

Meminta isi JSON:

{
  "data_source": {
    "gcs_source": {
      "transcript_uri": "TRANSCRIPT_URI"
    }
  },
  "medium": "MEDIUM",
  "ttl": {
    "seconds": "SECONDS"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/PROJECT_ID/locations/us-central1/conversations/CONVERSATION_ID",
  "dataSource": {
    "gcsSource": {
      "transcriptUri": "gs://cloud-samples-data/ccai/chat_sample.json"
    }
  },
  "createTime": "2021-01-20T10:10:10.123000Z",
  "transcript": {
    "transcriptSegments": [
      ...
      {
        "text": "Thanks for confirming",
        "words": [
          {
            "word": "Thanks"
          },
          {
            "word": "for"
          },
          {
            "word": "confirming"
          }
        ],
        "languageCode": "en-US",
        "channelTag": 2,
        "messageTime": "2021-01-10T10:10:15.123000Z",
        "segmentParticipant": {
          "role": "HUMAN_AGENT",
          "userId": "555"
        }
      },
      ...
    ]
  },
  "medium": "CHAT",
  "duration": "5.00s",
  "turnCount": 10,
  "startTime": "2021-01-10T10:10:10.123000Z"
  "expireTime":"2021-01-21T10:10:10.123000Z",
}

Python

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

from google.cloud import contact_center_insights_v1
from google.protobuf import duration_pb2


def create_conversation_with_ttl(
    project_id: str,
    transcript_uri: str = "gs://cloud-samples-data/ccai/chat_sample.json",
    audio_uri: str = "gs://cloud-samples-data/ccai/voice_6912.txt",
) -> contact_center_insights_v1.Conversation:
    """Creates a conversation with a TTL value.

    Args:
        project_id:
            The project identifier. For example, 'my-project'.
        transcript_uri:
            The Cloud Storage URI that points to a file that contains the
            conversation transcript. Format is 'gs://{bucket_name}/{file.json}'.
            For example, 'gs://cloud-samples-data/ccai/chat_sample.json'.
        audio_uri:
            The Cloud Storage URI that points to a file that contains the
            conversation audio. Format is 'gs://{bucket_name}/{file.json}'.
            For example, 'gs://cloud-samples-data/ccai/voice_6912.txt'.

    Returns:
        A conversation.
    """
    # Construct a parent resource.
    parent = (
        contact_center_insights_v1.ContactCenterInsightsClient.common_location_path(
            project_id, "us-central1"
        )
    )

    # Construct a conversation.
    conversation = contact_center_insights_v1.Conversation()
    conversation.data_source.gcs_source.transcript_uri = transcript_uri
    conversation.data_source.gcs_source.audio_uri = audio_uri
    conversation.medium = contact_center_insights_v1.Conversation.Medium.CHAT

    # Construct a TTL.
    ttl = duration_pb2.Duration()
    ttl.seconds = 86400
    conversation.ttl = ttl

    # Call the Insights client to create a conversation.
    insights_client = contact_center_insights_v1.ContactCenterInsightsClient()
    conversation = insights_client.create_conversation(
        parent=parent, conversation=conversation
    )

    print(f"Created {conversation.name}")
    return conversation

Java

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


import com.google.cloud.contactcenterinsights.v1.ContactCenterInsightsClient;
import com.google.cloud.contactcenterinsights.v1.Conversation;
import com.google.cloud.contactcenterinsights.v1.ConversationDataSource;
import com.google.cloud.contactcenterinsights.v1.CreateConversationRequest;
import com.google.cloud.contactcenterinsights.v1.GcsSource;
import com.google.cloud.contactcenterinsights.v1.LocationName;
import com.google.protobuf.Duration;
import java.io.IOException;

public class CreateConversationWithTtl {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my_project_id";
    String transcriptUri = "gs://cloud-samples-data/ccai/chat_sample.json";
    String audioUri = "gs://cloud-samples-data/ccai/voice_6912.txt";

    createConversationWithTtl(projectId, transcriptUri, audioUri);
  }

  public static Conversation createConversationWithTtl(
      String projectId, String transcriptUri, String audioUri) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (ContactCenterInsightsClient client = ContactCenterInsightsClient.create()) {
      // Construct a parent resource.
      LocationName parent = LocationName.of(projectId, "us-central1");

      // Construct a conversation.
      Conversation conversation =
          Conversation.newBuilder()
              .setDataSource(
                  ConversationDataSource.newBuilder()
                      .setGcsSource(
                          GcsSource.newBuilder()
                              .setTranscriptUri(transcriptUri)
                              .setAudioUri(audioUri)
                              .build())
                      .build())
              .setMedium(Conversation.Medium.CHAT)
              .setTtl(Duration.newBuilder().setSeconds(86400).build())
              .build();

      // Construct a request.
      CreateConversationRequest request =
          CreateConversationRequest.newBuilder()
              .setParent(parent.toString())
              .setConversation(conversation)
              .build();

      // Call the Insights client to create a conversation.
      Conversation response = client.createConversation(request);
      System.out.printf("Created %s%n", response.getName());
      return response;
    }
  }
}

Node.js

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

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'my_project_id';
// const transcriptUri = 'gs://cloud-samples-data/ccai/chat_sample.json';
// const audioUri = 'gs://cloud-samples-data/ccai/voice_6912.txt';

// Imports the Contact Center Insights client.
const {
  ContactCenterInsightsClient,
} = require('@google-cloud/contact-center-insights');

// Instantiates a client.
const client = new ContactCenterInsightsClient();

async function createConversationWithTtl() {
  const [conversation] = await client.createConversation({
    parent: client.locationPath(projectId, 'us-central1'),
    conversation: {
      dataSource: {
        gcsSource: {
          transcriptUri: transcriptUri,
          audioUri: audioUri,
        },
      },
      medium: 'CHAT',
      ttl: {
        seconds: 86400,
      },
    },
  });
  console.info(`Created ${conversation.name}`);
}
createConversationWithTtl();

Menetapkan TTL level project untuk semua percakapan masuk

Contoh kode berikut menunjukkan cara menyetel TTL tingkat project menggunakan kolom conversation_ttl di resource Setelan. TTL ini akan diterapkan ke semua percakapan masuk yang tidak menentukan waktu habis masa berlaku terpisah atau nilai TTL yang berbeda.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Google Cloud Project ID Anda.
  • SECONDS: time-to-live (waktu hingga percakapan berakhir) dalam detik dan fraksi detik.

Metode HTTP dan URL:

POST https://contactcenterinsights.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/settings?updateMask=conversation_ttl

Meminta isi JSON:

{
  "conversation_ttl": {
    "seconds": "SECONDS"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "name": "projects/$PROJECT/locations/us-central1/settings",
  "createTime": "2021-01-20T10:10:10.123000Z",
  "updateTime": "2021-01-20T11:11:11.456000Z",
  "conversationTtl": "86400s"
}

Python

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

from google.api_core import protobuf_helpers
from google.cloud import contact_center_insights_v1
from google.protobuf import duration_pb2


def set_project_ttl(project_id: str) -> None:
    """Sets a project-level TTL for all incoming conversations.

    Args:
        project_id:
            The project identifier. For example, 'my-project'.

    Returns:
        None.
    """
    # Construct a settings resource.
    settings = contact_center_insights_v1.Settings()
    settings.name = (
        contact_center_insights_v1.ContactCenterInsightsClient.settings_path(
            project_id, "us-central1"
        )
    )

    conversation_ttl = duration_pb2.Duration()
    conversation_ttl.seconds = 86400
    settings.conversation_ttl = conversation_ttl

    # Construct an update mask to only update the fields that are set on the settings resource.
    update_mask = protobuf_helpers.field_mask(None, type(settings).pb(settings))

    # Construct an Insights client that will authenticate via Application Default Credentials.
    # See authentication details at https://cloud.google.com/docs/authentication/production.
    insights_client = contact_center_insights_v1.ContactCenterInsightsClient()

    # Call the Insights client to set a project-level TTL.
    insights_client.update_settings(settings=settings, update_mask=update_mask)

    # Call the Insights client to get the project-level TTL to confirm that it was set.
    new_conversation_ttl = insights_client.get_settings(
        name=settings.name
    ).conversation_ttl
    print(
        "Set TTL for all incoming conversations to {} day".format(
            new_conversation_ttl.days
        )
    )

Java

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


import com.google.cloud.contactcenterinsights.v1.ContactCenterInsightsClient;
import com.google.cloud.contactcenterinsights.v1.Settings;
import com.google.cloud.contactcenterinsights.v1.SettingsName;
import com.google.protobuf.Duration;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class SetProjectTtl {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace this variable before running the sample.
    String projectId = "my_project_id";

    setProjectTtl(projectId);
  }

  public static void setProjectTtl(String projectId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (ContactCenterInsightsClient client = ContactCenterInsightsClient.create()) {
      // Construct a settings resource.
      SettingsName name = SettingsName.of(projectId, "us-central1");
      Settings settings =
          Settings.newBuilder()
              .setName(name.toString())
              .setConversationTtl(Duration.newBuilder().setSeconds(86400).build())
              .build();

      // Construct an update mask.
      FieldMask updateMask = FieldMask.newBuilder().addPaths("conversation_ttl").build();

      // Call the Insights client to set a project-level TTL.
      Settings response = client.updateSettings(settings, updateMask);
      System.out.printf("Set TTL for all incoming conversations to 1 day");
    }
  }
}

Node.js

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

/**
 * TODO(developer): Uncomment this variable before running the sample.
 */
// const projectId = 'my_project_id';

// Imports the Contact Center Insights client.
const {
  ContactCenterInsightsClient,
} = require('@google-cloud/contact-center-insights');

// Instantiates a client.
const client = new ContactCenterInsightsClient();

async function setProjectTtl() {
  await client.updateSettings({
    settings: {
      name: client.settingsPath(projectId, 'us-central1'),
      conversationTtl: {
        seconds: 86400,
      },
    },
    updateMask: {
      paths: ['conversation_ttl'],
    },
  });
  console.info('Set TTL for all incoming conversations to 1 day');
}
setProjectTtl();