有一些朋友問我teams是否支持將其他平臺/系統里的聊天記錄遷移某個channel里,答案是肯定的,teams團隊在去年年中的時候就提供了這個功能。這個功能是通過graph api來完成的,我們今天就來看看如何遷移聊天記錄到teams里。
首先,我們需要確保我們的app有了一個teams的權限:Teamwork.Migrate.All
,然后確保下面調用的api都是在beta版本下。
- 創建一個team
需要注意的是這個team的creation mode是一個特殊的值:migration
。如下:
POST https://graph.microsoft.com/beta/teamsRequest body:
{"@microsoft.graph.teamCreationMode": "migration","template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')","displayName": "Tony test team",...
}
- 創建一個channel
等上面的team創建完成后,我們再創建一個channel。它同樣creation mode是一個特殊的值:migration
。如下:
POST https://graph.microsoft.com/beta/teams/{team-id}/channelsRequest body:
{"@microsoft.graph.channelCreationMode": "migration","displayName": "Test channel","description": "test purpose only","membershipType": "standard",...
}
- 一條條的導入聊天記錄
當一條消息是純文本的時候,使用如下格式:
POST https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/messagesRequest body:
{"createdDateTime":"2019-02-04T19:58:15.511Z","from":{"user":{"id": "user id","displayName": "Thomas","userIdentityType": "aadUser"}},"body":{"contentType": "html","content": "How is it going"}
}
如果這條消息含有圖片的話,我們可以把圖片內嵌到這條消息里:
POST https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/messagesRequest body:
{"body": {"contentType": "html","content": "<img height=\"160\" src=\"../hostedContents/1/$value\" width=\"200\" style=\"vertical-align:bottom; width:176px; height:250px\">"},"hostedContents":[{"@microsoft.graph.temporaryId": "1","contentBytes": "iVBORw0KGgoA.........","contentType": "image/png"}]
}
- 當我們完成了聊天消息的導入后,我們就需要把channel和team的狀態改成正常的狀態,這樣這個team和channel就可以開始正常的使用了
修改team的狀態,結束遷移。
POST https://graph.microsoft.com/beta/teams/{team-id}/completeMigration
POST https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/completeMigration
額外的一些工作:需要往我們剛才創建的team里增加用戶,這樣這個用戶就可以開始使用這個team。這個也可以通過graph api來實現:
POST https://graph.microsoft.com/beta/teams/{team-id}/membersRequest body:
{"@odata.type": "#microsoft.graph.aadUserConversationMember",...
}