Habilita las notificaciones de Pub/Sub para los eventos de Estadísticas de conversaciones

Si habilitas las notificaciones de Pub/Sub, recibirás una notificación cada vez que se complete un evento de CX Insights. Puedes configurar CX Insights para que envíe una notificación de todos los eventos o solo de los eventos especificados. Para obtener más información sobre los eventos que pueden activar las notificaciones de Pub/Sub, consulta la documentación de referencia.

Requisitos previos

  1. Sigue las instrucciones para crear un tema de Pub/Sub y una suscripción de extracción.

Habilita las notificaciones de Pub/Sub

Puedes configurar CX Insights para que envíe una notificación solo para eventos específicos o para todos los eventos. En el siguiente muestra de código, se configura CX Insights para que solo envíe una notificación cada vez que se cree una conversación o un análisis.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • TOPIC_ID: Es el ID del tema de la notificación (por ejemplo, notificar cada vez que se crea una conversación). Cada tema de notificación debe tener un ID único.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "pubsub_notification_settings": {
    "create-conversation": "projects/PROJECT_ID/topics/TOPIC_ID_1",
    "create-analysis": "projects/PROJECT_ID/topics/TOPIC_ID_2"
  },
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/us-central1/settings",
  "createTime": "2021-01-20T10:10:10.123000Z",
  "updateTime": "2021-01-20T11:11:11.456000Z",
  "pubsubNotificationSettings": {
    "create-conversation": "projects/PROJECT_ID/topics/TOPIC_ID_1",
    "create-analysis": "projects/PROJECT_ID/topics/TOPIC_ID_2"
  }
}

Python

Para autenticarte en CX Insights, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

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


def enable_pubsub_notifications(
    project_id: str, topic_create_conversation: str, topic_create_analysis: str
) -> None:
    """Enables Cloud Pub/Sub notifications for specified events.

    Args:
        project_id:
            The project identifier. For example, 'my-project'.
        topic_create_conversation:
            The Cloud Pub/Sub topic to notify of conversation creation events.
            Format is 'projects/{project_id}/topics/{topic_id}'.
            For example, 'projects/my-project/topics/my-topic'.
        topic_create_analysis:
            The Cloud Pub/Sub topic to notify of analysis creation events.
            Format is 'projects/{project_id}/topics/{topic_id}'.
            For example, 'projects/my-project/topics/my-topic'.

    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"
        )
    )
    settings.pubsub_notification_settings = {
        "create-conversation": topic_create_conversation,
        "create-analysis": topic_create_analysis,
    }

    update_mask = protobuf_helpers.field_mask(None, type(settings).pb(settings))

    # Call the Insights client to enable Pub/Sub notifications.
    insights_client = contact_center_insights_v1.ContactCenterInsightsClient()
    insights_client.update_settings(settings=settings, update_mask=update_mask)
    print("Enabled Pub/Sub notifications")

Java

Para autenticarte en CX Insights, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


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.FieldMask;
import java.io.IOException;

public class EnablePubSubNotifications {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my_project_id";
    String topicCreateConversation = "projects/my_project_id/topics/my_topic_id";
    String topicCreateAnalysis = "projects/my_project_id/topics/my_other_topic_id";

    enablePubSubNotifications(projectId, topicCreateConversation, topicCreateAnalysis);
  }

  public static void enablePubSubNotifications(
      String projectId, String topicCreateConversation, String topicCreateAnalysis)
      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())
              .putPubsubNotificationSettings("create-conversation", topicCreateConversation)
              .putPubsubNotificationSettings("create-analysis", topicCreateAnalysis)
              .build();

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

      // Call the Insights client to enable Pub/Sub notifications.
      Settings response = client.updateSettings(settings, updateMask);
      System.out.printf("Enabled Pub/Sub notifications");
    }
  }
}

Node.js

Para autenticarte en CX Insights, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'my_project_id';
// const topicCreateConversation = 'projects/my_project_id/topics/my_topic_id';
// const topicCreateAnalysis = 'projects/my_project_id/topics/my_other_topic_id';

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

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

async function enablePubSubNotifications() {
  const [settings] = await client.updateSettings({
    settings: {
      name: client.settingsPath(projectId, 'us-central1'),
      pubsubNotificationSettings: {
        'create-conversation': topicCreateConversation,
        'create-analysis': topicCreateAnalysis,
      },
    },
    updateMask: {
      paths: ['pubsub_notification_settings'],
    },
  });
  console.info(`Enabled Pub/Sub notifications for ${settings.name}`);
}
enablePubSubNotifications();

Contenido del mensaje de Pub/Sub

El contenido del mensaje de Pub/Sub depende del evento que activa esa notificación de Pub/Sub.

Activador Datos del mensaje Atributos del mensaje
create-analysis Operación de larga duración cuya respuesta es un análisis {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
create-conversation Conversación {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
export-insights-data Operación de larga duración cuya respuesta está vacía {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
ingest-conversations Operación de larga duración cuya respuesta está vacía {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
update-conversation Conversación {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
upload-conversation Operación de larga duración cuya respuesta está vacía {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}