Redacción inteligente

La función Redacción inteligente ayuda a un agente humano durante un chat de texto con un usuario final. Sugiere frases para completar las oraciones que comenzó el agente humano. Puedes usar esta función para implementar una función de sugerencias personalizada para la interfaz de chat de tu agente.

Un agente humano recibe una sugerencia de texto mientras escribe en una interfaz de chat. En esta guía, se explica cómo implementar la función de Redacción inteligente llamando a la API directamente. Si lo prefieres, puedes usar la Consola de Agent Assist para entrenar un modelo y probar su rendimiento con el simulador. Consulta el instructivo del simulador de Redacción inteligente para obtener instrucciones.

Consulta la documentación sobre las prácticas recomendadas de Redacción inteligente para obtener instrucciones sobre cómo integrar Redacción inteligente en tu propio sistema y mejorar la calidad de tus sugerencias.

Antes de comenzar

Antes de leer esta guía, completa los siguientes pasos:

  1. Habilita la API de Dialogflow para tu proyecto.

Información de identificación personal y datos de niños

Cuando envías datos a esta API, esta intenta ocultar toda la información de identificación personal (PII). Si necesitas asegurarte de que el modelo no incluya PII, debes limpiar tus datos antes de enviarlos a la API. Reemplaza las palabras censuradas por marcadores de posición, como "REDACTED_NUMBER" o "REDACTED_NAME", en lugar de simplemente quitarlas.

Además, si tus datos contienen información recopilada de niños, debes quitar los datos de los niños antes de enviarlos a la API.

Entrena e implementa un modelo

Los modelos de Respuesta inteligente de Agent Assist se entrenan con conjuntos de datos de conversaciones. Un conjunto de datos de conversación contiene los datos de transcripción que subiste. En esta sección, se explica el proceso para crear un conjunto de datos de conversación, subir tus datos de conversación a él, y entrenar y, luego, implementar un modelo. También puedes realizar estas acciones con la consola de Agent Assist si prefieres no llamar a la API directamente.

Crea un conjunto de datos de conversaciones

Antes de comenzar a subir transcripciones de conversaciones, primero debes crear un conjunto de datos de conversaciones en el que colocarlas. Llama al método create en el recurso ConversationDataset para crear un conjunto de datos de conversación.

La respuesta contiene un ID de conjunto de datos de conversación.

Importa transcripciones de conversaciones a tu conjunto de datos de conversaciones

Sube los datos de tus conversaciones de chat a tu conjunto de datos de conversación para que Agent Assist los pueda procesar. Asegúrate de que la transcripción de cada conversación esté en formato JSON y se almacene en un bucket de Cloud Storage. Un conjunto de datos de conversaciones debe contener al menos 30,000 conversaciones. De lo contrario, fallará el entrenamiento de modelos. Como regla general, cuantas más conversaciones tengas, mejor será la calidad del modelo. Te recomendamos que subas al menos 3 meses de conversaciones para abarcar la mayor cantidad posible de casos de uso. La cantidad máxima de mensajes en un conjunto de datos de conversaciones es 1,000,000.

Llama al método importConversationData en el recurso ConversationDataset para importar tus conversaciones.

Campos obligatorios:

  • Es el ID del conjunto de datos de conversación que creaste anteriormente.
  • La ruta de acceso inputConfig lleva a los datos de la transcripción de la conversación en un bucket de Cloud Storage.

La respuesta es una operación de larga duración que puedes sondear para comprobar si se completó.

Crea un modelo de conversación

Llama al método create en el recurso ConversationModel para crear un modelo de conversación. Esta acción también crea la lista de entidades permitidas del modelo.

Campos obligatorios:

  • En datasets, proporciona un solo conjunto de datos con el ID del conjunto de datos de conversación que creaste anteriormente.
  • Establece smartReplyModelMetadata en un objeto vacío o completa el campo para anular el valor predeterminado.

La respuesta es una operación de larga duración que puedes sondear para comprobar si se completó. Una vez completada, el ID del modelo y el ID de la lista de entidades permitidas se incluirán en los metadatos de la operación.

  • ID del modelo: name
  • ID de la lista de entidades permitidas: smart_reply_model_metadata.associated_allowlist_info.document

Implementa el modelo de conversación

Llama al método deploy en el recurso ConversationModel para implementar el modelo de conversación.

Campo obligatorio:

  • Usa conversationModels: Ingresa el ID del modelo de conversación que creaste anteriormente.

Administra una lista de entidades permitidas

Cada modelo tiene una lista de entidades permitidas asociada, que se crea automáticamente cuando creas un modelo de conversación. La lista de entidades permitidas contiene todas las respuestas, generadas a partir de tus conjuntos de datos de conversación, que se pueden mostrar a un agente humano en el tiempo de ejecución. En esta sección, se describe la creación y la administración de listas de entidades permitidas. También puedes realizar estas acciones con la consola de Agent Assist si prefieres no llamar a la API directamente.

Exporta el contenido de la lista de entidades permitidas a un archivo CSV.

La creación del modelo genera automáticamente una lista de entidades permitidas asociada al nuevo modelo. La lista de entidades permitidas es un recurso Document con un ID único. El ID se devuelve en smart_reply_model_metadata.associated_allowlist_info.document cuando se crea un modelo. Para revisar los mensajes de la lista de entidades permitidas y realizar cambios en ellos, debes exportarlos a un bucket de Cloud Storage.

Llama al método export en el recurso Document para exportar el documento a un archivo CSV en un bucket de Cloud Storage. El campo smart_messaging_partial_update es opcional, pero afecta la forma en que podrás actualizar esta lista de entidades permitidas en el futuro. Si se configura como true, el archivo CSV exportado incluirá una columna que contiene un ID único para cada mensaje. Puedes usar el ID del mensaje para actualizar solo los mensajes especificados en lugar de todo el documento. Si smart_messaging_partial_update se establece en false o no se establece, la columna adicional no aparecerá en el archivo y cualquier actualización de la lista de entidades permitidas requerirá una actualización de todo el documento.

Campo obligatorio:

  • La ruta de acceso gcsDestination va a tu bucket de Cloud Storage.

La respuesta es una operación de larga duración que puedes sondear para comprobar si se completó. Luego, el archivo CSV que proporcionaste en la solicitud se completará con candidatos de respuesta.

Revisa la lista de entidades permitidas

La lista de entidades permitidas generada contiene respuestas que se generaron automáticamente con la función de Respuesta inteligente en función de los datos de tu conversación. Ahora puedes revisar y actualizar esas respuestas según sea necesario. Descarga el archivo CSV de tu bucket de Cloud Storage, edítalo según tus necesidades y vuelve a subirlo al bucket de Cloud Storage. Solo las respuestas de la lista de entidades permitidas se pueden mostrar a los agentes humanos.

Si editas alguna respuesta, te recomendamos que solo corrijas la ortografía y la gramática, y que no cambies el significado del mensaje. Cuanto más se desvíe el texto editado del significado del modelo, menos probable será que se muestre el mensaje.

También puedes crear mensajes nuevos si es necesario. Al igual que los mensajes editados, es menos probable que los mensajes creados aparezcan durante el tiempo de ejecución.

Actualiza la lista de entidades permitidas

Después de terminar de actualizar el archivo CSV, puedes usarlo para actualizar el recurso Document. Puedes optar por actualizar toda la lista de entidades permitidas o solo los mensajes especificados. Para actualizar solo los mensajes especificados, debes haber establecido smart_messaging_partial_update en true cuando exportaste la lista de entidades permitidas. Si ya lo hiciste, usa la columna generada automáticamente en el archivo CSV exportado para indicar los mensajes que se deben actualizar.

Llama al método reload en el recurso Document para actualizar la lista de entidades permitidas. Para actualizar solo los mensajes especificados, establece smart_messaging_partial_update en true en ReloadDocumentRequest. Para actualizar toda la lista de entidades permitidas, deja smart_messaging_partial_update sin configurar o establécelo en false.

Campos obligatorios:

  • gcsSource es la ruta de Cloud Storage al archivo CSV.
  • Para name, usa el nombre del recurso de la lista de entidades permitidas que se generó cuando creaste un modelo de conversación.

Solicitud de ejemplo:

{
  "name":"projects/project-id/knowledgeBases/knowledge-base-id/documents/allowlist-id",
  "gcsSource" {
      "uri": "gs://revised_smart_reply_allowlist_path"
   }
}

Evalúa el rendimiento de un modelo entrenado

Puedes probar el rendimiento de un modelo después de implementarlo y crear una lista de entidades permitidas para él. También debes proporcionar un conjunto de datos de prueba. Las respuestas generadas por el modelo entrenado de Respuesta inteligente y su lista de entidades permitidas asociada se compararán con los mensajes reales de los agentes en el conjunto de datos de prueba. El conjunto de datos de prueba debe estar compuesto por datos de conversaciones reales, pero no debe contener ninguno de los datos del conjunto de datos de conversaciones que usaste para entrenar el modelo. Por ejemplo, si tienes datos de tráfico de conversaciones de 1 mes, puedes usar datos de conversaciones de 3 semanas para crear un conjunto de datos de conversaciones y los datos de la semana restante para crear el conjunto de datos de prueba. Un conjunto de datos de prueba debe contener un mínimo de 1,000 conversaciones, pero, como regla general, las métricas de evaluación serán más confiables con más conversaciones en el conjunto de datos de prueba. El formato del conjunto de datos de prueba es el mismo que el del conjunto de datos de conversación.

Para crear una evaluación del modelo nueva, llama al método CreateConversationModelEvaluation en un recurso ConversationModel. Este método devuelve una operación de larga duración. Puedes sondear la operación para verificar su estado, que devolverá uno de los siguientes valores: INITIALIZING, RUNNING, SUCCEEDED, CANCELLED o FAILED.

Campos obligatorios:

  • InputDataset: Es el conjunto de datos de prueba que se usará para probar el rendimiento del modelo.
  • allowlist_document: Es la lista de entidades permitidas asociada al modelo de Smart Reply que se probará.

Se devuelve un recurso ConversationModelEvaluation cuando se completa la operación de larga duración. Se incluyen dos métricas:

  • allowlist_coverage: Es el porcentaje de mensajes del agente en el conjunto de datos de prueba que están incluidos en la lista de entidades permitidas.
  • recall: Es el porcentaje de mensajes del agente en el conjunto de datos de prueba que se incluyen en la lista de entidades permitidas y aparecen en las 3 principales sugerencias que muestra el modelo de Respuesta inteligente.

Configura un perfil de conversación

Un perfil de conversación configura un conjunto de parámetros que controlan las sugerencias que se le hacen a un agente durante una conversación. En los siguientes pasos, se crea un objeto ConversationProfile con un objeto HumanAgentAssistantConfig. También puedes realizar estas acciones con la consola de Agent Assist si prefieres no llamar a la API directamente.

Crea un perfil de conversación

Para crear un perfil de conversación, llama al método create en el recurso ConversationProfile. Proporciona el ID de la base de conocimiento, el ID del documento, el ID del proyecto y el ID del modelo.

A continuación, se muestra un ejemplo de JSON:
{
  "displayName": "smart_compose_assist",
  "humanAgentAssistantConfig": {
    "humanAgentSuggestionConfig": {
      "featureConfigs": [
        {
          "suggestionFeature": {
            "type": "SMART_COMPOSE"
          },
          "queryConfig": {
            "documentQuerySource": {
              "documents": "projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents/DOCUMENT_ID"
            },
           "maxResults": "1"
          },
         "conversationModelConfig": {
           "model": "projects/PROJECT_ID/conversationModels/MODEL_ID"
         }
        }
      ]
    }
  }
}

La respuesta contiene el ID de tu nuevo perfil de conversación.

Cómo controlar conversaciones en el tiempo de ejecución

Cuando comienza un diálogo entre un usuario final y un agente humano, creas una conversación. Para ver sugerencias, también debes crear un participante usuario final y un participante agente humano, y agregarlos a la conversación. En las siguientes secciones, se te guiará a través de este proceso.

Cómo crear una conversación

Para crear una conversación, llama al método create en el recurso Conversation.

REST

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

  • PROJECT_ID: El ID del proyecto de Cloud
  • LOCATION_ID: Tu ID de ubicación
  • CONVERSATION_PROFILE_ID: Es el ID que recibiste cuando creaste el perfil de conversación.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations

Cuerpo JSON de la solicitud:

{
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

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/LOCATION_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z"
}

El segmento de ruta después de conversations contiene el nuevo ID de conversación.

Python

Para autenticarte en Agent Assist, 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.

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

Crea un participante de usuario final

Para ver sugerencias, debes agregar a la conversación tanto a los participantes del usuario final como a los del agente humano. Para crear un participante usuario final, llama al método create en el recurso Participant. Proporciona tu ID de conversación y END_USER para el campo role.

REST

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

  • PROJECT_ID: El ID del proyecto de Cloud
  • LOCATION_ID: Tu ID de ubicación
  • CONVERSATION_ID: Es el ID de tu conversación.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

Cuerpo JSON de la solicitud:

{
  "role": "END_USER",
}

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/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

El segmento de ruta después de participants contiene el nuevo ID del participante del usuario final.

Python

Para autenticarte en Agent Assist, 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.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Crea un participante de agente humano

Para crear un participante agente humano, llama al método create en el recurso Participant. Proporciona tu ID de conversación y HUMAN_AGENT para el campo role.

REST

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

  • PROJECT_ID: El ID del proyecto de Cloud
  • LOCATION_ID: Tu ID de ubicación
  • CONVERSATION_ID: Es el ID de tu conversación.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants

Cuerpo JSON de la solicitud:

{
  "role": "HUMAN_AGENT",
}

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/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "HUMAN_AGENT"
}

El segmento de ruta después de participants contiene el nuevo ID del participante del agente humano.

Python

Para autenticarte en Agent Assist, 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.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Agregar y analizar un mensaje del agente humano

Cada vez que uno de los participantes escribe un mensaje en la conversación, debes enviarlo a la API para que lo procese. Agent Assist basa sus sugerencias en el análisis de los mensajes de los agentes humanos y los usuarios finales. Para agregar y analizar un mensaje de agente humano para la conversación, llama al método analyzeContent en el recurso Participant. Proporciona el ID de la conversación y el ID del participante del agente humano.

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 GCP.
  • CONVERSATION_ID: Es el ID de tu conversación.
  • PARTICIPANT_ID: Es el ID del participante agente humano.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Cuerpo JSON de la solicitud:

{
  "textInput": {
    "text": "How may I help you?",
    "languageCode": "en-US"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "How may I help you?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "HUMAN_AGENT",
    "createTime": "2020-02-13T00:01:30.683Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "I am here to help you.",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "Sorry for the wait, we have a high volume of chats right now.",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "Thank you for contacting us!",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Para autenticarte en Agent Assist, 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.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Agrega y analiza un mensaje del usuario final

Para agregar y analizar un mensaje del usuario final para la conversación, llama al método analyzeContent en el recurso Participant. Proporciona el ID de conversación y el ID del participante usuario final.

La respuesta contiene un ID de mensaje. Las sugerencias se adquieren en el siguiente paso.

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 GCP.
  • CONVERSATION_ID: Es el ID de tu conversación.
  • PARTICIPANT_ID: Es el ID de participante del usuario final.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Cuerpo JSON de la solicitud:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Para autenticarte en Agent Assist, 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.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Obtén una sugerencia (opcional)

Puedes desactivar las sugerencias en cualquier momento. De forma opcional, puedes especificar un ID de mensaje para recibir sugerencias basadas en ese mensaje. Si no se configura este campo, las sugerencias se basarán de forma predeterminada en el mensaje más reciente de cualquiera de los participantes. Para obtener sugerencias, llama al método suggestSmartReplies en el recurso Suggestion. Proporciona el ID de la conversación, el ID del participante del agente humano y el ID de un mensaje de cualquiera de los participantes (opcional).

La respuesta contiene sugerencias de Respuesta inteligente para el agente humano.

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 GCP.
  • CONVERSATION_ID: Es el ID de tu conversación.
  • PARTICIPANT_ID: Es el ID de participante del usuario final.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Cuerpo JSON de la solicitud:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

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

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "I want to reserve a room.",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestSmartRepliesResponse": {
      "smartReplyAnswers": [
          {
            "reply": "Where would you like to reserve a room?",
            "confidence": 0.5,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_1"
          },
          {
            "reply": "What type of rooms would you like to reserve?",
            "confidence": 0.3,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_2"
          },
          {
            "reply": "How long do you want to stay?",
            "confidence": 0.1,
            "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID_3"
          }
        ]
      }
    }
  ]
}

Python

Para autenticarte en Agent Assist, 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.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Completa la conversación

Para completar la conversación, llama al método complete en el recurso conversations. Proporciona el ID de conversación.

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 GCP.
  • CONVERSATION_ID: Es el ID que recibiste cuando creaste la conversación.

Método HTTP y URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete

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/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}

Python

Para autenticarte en Agent Assist, 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.

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation