Customer Service 用オムニチャネルのトランスクリプトを一括ダウンロード
Customer Service 用オムニチャネルのトランスクリプトは、base64 でエンコードされた形式で Microsoft Dataverse の注釈テーブルに保存されます。 添付ファイルは、注釈テーブルに個別のレコードとして保存されます。 会話でエージェントと顧客の間で 2 つのファイルが交換された場合、この会話に関連する合計 3 つのレコードが作成されます。 すべての会話には、注釈テーブルに常に n + 1 レコードが保存されます。ここで、n は会話内の添付ファイルの数を表わします。 添付ファイルも、保存される前に base64 でエンコードされます。
トランスクリプトをまとめてダウンロードするオプションを使用するには設定が必要となります。 次の WebAPI リクエストを使用すると、過去 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
属性にアクセスし、それを処理してトランスクリプト全体を取得することができます。
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"
},
前述のコードに見られるように、顧客から送信されたメッセージは、詳細不明の顧客の場合は「お客様」という表示名で表わされ、Customer Service 用オムニチャネルで判明している顧客の場合は実際の名前で表示されます。
エージェントが顧客に送信するメッセージには、エージェントが送信した「公開」メッセージであることを示すタグがあります。 タグに "プライベート" が含まれている場合、それは 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 でエンコードされたレコードのキーです。 次の WebAPI リクエストを使用して、レコードを取得できます。 Web API リクエストは、base64 でエンコードされた添付ファイルが提供されるため、これをデコードして使用することができます。
GET [Organization URI]/api/data/v9.1/annotations(<annotationid>)
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0