Compartilhar via


Baixar transcrições do Dynamics 365 Contact Center em massa

As transcrições do Dynamics 365 Contact Center são armazenadas no formato codificado em base64 na tabela de anotações no Microsoft Dataverse. Os anexos são armazenados como registros separados na tabela de anotações. Se uma conversa tiver dois arquivos trocados entre o agente e o cliente, um total de três registros serão criados relacionados a essa conversa. Qualquer conversa sempre tem n+1 registros armazenados para ela na tabela de anotações, onde n é o número de anexos na conversa. Os anexos também são codificados em base64 antes de serem salvos.

A opção de baixar transcrições em massa não está disponível imediatamente. Você pode usar as solicitações de API Web a seguir para recuperar todas as transcrições e anexos trocados no último mês.

A solicitação de API Web a seguir recupera todas as transcrições textuais:

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

A seguinte solicitação de API Web recupera todas as anotações de anexo de arquivo:

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

O documentBody atributo na resposta obtida de cada uma das solicitações de API da Web contém a transcrição ou o anexo codificado em base64.

Você pode chamar as APIs usando o código C# e, em seguida, iterar em cada um dos registros retornados, acessar o documentBody atributo e processá-lo para obter todas as transcrições.

Pelo menos uma mensagem enviada por um cliente é necessária para gerar uma transcrição.

Estrutura da transcrição JSON

As transcrições que você vê no link podem conter diferentes tipos de mensagens:

  • Mensagens de controle
  • Mensagens do sistema
  • Mensagens de texto (por exemplo, Olá, Olá e Como você está)
  • Metadados de anexos de arquivo

Em cada um desses tipos de mensagens, você pode ver um createdDateTime campo que indica a hora exata em que essa mensagem foi postada ou criada.

Uma mensagem de controle não tem valor visual e indica um evento como agente entrou ou saiu da conversa. Geralmente tem um sinalizador chamado isControlMessage set to 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
},

Uma mensagem do sistema é um tipo especial de mensagem exibida ao cliente sobre eventos durante as conversas. Por exemplo, quando um agente ingressa, quando um agente se desconecta e quando um novo agente ingressa.

{
	"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"
},

As mensagens de texto trocadas durante o chat entre agente e cliente aparecem da seguinte forma:

{
	"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"
},

Conforme visto no código anterior, as mensagens enviadas pelo cliente têm um nome de exibição de "Cliente" se forem um cliente não identificado ou seu nome real se forem conhecidas pelo Dynamics 365 Contact Center.

Para mensagens que o agente envia a um cliente, há tags que indicam que é uma mensagem "pública". As mensagens marcadas com "privado" nas tags são mensagens trocadas entre dois agentes e não são visíveis para o 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"
},

Uma FileAttachment mensagem se parece com o seguinte snippet no 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"
  },

Geralmente possui metadados relacionados aos anexos trocados durante o bate-papo. A annotationid é a chave para o registro codificado em base64 na tabela Anotações para esse anexo de arquivo. Você pode recuperar o registro usando a solicitação de API Web a seguir. A solicitação da API Web fornece o anexo codificado em base64 que você pode decodificar e usar da maneira desejada.

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

Central de Atendimento do Dynamics 365 para desenvolvedores