Ativar as notificações do Pub/Sub para eventos do Conversational Insights

Ao ativar as notificações do Pub/Sub, você recebe uma notificação sempre que um evento do CX Insights é concluído. É possível configurar o CX Insights para enviar uma notificação de todos os eventos ou apenas dos especificados. Para saber mais sobre os eventos que podem acionar notificações do Pub/Sub, consulte a documentação de referência.

Pré-requisitos

  1. Siga as instruções para criar um tópico do Pub/Sub e uma assinatura de pull.

Ativar notificações do Pub/Sub

É possível configurar o CX Insights para enviar uma notificação apenas para eventos específicos ou para todos os eventos. O exemplo de código a seguir configura o CX Insights para enviar uma notificação apenas quando uma conversa ou uma análise é criada.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto Google Cloud .
  • TOPIC_ID: o ID do tópico de notificação (por exemplo, notificar sempre que uma conversa for criada). Cada tópico de notificação precisa ter um ID exclusivo.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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 autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 autenticar no CX Insights, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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();

Conteúdo da mensagem do Pub/Sub

O conteúdo da mensagem do Pub/Sub depende do evento que aciona essa notificação.

Gatilho Dados da mensagem Atributos da mensagem
create-analysis Operação de longa duração cuja resposta é uma análise {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
create-conversation Conversa {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
export-insights-data Operação de longa duração cuja resposta está vazia {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
ingest-conversations Operação de longa duração cuja resposta está vazia {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}
update-conversation Conversa {"conversation_name": "projects/{project}/locations/{location}/conversations/{conversation}"}
upload-conversation Operação de longa duração cuja resposta está vazia {"operation_name": "projects/{project}/locations/{location}/operations/{operation}"}