Compartir a través de


Descargar transcripciones de Dynamics 365 Contact Center de forma masiva

Las transcripciones de Dynamics 365 Contact Center se almacenan en formato codificado en base64 en la tabla de anotaciones de Microsoft Dataverse. Los archivos adjuntos se almacenan como registros independientes en la tabla de anotaciones. Si una conversación tiene dos archivos intercambiados entre el agente y el cliente, se crean un total de tres registros relacionados con esta conversación. Cualquier conversación siempre tiene n+1 registros almacenados para ella en la tabla de anotaciones, donde n es el número de archivos adjuntos de la conversación. Los archivos adjuntos también se codifican en base64 antes de guardarse.

La opción de descargar transcripciones de forma masiva no está disponible de forma predeterminada. Puede usar las siguientes solicitudes de API web para recuperar todas las transcripciones y archivos adjuntos intercambiados en el último mes.

La siguiente solicitud de API web recupera todas las transcripciones textuales:

GET [Organization URI]/api/data/v9.1/annotations?$filter=objecttypecode eq 'msdyn_transcript'
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

La siguiente solicitud de API web recupera todas las anotaciones de archivos adjuntos:

GET [Organization URI]/api/data/v9.1/annotations?$filter=objecttypecode eq 'msdyn_ocliveworkitem'
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

El documentBody atributo de la respuesta obtenida de cada una de las solicitudes de la API web contiene la transcripción o el archivo adjunto codificado en base64.

Puede llamar a las API mediante código de C# y, a continuación, iterar sobre cada uno de los registros devueltos, acceder al documentBody atributo y procesarlo para obtener las transcripciones completas.

Se requiere al menos un mensaje enviado por un cliente para generar una transcripción.

Estructura de la transcripción JSON

Las transcripciones que ves en el enlace pueden contener diferentes tipos de mensajes:

  • Mensajes de control
  • Mensajes del sistema
  • Mensajes de texto (por ejemplo, Hola, Hola y Cómo estás)
  • Metadatos de archivos adjuntos

En cada uno de estos tipos de mensajes, puede ver un createdDateTime campo que indica la hora exacta en la que se publicó o creó este mensaje.

Un mensaje de control no tiene valor visual e indica un evento como que el agente se unió o abandonó la conversación. Por lo general, tiene una bandera llamada isControlMessage establecida en true.

{
    "content": "<addmember><eventtime>1589863236124</eventtime><initiator>28:bc81db89-c4d7-4763-91fe-086fcc2e6daf</initiator><rosterVersion>1589863235629</rosterVersion><lastRosterVersion>1589801089959</lastRosterVersion><target>8:orgid:04fd615d-586d-4866-9791-b24c5f7a9e78</target></addmember>",
    "contentType": "text",
    "createdDateTime": "2020-05-19T04:40:36.124+00:00",
    "likes": [],
    "attachments": [],
    "id": "1589863236124",
    "created": "2020-05-19T04:40:36.124Z",
    "culture": null,
    "deleted": null,
    "important": null,
    "modified": null,
    "modifiedDateTime": null,
    "isControlMessage": true,
    "from": null
},

Un mensaje del sistema es un tipo especial de mensaje que se muestra al cliente con respecto a eventos durante las conversaciones. Por ejemplo, cuando un agente se une, cuando un agente se desconecta y cuando se une un nuevo agente.

{
	"content": "Alan Steiner has left the conversation.",
	"contentType": "text",
	"createdDateTime": "2020-05-19T04:43:12.976+00:00",
	"from": {
		"application": {
			"displayName": "DynamicsBot",
			"id": "bc81db89-c4d7-4763-91fe-086fcc2e6daf"
		},
		"user": null,
		"phone": null,
		"guest": null,
		"encrypted": null,
		"onPremises": null,
		"azureApplicationInstance": null,
		"applicationInstance": null,
		"device": null
	},
	"likes": [],
	"attachments": [],
	"id": "1589863392976",
	"created": "2020-05-19T04:43:12.976Z",
	"culture": null,
	"deleted": null,
	"important": null,
	"modified": null,
	"modifiedDateTime": null,
	"tags": "system"
},

Los mensajes de texto intercambiados durante el chat entre el agente y el cliente aparecen de la siguiente manera:

{
	"content": "I am using product A",
	"contentType": "text",
	"createdDateTime": "2020-05-19T04:43:03.979+00:00",
	"from": {
		"user": {
			"displayName": "Customer",
			"id": "04fd615d-586d-4866-9791-b24c5f7a9e78"
		},
		"phone": null,
		"guest": null,
		"encrypted": null,
		"onPremises": null,
		"azureApplicationInstance": null,
		"applicationInstance": null,
		"application": null,
		"device": null
	},
	"likes": [],
	"attachments": [],
	"id": "1589863384036",
	"created": "2020-05-19T04:43:03.979Z",
	"culture": null,
	"deleted": null,
	"important": null,
	"modified": null,
	"modifiedDateTime": null,
	"tags": "private,parentID-5493180821148088016",
	"deliveryMode": "unbridged"
},

Como se ve en el código anterior, los mensajes enviados por el cliente tienen un nombre para mostrar de "Cliente" si es un cliente no identificado, o su nombre real si son conocidos por Dynamics 365 Contact Center.

Para los mensajes que el agente envía a un cliente, hay etiquetas que denotan que es un mensaje "público". Los mensajes marcados con "privado" en las etiquetas son mensajes intercambiados entre dos agentes y no son visibles para el cliente.

{
	"content": "Great! Just give me a moment. \\nWhich product are you using currently?",
	"contentType": "text",
	"createdDateTime": "2020-05-19T04:42:44.202+00:00",
	"from": {
		"user": {
			"displayName": "Alan Steiner",
			"id": "04fd615d-586d-4866-9791-b24c5f7a9e78"
		},
		"phone": null,
		"guest": null,
		"encrypted": null,
		"onPremises": null,
		"azureApplicationInstance": null,
		"applicationInstance": null,
		"application": null,
		"device": null
	},
	"likes": [],
	"attachments": [],
	"id": "1589863364220",
	"created": "2020-05-19T04:42:44.202Z",
	"culture": null,
	"deleted": null,
	"important": null,
	"modified": null,
	"modifiedDateTime": null,
	"tags": "public,messageId-1589863364202,RTT-C1",
	"deliveryMode": "unbridged"
},

Un FileAttachment mensaje tiene un aspecto similar al siguiente fragmento de código en el JSON:

{
    "content": "",
    "contentType": "text",
    "createdDateTime": "2020-05-06T21:31:37.316+00:00",
    "from": {
      "application": {
        "displayName": "Customer",
        "id": "6cc05310-05d9-4ce5-8fc0-d606c478f896"
      },
      "user": null,
      "phone": null,
      "guest": null,
      "encrypted": null,
      "onPremises": null,
      "azureApplicationInstance": null,
      "applicationInstance": null,
      "device": null
    },
    "likes": [
    ],
    "attachments": [
      {
        "id": "0-wus-d3-37f4fa3cd63945c526799ae5b4e009f5",
        "index": 0,
        "fileType": "docx",
        "name": "mr Hand goes to the moon, By contoso.docx",
        "sourceUrl": "https://us-api.asm.contoso.com/v1/objects/0-wus-d3-37f4fa3cd63945c526799ae5b4e009f5/",
        "annotationid": "cfb551a8-ef4f-431a-871f-9b027ff940e3"
      }
    ],
    "id": "1588800697316",
    "created": "2020-05-06T21:31:37.316Z",
    "culture": null,
    "deleted": null,
    "important": null,
    "modified": null,
    "modifiedDateTime": null,
    "deliveryMode": "bridged"
  },

Por lo general, tiene metadatos relacionados con los archivos adjuntos intercambiados durante el chat. Es annotationid la clave del registro codificado en base64 en la tabla Anotaciones para ese archivo adjunto. Puede recuperar el registro mediante la siguiente solicitud de API web. La solicitud de API web le proporciona los datos adjuntos codificados en base64 que puede descodificar y usar de la manera que desee.

GET [Organization URI]/api/data/v9.1/annotations(<annotationid>)
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Dynamics 365 Contact Center para desarrolladores