Dynamics 365 Contact Center のトランスクリプトは、Microsoft Dataverse の注釈テーブルに base64 でエンコードされた形式で格納されます。 添付ファイルは、アノテーションテーブルに個別のレコードとして格納されます。 会話にエージェントと顧客の間で交換される 2 つのファイルがある場合、この会話に関連する合計 3 つのレコードが作成されます。 どの会話にも、常に n+1 のレコードが注釈テーブルに格納されています (n は会話内の添付ファイルの数です)。 添付ファイルも、保存される前に base64 でエンコードされます。
トランスクリプトを一括でダウンロードするオプションは、すぐには利用できません。 次の Web API 要求を使用して、過去 1 か月間に交換されたすべてのトランスクリプトと添付ファイルを取得できます。
次の Web API 要求は、すべてのテキスト トランスクリプトを取得します。
GET [Organization URI]/api/data/v9.1/annotations?$filter=objecttypecode eq 'msdyn_transcript'
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
次の Web API 要求は、すべての添付ファイル注釈を取得します。
GET [Organization URI]/api/data/v9.1/annotations?$filter=objecttypecode eq 'msdyn_ocliveworkitem'
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
各 Web API 要求から取得された応答の documentBody 属性には、base64 でエンコードされたトランスクリプトまたは添付ファイルが含まれています。
C# コードを使用して API を呼び出し、返された各レコードを反復処理し、 documentBody 属性にアクセスして処理してトランスクリプト全体を取得できます。
トランスクリプトを生成するには、顧客から送信された少なくとも 1 つのメッセージが必要です。
JSON トランスクリプトの構造
リンクに表示されるトランスクリプトには、さまざまな種類のメッセージを含めることができます。
- コントロールメッセージ
- システム メッセージ
- テキスト メッセージ (例: こんにちは、こんにちは、お元気ですか)
- 添付ファイルのメタデータ
これらの各タイプのメッセージには、このメッセージが投稿または作成された正確な時刻を示す createdDateTime フィールドが表示されます。
コントロール メッセージには視覚的な価値がなく、エージェントが会話に参加または退出したなどのイベントを示します。 通常、isControlMessageに設定された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
},
システムメッセージは、会話中のイベントに関して顧客に表示される特別なタイプのメッセージです。 たとえば、エージェントが参加したとき、エージェントが切断されたとき、新しいエージェントが参加したときなどです。
{
"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"
},
エージェントと顧客間のチャット中に交換されるテキストメッセージは、次のように表示されます。
{
"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"
},
前のコードに示すように、顧客から送信されたメッセージの表示名は、身元不明の顧客の場合は "顧客" で、Dynamics 365 コンタクト センターに知られている場合は実際の名前になります。
エージェントが顧客に送信するメッセージには、「公開」メッセージであることを示すタグがあります。 タグに「プライベート」とマークされたメッセージは、2 人のエージェント間で交換されるメッセージであり、顧客には表示されません。
{
"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"
},
FileAttachment メッセージは、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"
},
通常、チャット中に交換される添付ファイルに関連するメタデータがあります。
annotationidは、その添付ファイルの注釈テーブル内の base64 でエンコードされたレコードのキーです。 次の Web API 要求を使用してレコードを取得できます。 Web API 要求は、デコードして必要な方法で使用できる base64 でエンコードされた添付ファイルを提供します。
GET [Organization URI]/api/data/v9.1/annotations(<annotationid>)
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0