- Introducción
- Configuración de su cuenta
- Equilibrio
- Clústeres
- Deriva del concepto
- Cobertura
- Conjuntos de datos
- Campos generales
- Etiquetas (predicciones, niveles de confianza, jerarquía de etiquetas y sentimiento de etiqueta)
- Modelos
- Transmisiones
- Clasificación del modelo
- Proyectos
- Precisión
- Recordar
- Mensajes anotados y no anotados
- Campos extraídos
- Fuentes
- Taxonomías
- Formación
- Predicciones positivas y negativas verdaderas y falsas
- Validación
- Mensajes
- Control y administración de acceso
- Gestionar fuentes y conjuntos de datos
- Comprender la estructura de datos y los permisos
- Crear o eliminar un origen de datos en la GUI
- Preparando datos para cargar archivos .CSV
- Cargar un archivo CSV en un origen
- Crear un conjunto de datos
- Fuentes y conjuntos de datos multilingües
- Habilitar sentimiento en un conjunto de datos
- Modificar la configuración del conjunto de datos
- Eliminar un mensaje
- Eliminar un conjunto de datos
- Exportar un conjunto de datos
- Utilizar integraciones de Exchange
- Entrenamiento y mantenimiento de modelos
- Comprender las etiquetas, los campos generales y los metadatos
- Jerarquía de etiquetas y mejores prácticas
- Comparar casos de uso de análisis y automatización
- Convertir tus objetivos en etiquetas
- Descripción general del proceso de entrenamiento del modelo
- Anotación generativa
- Estado de Dastaset
- Entrenamiento de modelos y mejores prácticas de anotación
- Entrenamiento con análisis de sentimiento de etiqueta habilitado
- Comprender los requisitos de datos
- Entrenamiento
- Introducción a Refinar
- Explicación de la precisión y la recuperación
- Precisión y recuperación
- Cómo funciona la validación
- Comprender y mejorar el rendimiento del modelo
- Razones para etiquetar una precisión media baja
- Entrenamiento utilizando la etiqueta Comprobar y la etiqueta Perdida
- Entrenamiento mediante la etiqueta de aprendizaje (refinar)
- Entrenamiento mediante Buscar (Refinar)
- Comprender y aumentar la cobertura
- Mejorar el equilibrio y utilizar Reequilibrar
- Cuándo dejar de entrenar tu modelo
- Uso de campos generales
- Extracción generativa
- Uso de análisis y supervisión
- Automations and Communications Mining™
- Desarrollador
- Uso de la API
- Tutorial de la API
- Fuentes
- Conjuntos de datos
- Comentarios
- Archivos adjuntos
- Predictions
- Crear una transmisión
- Actualizar una transmisión
- Obtener una transmisión por nombre
- Obtener todas las transmisiones
- Eliminar una transmisión
- Obtener resultados de la transmisión
- Obtener comentarios de una transmisión (heredado)
- Avanzar una transmisión
- Restablecer una transmisión
- Etiquetar una excepción
- Desetiquetar una excepción
- Eventos de auditoría
- Obtener todos los usuarios
- Cargar datos
- Descargando datos
- Integración de Exchange con el usuario del servicio de Azure
- Integración de Exchange con la autenticación de aplicaciones de Azure
- Integración de Exchange con Azure Application Authentication y Graph
- Guía de migración: servicios web de Exchange (EWS) a la API de Microsoft Graph
- Obtener datos para Tableau con Python
- Integración de Elasticsearch
- Extracción de campos general
- Integración de Exchange autohospedado
- Marco de automatización de UiPath®
- Actividades oficiales de UiPath®
- Cómo aprenden las máquinas a entender palabras: una guía para las incrustaciones en PNL
- Aprendizaje basado en solicitudes con Transformers
- Efficient Transformers II: destilación de conocimientos y ajuste
- Transformadores eficientes I: mecanismos de atención
- Modelado de intenciones jerárquico profundo no supervisado: obtener valor sin datos de entrenamiento
- Corregir el sesgo de anotación con Communications Mining™
- Aprendizaje activo: mejores modelos ML en menos tiempo
- Todo está en los números: evaluar el rendimiento del modelo con métricas
- Por qué es importante la validación del modelo
- Comparación de Communications Mining™ y Google AutoML para la inteligencia de datos conversacional
- Licencia
- Preguntas frecuentes y más

Guía del usuario de Communications Mining
Comentarios
Añadir o actualizar comentarios
/api/v1/sources/<project>/<source_name>/sync
Permisos necesarios: Editar mensajes.
Operación facturable Se le cobrará 1 AI Unit o 0,2 Platform Units por comentario creado, o por comentario actualizado (en función de su ID único) si se modificó su texto.
- Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "comments": [ { "id": "0123456789abcdef", "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, "from": "[email protected]", "sent_at": "2011-12-11T11:05:10.000000+00:00", "subject": { "text": "Today'"'"'s figures" }, "to": [ "[email protected]" ] } ], "timestamp": "2011-12-11T11:05:10.000000+00:00", "user_properties": { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org" } }, { "id": "abcdef0123456789", "messages": [ { "body": { "text": "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice" }, "from": "[email protected]", "sent_at": "2011-12-11T11:18:43.000000+00:00", "subject": { "text": "Today'"'"'s figures" }, "to": [ "[email protected]" ] } ], "timestamp": "2011-12-11T11:18:43.000000+00:00", "user_properties": { "string:Recipient Domain": "organisation.org", "string:Sender Domain": "company.com" } } ] }'curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "comments": [ { "id": "0123456789abcdef", "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, "from": "[email protected]", "sent_at": "2011-12-11T11:05:10.000000+00:00", "subject": { "text": "Today'"'"'s figures" }, "to": [ "[email protected]" ] } ], "timestamp": "2011-12-11T11:05:10.000000+00:00", "user_properties": { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org" } }, { "id": "abcdef0123456789", "messages": [ { "body": { "text": "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice" }, "from": "[email protected]", "sent_at": "2011-12-11T11:18:43.000000+00:00", "subject": { "text": "Today'"'"'s figures" }, "to": [ "[email protected]" ] } ], "timestamp": "2011-12-11T11:18:43.000000+00:00", "user_properties": { "string:Recipient Domain": "organisation.org", "string:Sender Domain": "company.com" } } ] }' - Nodo
const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { comments: [ { id: "0123456789abcdef", messages: [ { body: { text: "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob", }, from: "[email protected]", sent_at: "2011-12-11T11:05:10.000000+00:00", subject: { text: "Today's figures" }, to: ["[email protected]"], }, ], timestamp: "2011-12-11T11:05:10.000000+00:00", user_properties: { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org", }, }, { id: "abcdef0123456789", messages: [ { body: { text: "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice", }, from: "[email protected]", sent_at: "2011-12-11T11:18:43.000000+00:00", subject: { text: "Today's figures" }, to: ["[email protected]"], }, ], timestamp: "2011-12-11T11:18:43.000000+00:00", user_properties: { "string:Recipient Domain": "organisation.org", "string:Sender Domain": "company.com", }, }, ], }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { comments: [ { id: "0123456789abcdef", messages: [ { body: { text: "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob", }, from: "[email protected]", sent_at: "2011-12-11T11:05:10.000000+00:00", subject: { text: "Today's figures" }, to: ["[email protected]"], }, ], timestamp: "2011-12-11T11:05:10.000000+00:00", user_properties: { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org", }, }, { id: "abcdef0123456789", messages: [ { body: { text: "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice", }, from: "[email protected]", sent_at: "2011-12-11T11:18:43.000000+00:00", subject: { text: "Today's figures" }, to: ["[email protected]"], }, ], timestamp: "2011-12-11T11:18:43.000000+00:00", user_properties: { "string:Recipient Domain": "organisation.org", "string:Sender Domain": "company.com", }, }, ], }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "comments": [ { "id": "0123456789abcdef", "timestamp": "2011-12-11T11:05:10.000000+00:00", "messages": [ { "from": "[email protected]", "to": ["[email protected]"], "sent_at": "2011-12-11T11:05:10.000000+00:00", "subject": {"text": "Today's figures"}, "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, } ], "user_properties": { "string:Sender Domain": "organisation.org", "string:Recipient Domain": "company.com", }, }, { "id": "abcdef0123456789", "timestamp": "2011-12-11T11:18:43.000000+00:00", "messages": [ { "from": "[email protected]", "to": ["[email protected]"], "sent_at": "2011-12-11T11:18:43.000000+00:00", "subject": {"text": "Today's figures"}, "body": { "text": "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice" }, } ], "user_properties": { "string:Sender Domain": "company.com", "string:Recipient Domain": "organisation.org", }, }, ] }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "comments": [ { "id": "0123456789abcdef", "timestamp": "2011-12-11T11:05:10.000000+00:00", "messages": [ { "from": "[email protected]", "to": ["[email protected]"], "sent_at": "2011-12-11T11:05:10.000000+00:00", "subject": {"text": "Today's figures"}, "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, } ], "user_properties": { "string:Sender Domain": "organisation.org", "string:Recipient Domain": "company.com", }, }, { "id": "abcdef0123456789", "timestamp": "2011-12-11T11:18:43.000000+00:00", "messages": [ { "from": "[email protected]", "to": ["[email protected]"], "sent_at": "2011-12-11T11:18:43.000000+00:00", "subject": {"text": "Today's figures"}, "body": { "text": "Hi Bob,\n\nI think these are the wrong numbers - could you check?\n\nThanks again,\nAlice" }, } ], "user_properties": { "string:Sender Domain": "company.com", "string:Recipient Domain": "organisation.org", }, }, ] }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Respuesta
{ "new": 2, "status": "ok", "unchanged": 0, "updated": 0 }{ "new": 2, "status": "ok", "unchanged": 0, "updated": 0 }
El ID de un comentario lo identifica de forma única dentro de un. Si el ID de comentario proporcionado no existe en el origen, se crea un nuevo comentario. De lo contrario, se actualiza un comentario existente.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
comments | array<Comment> | Sí | Un lote de 16 384 comentarios como máximo, en el formato descrito en la Referencia de comentarios. Los lotes más grandes son más rápidos (por comentario) que los más pequeños. |
CAMPOS GENERALES ASIGNADOS
Los campos generales asignados se conservarán, a menos que el texto cambie significativamente. Las etiquetas asignadas nunca se descartan.
SOLICITUDES GRANDES
Para solicitudes grandes, este punto final puede tardar más en responder. Debe aumentar el tiempo de espera de su cliente.
Añadir o actualizar comentarios de correos electrónicos sin procesar
/api/v1/sources/<project>/<source_name>/sync-raw-emails
Permisos necesarios: editar mensajes
OPERACIÓN FACTURABLE Se le cobrará 1 AI Unit o 0,2 Platform Units por comentario creado, o por comentario actualizado (según el ID de mensaje del correo electrónico) si se modificó su texto.
- Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "raw_email": { "body": { "plain": "Hi Bob,\n\nCould you send me today'"'"'s figures?\n\nThanks,\nAlice" }, "headers": { "parsed": { "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "From": "[email protected]", "Message-ID": "[email protected]", "References": "<[email protected]> <[email protected]>", "Subject": "Figures Request", "To": "[email protected]" } } }, "user_properties": { "number:Deal Value": 12000, "string:City": "London" } } ], "include_comments": true, "transform_tag": "name.0.ABCD1234" }'curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails' \ -H "Authorization: Bearer $REINFER_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [ { "raw_email": { "body": { "plain": "Hi Bob,\n\nCould you send me today'"'"'s figures?\n\nThanks,\nAlice" }, "headers": { "parsed": { "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "From": "[email protected]", "Message-ID": "[email protected]", "References": "<[email protected]> <[email protected]>", "Subject": "Figures Request", "To": "[email protected]" } } }, "user_properties": { "number:Deal Value": 12000, "string:City": "London" } } ], "include_comments": true, "transform_tag": "name.0.ABCD1234" }' - Nodo
const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { raw_email: { body: { plain: "Hi Bob,\n\nCould you send me today's figures?\n\nThanks,\nAlice", }, headers: { parsed: { Date: "Thu, 09 Jan 2020 16:34:45 +0000", From: "[email protected]", "Message-ID": "[email protected]", References: "<[email protected]> <[email protected]>", Subject: "Figures Request", To: "[email protected]", }, }, }, user_properties: { "number:Deal Value": 12000, "string:City": "London", }, }, ], include_messages: true, transform_tag: "name.0.ABCD1234", }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.post( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, json: true, body: { documents: [ { raw_email: { body: { plain: "Hi Bob,\n\nCould you send me today's figures?\n\nThanks,\nAlice", }, headers: { parsed: { Date: "Thu, 09 Jan 2020 16:34:45 +0000", From: "[email protected]", "Message-ID": "[email protected]", References: "<[email protected]> <[email protected]>", Subject: "Figures Request", To: "[email protected]", }, }, }, user_properties: { "number:Deal Value": 12000, "string:City": "London", }, }, ], include_messages: true, transform_tag: "name.0.ABCD1234", }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "transform_tag": "name.0.ABCD1234", "documents": [ { "raw_email": { "headers": { "parsed": { "Message-ID": "[email protected]", "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "Subject": "Figures Request", "From": "[email protected]", "To": "[email protected]", "References": "<[email protected]> <[email protected]>", } }, "body": { "plain": "Hi Bob,\n\nCould you send me today's figures?\n\nThanks,\nAlice" }, }, "user_properties": { "string:City": "London", "number:Deal Value": 12000, }, } ], "include_comments": True, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.post( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/sync-raw-emails", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, json={ "transform_tag": "name.0.ABCD1234", "documents": [ { "raw_email": { "headers": { "parsed": { "Message-ID": "[email protected]", "Date": "Thu, 09 Jan 2020 16:34:45 +0000", "Subject": "Figures Request", "From": "[email protected]", "To": "[email protected]", "References": "<[email protected]> <[email protected]>", } }, "body": { "plain": "Hi Bob,\n\nCould you send me today's figures?\n\nThanks,\nAlice" }, }, "user_properties": { "string:City": "London", "number:Deal Value": 12000, }, } ], "include_comments": True, }, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Respuesta
{ "comments": [ { "attachments": [], "id": "61626364656640636f6d70616e792e636f6d", "messages": [ { "body": { "text": "Hi Bob,\n\nCould you send me today's figures?" }, "from": "[email protected]", "sent_at": "2020-01-09T16:34:45Z", "signature": { "text": "Thanks,\nAlice" }, "subject": { "text": "Figures Request" }, "to": ["[email protected]"] } ], "source_id": "c1fb849b855841de", "text_format": "plain", "thread_id": "3c303132333440636f6d70616e792e636f6d3e", "timestamp": "2020-01-09T16:34:45Z", "uid": "c1fb849b855841de.61626364656640636f6d70616e792e636f6d", "user_properties": { "number:Deal Value": 12000, "number:Participant Count": 2, "number:Position in Thread": 3, "number:Recipient Count": 1, "string:City": "London", "string:Has Signature": "Yes", "string:Message ID": "[email protected]", "string:Sender": "[email protected]", "string:Sender Domain": "company.com", "string:Thread": "<[email protected]>" } } ], "new": 1, "status": "ok", "unchanged": 0, "updated": 0 }{ "comments": [ { "attachments": [], "id": "61626364656640636f6d70616e792e636f6d", "messages": [ { "body": { "text": "Hi Bob,\n\nCould you send me today's figures?" }, "from": "[email protected]", "sent_at": "2020-01-09T16:34:45Z", "signature": { "text": "Thanks,\nAlice" }, "subject": { "text": "Figures Request" }, "to": ["[email protected]"] } ], "source_id": "c1fb849b855841de", "text_format": "plain", "thread_id": "3c303132333440636f6d70616e792e636f6d3e", "timestamp": "2020-01-09T16:34:45Z", "uid": "c1fb849b855841de.61626364656640636f6d70616e792e636f6d", "user_properties": { "number:Deal Value": 12000, "number:Participant Count": 2, "number:Position in Thread": 3, "number:Recipient Count": 1, "string:City": "London", "string:Has Signature": "Yes", "string:Message ID": "[email protected]", "string:Sender": "[email protected]", "string:Sender Domain": "company.com", "string:Thread": "<[email protected]>" } } ], "new": 1, "status": "ok", "unchanged": 0, "updated": 0 }
Cada correo electrónico sin procesar se convertirá en un comentario de Communications Mining™. Communications Mining generará el ID del comentario en función del encabezado "Message-ID" del correo electrónico. Si no existe un comentario con este ID de comentario en el origen, se creará un nuevo comentario. De lo contrario, se actualizará un comentario existente.
Al convertir un correo electrónico sin formato en un comentario, Communications Mining limpiará el cuerpo del correo electrónico y generará metadatos a partir de los encabezados de correo electrónico. Puedes establecer include_comments en true para incluir los comentarios generados en la respuesta. Los comentarios se devolverán en el formato descrito en la Referencia de comentarios.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
transform_tag | String | Sí | Una etiqueta que identifica la integración de correo electrónico que envía los datos. Debería haber recibido esta etiqueta durante la configuración de la integración. |
documents | array<Document> | Sí | Un lote de 16 384 documentos como máximo en el formato descrito en la siguiente tabla. Los lotes más grandes son más rápidos (por documento) que los más pequeños. |
include_comments | Booleano | No | Si se establece en true, los comentarios analizados de los correos electrónicos se devolverán en el cuerpo de la respuesta. |
override_user_properties | array<string> | No | Las propiedades de usuario proporcionadas en documents anularán las propiedades de usuario generadas automáticamente si sus nombres aparecen en esta lista. Los nombres de propiedad de usuario en esta lista deben especificarse sin el prefijo de tipo, por ejemplo, como My Property y no string:My Property. |
Donde Document tiene el siguiente formato:
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
raw_email | RawEmail | Sí | Datos de correo electrónico, en el formato descrito en la Referencia de comentarios . |
comment_id | String | No | Identifica de forma única un comentario. Si no se proporciona un ID de comentario, Communications Mining™ generará el ID de comentario a partir del ID del mensaje del correo electrónico. El formato se describe en la Referencia de comentarios . |
user_properties | map<string, string | number> | No | Cualquier metadato definido por el usuario que se aplique al comentario. El formato se describe en la Referencia de comentarios.
|
CAMPOS GENERALES ASIGNADOS Communications Mining generará el contenido de los "mensajes" del comentario a partir del cuerpo del correo electrónico sin formato y un subconjunto de los encabezados del correo electrónico sin formato, teniendo en cuenta la etiqueta de transformación especificada. Los campos generales asignados se conservarán, a menos que el texto cambie significativamente. Las etiquetas asignadas nunca se descartan.
SOLICITUDES GRANDES Para solicitudes grandes, este punto final puede tardar más en responder. Debe aumentar el tiempo de espera de su cliente.
Eliminar comentarios

/api/v1/sources/<project>/<source_name>/comments?id=<comment_id0>[&id=<comment_id1>...]
Permisos necesarios: editar mensajes
- Bash
curl -X DELETE 'https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789' \ -H "Authorization: Bearer $REINFER_TOKEN"curl -X DELETE 'https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789' \ -H "Authorization: Bearer $REINFER_TOKEN" - Nodo
const request = require("request"); request.delete( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.delete( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.delete( "https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.delete( "https://<my_api_endpoint>/api/v1/sources/<project>/<source_name>/comments?id=abcdef0123456789", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Respuesta
{ "status": "ok" }{ "status": "ok" }
Los comentarios individuales pueden eliminarse de un origen, utilizando el ID proporcionado cuando se añadió el comentario .
Todos los datos asociados con este comentario se eliminarán de forma permanente.
Obtener un comentario por ID
/api/v1/sources/<project>/<source_name>/comments/<comment_id>
Permisos necesarios: ver orígenes
- Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef' \ -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef' \ -H "Authorization: Bearer $REINFER_TOKEN" - Nodo
const request = require("request"); request.get( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.get( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.get( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.get( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/comments/0123456789abcdef", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Respuesta
{ "comment": { "context": "1596721237668", "created_at": "2020-08-06T13:20:28.531000Z", "id": "0123456789abcdef", "last_modified": "2020-08-06T13:40:37.668000Z", "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, "from": "[email protected]", "sent_at": "2011-12-11T11:05:10Z", "subject": { "text": "Today's figures" }, "to": ["[email protected]"] } ], "source_id": "47194279497e141e", "text_format": "plain", "timestamp": "2011-12-11T11:05:10Z", "uid": "47194279497e141e.0123456789abcdef", "user_properties": { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org" } }, "status": "ok" }{ "comment": { "context": "1596721237668", "created_at": "2020-08-06T13:20:28.531000Z", "id": "0123456789abcdef", "last_modified": "2020-08-06T13:40:37.668000Z", "messages": [ { "body": { "text": "Alice,\n\nHere are the figures for today.\n\nRegards,\nBob" }, "from": "[email protected]", "sent_at": "2011-12-11T11:05:10Z", "subject": { "text": "Today's figures" }, "to": ["[email protected]"] } ], "source_id": "47194279497e141e", "text_format": "plain", "timestamp": "2011-12-11T11:05:10Z", "uid": "47194279497e141e.0123456789abcdef", "user_properties": { "string:Recipient Domain": "company.com", "string:Sender Domain": "organisation.org" } }, "status": "ok" }
El comentario se devolverá en el formato descrito en la Referencia de comentarios.
Obtener comentarios por ID de hilo

/api/v1/sources/<project>/<source_name>/threads?id=<thread_id0>[&id=<thread_id1>...]
Permisos necesarios: ver orígenes
- Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162' \ -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162' \ -H "Authorization: Bearer $REINFER_TOKEN" - Nodo
const request = require("request"); request.get( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } );const request = require("request"); request.get( { url: "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162", headers: { Authorization: "Bearer " + process.env.REINFER_TOKEN, }, }, function (error, response, json) { // digest response console.log(JSON.stringify(json, null, 2)); } ); - Python
import json import os import requests response = requests.get( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True))import json import os import requests response = requests.get( "https://<my_api_endpoint>/api/v1/sources/<project>/<source>/threads?id=185521538102&id=81745162", headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]}, ) print(json.dumps(response.json(), indent=2, sort_keys=True)) - Respuesta
{ "status": "ok", "threads": [ { "messages": ["4321dcba.1234", "4321dcba.2345", "4321dcba.3456"], "thread_id": "185521538102" }, { "messages": [], "thread_id": "81745162" } ] }{ "status": "ok", "threads": [ { "messages": ["4321dcba.1234", "4321dcba.2345", "4321dcba.3456"], "thread_id": "185521538102" }, { "messages": [], "thread_id": "81745162" } ] }
Para cada ID de hilo especificado, la respuesta contendrá una lista de UID de comentarios (en el formato de source_id.comment_id) que pertenecen a ese hilo.
No obtendrás un error si proporcionas un ID de hilo que no existe. En su lugar, la lista de comentarios correspondiente en la respuesta estará vacía.