æŒç¿ 4 ã§äœæããæŒç¿çšã¢ããªã±ãŒã·ã§ã³ãå€æŽã㊠Microsoft Teams ã®ãã£ãã«ã«ãã¡ã€ã«ãæçš¿ããæ©èœãå®è£ ããŸãã
ãTeams ãã£ãã«ããšæžããŠããŸããããã€ã¯ Teams èªäœã¯ã¹ãã¬ãŒãžãæã£ãŠããŸãããTeams ã®åããŒã ã«ã¯ SharePoint Online ã«ããŒã ãµã€ãããããããŒã å ã®åãã£ãã«ã«ã¯æ¢å®ã®ããŒã ãµã€ã ããã¥ã¡ã³ã ã©ã€ãã©ãªãäœæãããŸãã
ãã£ãŠãå®éã«ãã¡ã€ã«ãã¢ããããŒãããå 㯠Teams ã®ãã£ãã«ã«çŽã¥ãã SharePoint ã®ãµã€ãã«ãªããŸãã
ãªããTeams ã®ãã©ã€ããŒããã£ããã§ãããšãããããã¡ã€ã«ã¯ SharePoint ã§ã¯ãªããéä¿¡è ã® OneDrive for Business ã®ãã©ã«ãã«æ ŒçŽãããŸãã
Microsoft Teams ã®ã¹ãã¬ãŒãžé¢é£ã®æ å ±ã«ã€ããŠè©³ããç¥ãããå Žåã¯ã以äžã®ããã¥ã¡ã³ãã®å 容ããåç §ãã ããã
- Microsoft Teams ã®å¶éäºé ãšä»æ§ - ã¹ãã¬ãŒãž
- Microsoft Teams ãšã® SharePoint Online ãš OneDrive for Business ã®é£æº
ä»åããã¡ã€ã«ãã¢ããããŒãããå 㯠SharePoint ã®ãµã€ãã§ããã䜿çšãã Graph API ã¯æŒç¿ 4 ãšåã以äžã® API ã䜿çšããŸãã
ãã ãã䜿çšãããšã³ããã€ã³ãã¯ä»¥äžãšãªããSites.ReadWrite.All ã®ã¢ã¯ã»ã¹èš±å¯ãå¿ èŠã§ãã
PUT /groups/{group-id}/drive/items/{parent-id}:/{filename}:/content
Graph API ãä»ã㊠Microsoft Teams ã®ããŒã ããã£ãã«ã«ã¢ã¯ã»ã¹ããå Žåãå€ãã®å ŽåããŒã ããã£ãã«ã® ID ãåŒæ°ãšããŠæå®ããå¿ èŠããããŸãããã® ID 㯠Microsoft Teams ã®åããŒã ããã£ãã«ã®ãªã³ã¯ã«å«ãŸããŠãããã®ãããããããã«ã€ããŠã¯ API ãã³ãŒã«ããªããŠãåãåºãããšãã§ããŸãã
ããããªã³ã¯ã«å«ãŸããªã ID 㯠Graph API ã䜿çšããŠã¢ã€ãã ãåæããŠååŸããå¿ èŠããããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ããã¡ã€ã«ãæçš¿ãã察象ã®ããŒã ã®ãªã³ã¯ããã以éã®æŒç¿ã§äœ¿çšãã ID ãåãåºãããã¡ã€ã«ãæçš¿ãããã£ãã«ã«çŽã¥ãã SharePoint ãžã®ãã¹ãäœæããŸãã
ããŒã ã«å²ãæ¯ããããŠããŒã¯ãª ID ã§ãããAPIãšã³ããã€ã³ãã®æžåŒã«ãããgroup-idãååŸããŸãã
ãã® group-id ã¯ããŒã ã®ãªã³ã¯ããååŸããããšãã§ããŸãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
Microsoft Teams ãèµ·åããŸã
-
ç»é¢å·Šã®ããŒã ããªãŒã§ãç®çã®ããŒã åã®å³æšªã«ãã [ã»ã»ã»](ãã®ä»ã®ãªãã·ã§ã³)ã¡ãã¥ãŒãã¯ãªãã¯ãã[ãã®ãã£ãã«ãžã®ãªã³ã¯ãååŸ] ãéžæããŸã
-
[ããŒã ãžã®ãªã³ã¯ãååŸ] ãã€ã¢ãã°ããã¯ã¹ã衚瀺ãããã®ã§ [ã³ããŒ]ãã¿ã³ãã¯ãªãã¯ããŸã
-
ã³ããŒãããªã³ã¯ãã¡ã¢åž³ãªã©ã®ããã¹ããšãã£ã¿ã«è²Œãä»ãããªã³ã¯å ã® groupId= 以éã® GUID éšåãæãåºããŸã
ããããšã³ããã€ã³ãã® group-id ã«ãªããŸãã
äœè«ã§ãããããŒã ããªãŒã®äžã®ãã£ãã«ã®ãªã³ã¯ãååŸããŠããã£ãã«ã®IDã§ãããAPIãšã³ããã€ã³ãã®æžåŒã«ãããparent-idã¯å«ãŸããŠããŸããã
ããŒã ã®äžã«ãããã£ãã«ã®IDã§ãããAPIãšã³ããã€ã³ãã®æžåŒã«ãããparent-idãååŸããŸã
ãã®parent-idãååŸããã«ã¯ Graph API ã䜿çšããå¿ èŠããããŸããããã®ããã«ã³ãŒããèšè¿°ããã®ã¯å€§å€ãªã®ã§ Graph Explorer ã䜿çšããŸãã
Graph Explorer ã¯ãMicrosoft Graph ã«å¯ŸããŠèŠæ±ããããå¿çã衚瀺ãããã§ããããŒã«ã§ãã³ãŒããèšè¿°ããªããŠã GUI ã§Graph API ãè©Šãããšãã§ããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ Graph Explorer ããdriveItem ã®åãäžèŠ§è¡šç€ºããæ©èœã® API ãã³ãŒã«ããåæãããã¢ã€ãã ããç®çã®ãã£ãã«ãæ¢ãããã® ID ãã¡ã¢ããŸãã
ãã® Graph API ãåŒã³åºãæžåŒã«ã¯ã以äžã®ããã«æé 1-1 ã§å ¥æãã group-id ã䜿çšããŸãã
/groups/{group-id}/drive/root/children
ããã§ã¯ group-id ã«çŽã¥ããããŒã é äžã®ãã£ãã«ãåæãããã¡ã€ã«ãšæçš¿ããç®çã®ãã£ãã«ã® id ãååŸããŸãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
Web ãã©ãŠã¶ãŒãã Graph Explorer ã«ã¢ã¯ã»ã¹ããŸã
ç»é¢å·Šã® [èªèšŒ] ã®äžã« çŸåšããµã³ãã« ã¢ã«ãŠã³ãã䜿çšããŠããŸãã èªåã®ããŒã¿ã«ã¢ã¯ã»ã¹ããã«ã¯: ãšè¡šç€ºãããŠããå Žåã¯[Microsoft ã®è·å Žã®ã¢ã«ãŠã³ããŸãã¯åŠæ ¡ã®ã¢ã«ãŠã³ãã§] ãã¿ã³ãã¯ãªãã¯ããŠãã°ã€ã³ããŠãã ããã
-
Graph Explorer ã®å³ãã€ã³ã® [ã¯ãšãªã®å®è¡] ãã¿ã³ã®å·ŠåŽã«ãã URL ããã¯ã¹ã«ä»¥äžã® URL ãèšè¿°ããŠ[ã¯ãšãªã®å®è¡] ãã¿ã³ãã¯ãªãã¯ããŸãããªããURL ããã¯ã¹ã®å·Šé£ã«ãã HTTP ã¡ãœãããæå®ããããããããŠã³ãªã¹ãããã¯ã¹ã®å 容ã [GET]ã§ããããšã確èªããŠãã ãã
https://graph.microsoft.com/v1.0/groups/æé 1-1ã§å ¥æããgroup-id/drive/root/children
-
[å¿çã®ãã¬ãã¥ãŒ] ã«ããŒã é äžã®ã¢ã€ãã ã®æ å ±ã JSON ã§åæãããã®ã§ãname å±æ§ã®å€ãç®çã®ãã£ãã«åãšäžèŽãããã®("äžè¬" 㯠name å±æ§ã "General"ã«ãªã£ãŠããããã§ã)ãæ¢ããid å±æ§ã®å€ãã³ããŒããŸã
ããããšã³ããã€ã³ãã® parent-id ã«ãªããŸãã
ãã£ãŠããã£ãã«(ã«çŽã¥ãã SharePoint ãµã€ã)ãžãã¡ã€ã«ãã¢ããããŒãããããã®ãšã³ããã€ã³ãã¯ä»¥äžã®ããã«ãªããŸããã
PUT /groups/æé 1-1ã§å
¥æããgroup-id/drive/items/æé 1-2ã§å
¥æããparent-id:/{filename}:/content
ãã¹ãæ£ãããã©ãã確èªãããå Žåã¯ãç®çã®ãã£ãã«ã«ãªã«ããã¡ã€ã«ãæçš¿ããŠãããGraph Explorer ãã以äžã® API ãå®è¡ããã¢ããããŒããããã¡ã€ã«ãæ€åºãããã確èªããããšãã§ããŸãã
GET /groups/æé 1-1ã§å
¥æããgroup-id/drive/items/æé 1-2ã§å
¥æããparent-id/children
ã¢ããªã±ãŒã·ã§ã³ãã Microsoft Teams ã®ããŒã ãšçŽã¥ãã SharePoint ãµã€ãã«ãã¡ã€ã«ãã¢ããããŒãããã«ã¯ Sites.ReadWrite.All ã®ã¢ã¯ã»ã¹èš±å¯ãå¿ èŠã§ãã
Azure Active Airectory ãžã®ã¢ã¯ã»ã¹èš±å¯èšå®ã¯ Azure Portal ããè¡ããŸãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
Azure ã®ããŒã¿ã«ã«ãã°ã€ã³ããŸã
-
å·Šã®ã¡ãã¥ãŒãã [Azure Active Directory] ãéžæããŸã
-
Azure Active Airectory ã®ãã¬ãŒããã [ã¢ããªã®ç»é²] ãã¯ãªãã¯ããŸã
-
Azure Active Airectory ã«ç»é²æžã®ã¢ããªã®äžèŠ§ã衚瀺ãããã®ã§ãç®çã®ã¢ããªåãã¯ãªãã¯ããŸã
ãªãããã®ãã³ãºãªã³ã§äœæããã¢ããªã®ååã¯Sample_GraphAPI_Appã§ã
-
ç»é¢å·Šã®ãã¬ãŒããã [API ã®ã¢ã¯ã»ã¹èš±å¯] ãã¯ãªãã¯ããŸã
-
ç»é¢å³ã®ãã€ã³ã§ [+ ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ] ãã¯ãªãã¯ããŸã
-
ç»é¢å³ã« [API ã¢ã¯ã»ã¹èš±å¯ã®èŠæ±]ãã¬ãŒãã衚瀺ãããã®ã§ã[Microsoft API] ã¿ãã®äžã® **[Microsoft Graph]**ã¿ã€ã«ãã¯ãªãã¯ããŸã
-
"ã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªã¢ã¯ã»ã¹èš±å¯ã®çš®é¡"ã®ç»é¢ã«ãªãã®ã§ [å§ä»»ãããã¢ã¯ã»ã¹èš±å¯]ã¿ã€ã«ãã¯ãªãã¯ããŸã
-
衚瀺ãããã¢ã¯ã»ã¹èš±å¯ã®ãªã¹ããã [Sites] ãã¯ãªãã¯ã [Sites.ReadWrite.All] ã«ãã§ãã¯ãã€ã[ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ] ãã¿ã³ãã¯ãªãã¯ããŸã
[API ã¢ã¯ã»ã¹èš±å¯ã®èŠæ±]ãã¬ãŒããéããè¿œå ããã¢ã¯ã»ã¹èš±å¯ã®ååããªã¹ãã«è¡šç€ºãããŠããŸããããŸã æå¹ã«ãªã£ãŠããŸãããæå¹ã«ããããã«ã¯ããã³ã管çè ã®åæãå¿ èŠã§ãã
-
åã®æé ã§è¿œå ããã¢ã¯ã»ã¹èŠæ±ãæå¹ã«ããããã« [+ ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ] ã®å³é£ã«ãã **[(çŸåšã®AADããã³ãå)ã«ç®¡çè ã®åæãäžããŸã]**ãã¯ãªãã¯ããŠåæãä»äžããŸãã
[(çŸåšã®AADããã³ãå)ã«ç®¡çè ã®åæãäžããŸã]ãæ·¡è²è¡šç€ºã®å Žåã¯ãããã³ãã®ç®¡çè ã«é£çµ¡ããŠåæãä»äžããŠãããããAzure Active Airectory ã®ããã³ããäœæã§ããå Žåã¯ãèªåã§äœæãã Azure Active Airectory ããã³ãã§äœæ¥ããŠãã ããã
-
ã¢ã¯ã»ã¹èš±å¯ã®ãªã¹ãã«è¡šç€ºãããŠãã [Sites.ReadWrite.All] ã® [ç¶æ ]ãã£ãŒã«ãã«ãæå¹ã§ããããšã瀺ãã°ãªãŒã³ã®ã€ã³ãžã±ãŒã¿ãŒã¢ã€ã³ã³ã衚瀺ãããŠããããšã確èªããŸã
以äžã§ Azure Active Airectory ã§ã®ã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ã¯å®äºã§ãã
ããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããã Sites.ReadWrite.All ã®ã¢ã¯ã»ã¹èš±å¯ãèŠæ±ããããšãã§ããŸãã
ã¿ã¹ã¯ 3 : æŒç¿çšã¢ããªã±ãŒã·ã§ã³ãžã®ãSharePoint ãµã€ããžã®ãã¡ã€ã«ã¢ããããŒãæ©èœã®å®è£
æŒç¿çšã¢ããªã±ãŒã·ã§ã³ã« Graph API ã䜿çšãã SharePoint ãµã€ããžã®ãã¡ã€ã«ã¢ããããŒãæ©èœãå®è£ ããŸãã
ãã®ã³ãŒãã®å®è£ ã«ãããã³ãŒãã®å€æŽã¯ãããã§ãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
æŒç¿çšã¢ããªã±ãŒã·ã§ã³ã Visual Stdio Code ã§ãªãŒãã³ããŸã
-
aadAuth.js ããªãŒãã³ããå€æ° tokenRequest ã«æå®ããŠãããªããžã§ã¯ãã® scopes ããããã£ã®é åã«æååãšã㊠Sites.ReadWrite.All ãè¿œå ããŸã
å ·äœçã«ã¯ä»¥äžã®ããã«å€æŽããŸã
const tokenRequest = { scopes: ["User.Read","Files.ReadWrite","Sites.ReadWrite.All"], forceRefresh: false // ãã£ãã·ã¥ãããããŒã¯ã³ãã¹ããããããµãŒããŒã«ç§»åããŠæ°ããããŒã¯ã³ãååŸããã«ã¯ãããã "true" ã«èšå®ããŸã };
-
index.html ã® script ã¿ã°å ã® sendFileButton ã®ã€ãã³ããã³ãã©å ã®å€æ°ã®å€ã以äžã®ããã«å€æŽããŸã
targetDrive = 'groups/æé 1-1ã§å ¥æããgroup-id/drive/items/æé 1-2ã§å ¥æããparent-id:',
(â») parent-id ã®åŸãã« : (ã»ãã³ãã³) ãããªããä»å ããŠãã ãã
-
Visual Studio Code ã®ã¡ãã¥ãŒ[Terminal]-[New Terminal] ãéžæãã¿ãŒããã«ç»é¢ã衚瀺ããŸã
-
以äžã®ã³ãã³ããå®è¡ããŠæŒç¿çšã¢ããªã±ãŒã·ã§ã³ããã¹ãããŸã
http-server
-
Web ãã©ãŠã¶ãŒã§ http://localhost:8080/index.html ã«ã¢ã¯ã»ã¹ãã衚瀺ããã [ãã°ã€ã³]ãã¿ã³ãã¯ãªãã¯ã Azure Active Directory ã«ãã°ã€ã³ããŸã
-
ãã©ãŠã¶ãŒå ã® [ãã¡ã€ã«ã®éžæ] ãã¿ã³ãã¯ãªãã¯ããŠæŒç¿çšã«çšæãããã¡ã€ã«ãéžæããŸã
-
[ã¢ããããŒã] ãã¿ã³ã衚瀺ãããã®ã§ã¯ãªãã¯ããŸã
-
ãã©ãŠã¶ãŒå ã«ã¢ããããŒããããã¡ã€ã«ã®æ å ±ãæªãã©ãŒãããã®JSONãšããŠè¡šç€ºãããã®ã確èªããŸã
-
Teams ã¢ããªã±ãŒã·ã§ã³ç»é¢ã§ãç®çã®ãã£ãã«ã® [ãã¡ã€ã«]ã¿ããã¯ãªãã¯ããŸã
çµæ :
ç®çã® Microsoft Teams ã®ãã£ãã«ã«çŽã¥ãã SharePoint ã«ãã¡ã€ã«ãã¢ããããŒããããŠããŸãã
ãŸãããã¡ã€ã«ã¢ããããŒãå®äºåŸã«ãã©ãŠã¶ãŒã«è¡šç€ºãããæªãã©ãŒãããã® JSON ã®å 容ãã以äžã確èªãããŸãããããã®å€ã¯ä»¥éã®ã¿ã¹ã¯ã§äœ¿çšããã®ã§ãã¡ã¢åž³ã«è²Œãä»ãããªã©ããŠä¿æããŠãã ããã
- name å±æ§ã«ã¢ããããŒããããã¡ã€ã«åãæå®ãããŠããã
- WebUrl å±æ§ã«æå®ãããŠãã URL ã«ã¢ã¯ã»ã¹ããŠã¢ããããŒããããã¡ã€ã«ã«ã¢ã¯ã»ã¹ã§ããã
- @microsoft.graph.downloadUrl å±æ§ã«æå®ãããŠãã URL ã«ã¢ã¯ã»ã¹ããŠãã¡ã€ã«ãããŠã³ããŒããããã
- eTag ãã©ã€ãã¢ã€ãã ã® ETAG ã«ãã GUID(ã¡ã¢ããŠãã ãã)
ããŸããããªãå Žåã¯ããã®ãµã³ãã«ãåèã«ããŠãã ããã
åã®ã¿ã¹ã¯ã®åŠç㧠Teams ãã£ãã«ãšçŽã¥ãã SharePoint ãµã€ãã®ã¢ããããŒãããããã¡ã€ã«ãžã®ãªã³ã¯ãå«ãã ã¡ãã»ãŒãžãæçš¿ããŸãã
ãã®åŠçã«ã¯ä»¥äžã® Graph API ãããŸãã
ãã® API ã® HTTP èŠæ±ã¯ä»¥äžã§ãããæå®ããå¿ èŠã®ãã id ã®èª¬æã¯ããã¥ã¡ã³ãã«èšèŒãããŠããŸããã
POST /teams/{id}/channels/{id}/messages
ãã® 2 ã€ã® id ã¯ãããããç°ãªããã®ã§ãåã® id ãããŒã ã«ã€ãããããŠããŒã¯ãª id ã§åŸãããã£ãã«ã«ã€ãããã id ã§ãã
ãã® 2 ã€ã® id ã¯ãã£ãã«ãšãã£ãã«ã«æçš¿ãããŠããã¡ãã»ãŒãžã®ãªã³ã¯ããååŸããããšãã§ããŸããããã£ãã«ã®ãªã³ã¯ã«å«ãŸãã id ã¯èšå·ããšã³ã³ãŒããããŠãããããã®ãŸãŸã¯äœ¿çšã§ããŸããã
ãã£ãŠä»åã¯ãã£ãã«ã«æçš¿ãããŠããã¡ãã»ãŒãžã®ãªã³ã¯ããååŸããŸãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
ç®çã®ãã£ãã«ã«æçš¿ãããŠããã¡ãã»ãŒãžã«ããŠã¹ãã€ã³ã¿ããããŒãããšçŸããã¢ã€ã³ã³ããŒã®å³ç«¯ã«ãã [ã»ã»ã»](ãã®ä»ã®ãªãã·ã§ã³)ã¡ãã¥ãŒãã¯ãªãã¯ãã[ãªã³ã¯ãã³ããŒãã] ãéžæããŸãã
ã¯ãªããããŒãã«ã³ããŒãããã®ã§ãã¡ã¢åž³ã®ãããªããã¹ããšãã£ã¿ã«ãªã³ã¯ã貌ãã€ããŸã
-
ããŒã ã® id ãš ãã£ãã«ã® id ãåãåºããŸã
ãªã³ã¯ã®äžã®ã¯ãšãªãŒã¹ããªã³ã° tenantId ã«æå®ãããŠãããã®ããããŒã ã® id ã§ãhttps://teams.microsoft.com/l/message/ ãã @thread.tacv2 ãå«ã次㮠/ ãŸã§ã®éšåããã£ãã«ã® id ã§ã
å ·äœçã«äŸãäžãããšãªã³ã¯ã®å 容ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
https://teams.microsoft.com/l/message/ãã£ãã«ã®id/1608183424899?tenantId=ããã³ãã®id&groupId=ããŒã ã®id&parentMessageId=1608183424899&teamName=Demo&channelName=Teams%20%E9%96%8B%E7%99%BA&createdTime=1608183424899
-
ååŸãããã£ãã«ã® id ãšããŒã ã® id ã䜿çšããŠãããŒã ã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãã API ã® ãšã³ããã€ã³ãã®URLã以äžã®ããã«çæããŸã
/teams/ããŒã ã®id/channels/ãã£ãã«ã®id/messages
(â»)ãã®æé ã¯ãã¡ãã»ãŒãžæçš¿ã®æŒç¿ãGraph Explorer ã䜿çšããŠè¡ãå Žåã¯ã¹ãããããŠããŸããŸããã
ã¢ããªã±ãŒã·ã§ã³ãã Teams ã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããã«ã¯ãAzure Active Direcroty ã§ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿã ChannelMessage.Send ã®ã¢ã¯ã»ã¹èš±å¯ãèšå®ããŠããå¿ èŠããããŸãã
ãã®èšå®ã ã¿ã¹ã¯ 2 : æ€èšŒçšã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ã®æé ãåèã«ãAzure Active Directory ã§ç»é²ãããŠããã¢ããªã±ãŒã·ã§ã³ Sample_GraphAPI_App ã«å¯Ÿãè¡ããŸãã
æ€èšŒçšã¢ããªã±ãŒã·ã§ã³ã®ãã°ã€ã³æã®ã³ãŒãã§ãChannelMessage.Send ã®ã¢ã¯ã»ã¹èš±å¯ã®è¿œå ãè¡ããŸãã
æé ã«ã€ããŠã¯ ã¿ã¹ã¯ 3 : æŒç¿çšã¢ããªã±ãŒã·ã§ã³ãžã®ãSharePoint ãµã€ããžã®ãã¡ã€ã«ã¢ããããŒãæ©èœã®å®è£ ã®å 容ãåèã«ä»¥äžã®ããã«ã³ãŒããå€æŽããŠãã ããã
const tokenRequest = {
scopes: ["User.Read","Files.ReadWrite","Sites.ReadWrite.All","ChannelMessage.Send"],
forceRefresh: false // ãã£ãã·ã¥ãããããŒã¯ã³ãã¹ããããããµãŒããŒã«ç§»åããŠæ°ããããŒã¯ã³ãååŸããã«ã¯ãããã "true" ã«èšå®ããŸã
};
Teams ã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããåŠçã¯ãä»å㯠Graph Explorer ã Postman ã§è¡ãã®ã§ã³ãŒãã®å€æŽã¯ãããŸã§ã§ãã
Graph Explorer ã䜿çšããæ¹æ³ãš Postman ã䜿çšãã 2 ã€ã®æ¹æ³ã玹ä»ããŸãã
ãã®æŒç¿ã¯ã©ã¡ãã®æ¹æ³ã§è¡ã£ãŠãããŸããŸããã
æŒç¿ã®æºå
ãããã®æ¹æ³ãå®è¡ããã«ãå¿ èŠãšãªã以äžã®æ å ±ãæºåããŸãã
- ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããããã® Graph API ã®ãšã³ããã€ã³ã
- æçš¿ããã¡ãã»ãŒãžã®å 容ãå®çŸ©ãã JSON
ããããæºåããæé ã¯ä»¥äžã®ãšããã§ãã
-
ã¿ã¹ã¯ 4-1 ã§çæããã以äžã®æžåŒã® Graph API ã®ãšã³ããã€ã³ããçšæããŸã
https://graph.microsoft.com/v1.0/teams/ããŒã ã®id/channels/ãã£ãã«ã®id/messages
-
æçš¿ããã¡ãã»ãŒãžã®å 容ãå®çŸ©ãã JSON
-
ã¯ããã«ãã¡ãã»ãŒãžãæ£ãããã£ãã«ã«æçš¿ããããã©ãã確èªããããã®ã·ã³ãã«ãªã¡ãã»ãŒãžã® JSON ãçšæããŸã
{ "body": { "content": "Hello World" } }
-
ã·ã³ãã«ãªã¡ãã»ãŒãžã®æçš¿ãæåããããšãæçš¿ãããã¡ã€ã«ãæ·»ä»ãããã¡ãã»ãŒãžã® JSON ãçšæããŸãã
以äžã®ãµã³ãã« JSON ã®äžã® % ã®ä»ããéšåãã¿ã¹ã¯ 3 ã§ååŸãã JSON ã®å€ãšãåã®æé ã§çæãã GUID ã§çœ®ãæããŸãããªããä»åæ·»ä»ããããã¡ã€ã«ã¯ç»åãã¡ã€ã«ãæ³å®ããŠããŸãã
察å¿ã¯ä»¥äžã®ããã«ãªããŸãã
æçš¿çš JSON èšå®å€ %downloadUrl% @microsoft.graph.downloadUrlcå±æ§ã®å€(â») %GUID% eTagå±æ§ã®GUID %WebUrl% WebUrlå±æ§ã®å€ %fileName% nameå±æ§ [ãã¡ã€ã«ãæ·»ä»ãããã£ãã«ã¡ãã»ãŒãž JSON]
{ "body": { "contentType": "html", "content": "<div>ç»åãæçš¿ããŸãããã</div><div><img src=\"%downloadUrl%\"></div><attachment id=\"%GUID%\"></attachment>" }, "attachments": [ { "id": "%GUID%", "contentType": "reference", "contentUrl": "%WebUrl%", "name": "%fileName%" } ] }
(â»)ãåè : ã¡ãã»ãŒãžãžã®ã€ã³ã©ã€ã³ç»åã®æ·»ä»ã«ã€ããŠã
ç»åããã£ãã«ã«æçš¿ããéã«è¡šç€ºãããã€ã³ã©ã€ã³ç»åã®æå®ã¯ãæ£ããã¯ä»¥äžã®ããã¥ã¡ã³ãã®äŸã®ããã« hostedContents ã® contentBytes å±æ§ã«ç»åã Base64 ãšã³ã³ãŒãããããŒã¿ãæå®ããŠè¡ããŸãã
JavaScriptã®æšæºæ©èœã§ãç»åãBase64ãšã³ã³ãŒãããæ©èœã¯æäŸãããŠããŸããããWeb ãã©ãŠã¶ãŒäžã§äœ¿çšããå Žåã¯ãcanvas ã«ããŒãããtoDataURLã¡ãœããã䜿çšããããšã§ãBase64ãšã³ã³ãŒã ããŒã¿ãå«ãdata URIãååŸããããšãã§ããŸãã
ããããªãããã®æŒç¿ã§ã¯æé ãç°¡åã«ããããã« image ã¿ã°ãš@microsoft.graph.downloadUrlå±æ§ã®å€ã䜿çšããŠããŸãã
@microsoft.graph.downloadUrl ã¯ãã¡ã€ã«ã®ã³ã³ãã³ããããŠã³ããŒãããããã«äœ¿çšã§ããURLã§ãããèªèšŒã¯å¿ èŠãããŸããããã®ãã URL ã¯çãæé (1 æé) ã ã䜿çšã§ãããã®åŸã¯ç¡å¹ã«ãªããŸãã
ãã®ãµã³ãã«ã®ããã« img ã¿ã°ã䜿çšããå Žåã¯ãã¢ã¯ã»ã¹å¯èœãªæ°žç¶ç㪠URL ãæå®ããããã¯ã©ã€ã¢ã³ãåŽã§ base64 ã§ãšã³ã³ãŒãããããŒã¿ã src å±æ§ã«ä»¥äžã®ããã«æå®ããããšã§ç»åã®æããé²ãããšãã§ããŸãã
<img src="data:image/png;base64,ãšã³ã³ãŒããããããŒã¿" alt="">
-
Graph Explorer ãã Teams ã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããŸãã
ãã°ã€ã³ã¯ Graph Explorer åŽã§è¡ãããã®ã§æ€èšŒçšã¢ããªã±ãŒã·ã§ã³ãèµ·åã㊠Azure Active Directoryã«ãã°ã€ã³ããå¿ èŠã¯ãããŸããã
å®éã®æé ã¯ä»¥äžã®ãšããã§ãã
-
Web ãã©ãŠã¶ãŒã§ Graph Explorer ã«ã¢ã¯ã»ã¹ããŸã
-
Graph Explorer ã«èªåã®ã¢ã«ãŠã³ãã§ãã°ã€ã³ããŠããããšã確èªããã¢ã«ãŠã³ãåã®å³æšªã«ããæ¯è»ã¢ã€ã³ã³ãã¯ãªãã¯ãã[ã¢ã¯ã»ã¹èš±å¯ãéžæãã] ãéžæããŸã
-
以äžã®ã¢ã¯ã»ã¹èš±å¯ã«ãã§ãã¯ãã€ã [åæ] ãã¿ã³ãã¯ãªãã¯ããŸã
ChannelMessage.Send, ChannelMessage.ReadAll
-
ç»é¢å³ãã€ã³äžéšã® HTTP ã³ãã³ãã®ããããããŠã³ãªã¹ãããã¯ã¹ã§ [POST] ãéžæããŸã
-
åã䞊ã³ã«ãã URL ããã¯ã¹ã«æºåããŠããããã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããããã® Graph API ã®ãšã³ããã€ã³ãã®URLãã»ããããŸã
-
[èŠæ±æ¬æ] ã¿ããã¯ãªãã¯ããã¿ãå ã®ããã¹ãããã¯ã¹ã«æºåããŠãããã·ã³ãã«ãªãã£ãã«ã¡ãã»ãŒãž JSONãã»ããããŸã
-
[ã¯ãšãªãŒã®å®è¡]ãã¿ã³ãã¯ãªãã¯ããŸã
[å¿çã®ãã¬ãã¥ãŒ]ã«æçš¿ããã¡ãã»ãŒãžã®æ å ±ãJSON圢åŒã§è¿ã£ãŠããŠããããšã確èªããTeams ã¢ããªã±ãŒã·ã§ã³ã§ãç®çã®ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãããŠããã確èªããŸã
-
ãã£ãã«ãžã®ã·ã³ãã«ãªã¡ãã»ãŒãžã®éä¿¡ãæåããã[èŠæ±æ¬æ] ã¿ãã®å 容ããã¡ã€ã«æ·»ä»ã¡ãã»ãŒãžãæçš¿ããããã® JSON ã«æžãæãã[ã¯ãšãªãŒã®å®è¡]ãã¿ã³ãã¯ãªãã¯ããŸã
çµæ :
Microsoft Teams ç®çã®ãã£ãã«ã«ç»åãæ·»ä»ãããã¡ãã»ãŒãžãæçš¿ãããŸãã
Graph Explorer ã䜿çšããã¡ãã»ãŒãžã®æçš¿ã¯ããã§å®äºã§ãã
Postman ã䜿çšã㊠Teams ãã£ãã«ãžã¡ãã»ãŒãžãæçš¿ããŸãã
ãªããPostman ã䜿çšããæ€èšŒã§ã¯ããªã¯ãšã¹ãã®éã«äœ¿çšããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããæ€èšŒçšã¢ããªã±ãŒã·ã§ã³ãèµ·åããAzure Active Directory ã«ãã°ã€ã³ããŠããå¿ èŠããããŸãã
å ·äœçãªæé ã¯ä»¥äžã®ãšããã§ãã
-
æ€èšŒçšã¢ããªã±ãŒã·ã§ã³ãèµ·åããã°ã€ã³åŠçãè¡ãã衚瀺ãããã¢ã¯ã»ã¹ããŒã¯ã³ãã¡ã¢ããŸã
-
Postman ãèµ·åããŸã
-
Postman ã®ã¡ãã¥ãŒ[Workspces] ãã [My Workspace] ãéžæããŸã
-
ç»é¢ã®å·ŠåŽã®ã³ã¬ã¯ã·ã§ã³ã®äžèŠ§ã«æŒç¿ 3 ã®ã¿ã¹ã¯ 1 ã§äœæãã Microsoft Teams App Dev ãããã®ã§ãååã®äžã§ããŠã¹ã®å³ãã¿ã³ãã¯ãªãã¯ãã衚瀺ãããã³ã³ããã¹ãã¡ãã¥ãŒãã [Add Request] ãéžæããŸã
-
ã³ã¬ã¯ã·ã§ã³åã®äžã« [New Request] ãšããã¢ã€ãã ãäœæãããã®ã§ãååã®äžã§ããŠã¹ã®å³ãã¿ã³ãã¯ãªãã¯ãã衚瀺ãããã³ã³ããã¹ãã¡ãã¥ãŒãã [Rename] ãéžæããŠååã Post message to Teams Channel ã«å€æŽããŸã
-
å³ãã€ã³ã«è¡šç€ºãããŠãã[Upload to OnDrive]ã¿ãå ã® HTTP ã¡ãœããã®ããããããŠã³ãªã¹ãããã¯ã¹ã[GET]ãã [POST] ã«å€æŽããŸã
-
HTTP ã¡ãœããã®ããããããŠã³ãªã¹ãããã¯ã¹ã®å³é£ãã«ãã URL ããã¯ã¹ã«æºåããŠããããã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ããããã® Graph API ã®ãšã³ããã€ã³ãã®URLãã»ããããŸã
-
URL ããã¯ã¹äžã® [Body] ãã¯ãªãã¯ãããã®äžã®ã¡ãã¥ãŒããŒã® [raw] ãªãã·ã§ã³ãã¿ã³ããã§ãã¯ãããšãåãã¡ãã¥ãŒããŒã®å³ç«¯ã«ããããããŠã³ãªã¹ãããã¯ã¹ã衚瀺ãããã®ã§ [JSON]ãéžæããŸã
ãŸãããã®äžã®ããã¹ããšãªã¢ã«æºåããŠãããã·ã³ãã«ãªãã£ãã«ã¡ãã»ãŒãž JSONãèšè¿°ããŸãã
-
URL ããã¯ã¹ã®äžã«ãã [Headers] ãã¯ãªãã¯ãã以äžã® KEY ãš VALUE ãè¿œå ããŸã
KEY VALUE Authorization Bearer ã¢ããªã±ãŒã·ã§ã³ã§ååŸããã¢ã¯ã»ã¹ããŒã¯ã³(â») (â») Bearerãšæåãšæ°åã®çŸ åã§ããã¢ã¯ã»ã¹ããŒã¯ã³ã®éã«åè§ã®ã¹ããŒã¹ãæå®ããŠãã ãã
-
URL ããã¯ã¹å³æšªã® [Send] ãã¿ã³ãã¯ãªãã¯ããŸã
[sponse]ã«æçš¿ããã¡ãã»ãŒãžã®æ å ±ãJSON圢åŒã§è¿ã£ãŠããŠããããšã確èªããTeams ã¢ããªã±ãŒã·ã§ã³ã§ãç®çã«ãã£ãã«ã«ã¡ãã»ãŒãžãæçš¿ãããŠããã確èªããŸã
-
ãã£ãã«ãžã®ã·ã³ãã«ãªã¡ãã»ãŒãžã®éä¿¡ãæåãããããªã¯ãšã¹ã Body ã®ããã¹ãããã¯ã¹ã®å 容ã ãã¡ã€ã«æ·»ä»ã¡ãã»ãŒãžãæçš¿ããããã® JSON ã«æžãæãã[Send]ãã¿ã³ãã¯ãªãã¯ããŸã
çµæ
Microsoft Teams ç®çã®ãã£ãã«ã«ä»¥äžã®ãããªç»åãæ·»ä»ãããã¡ãã»ãŒãžãæçš¿ãããŸãã
ãæçš¿ã倱æããå Žåã
倱æããå Žåã¯ä»¥äžãåèã«èšå®ãèšè¿°ã確èªããŠãã ãã
-
HTTP 404 ãè¿ã
ãšã³ããã€ã³ãã® URL ãæ£ããã確èªããŠãã ãã
-
Access denied(ã¢ã¯ã»ã¹æåŠãè¿ã)
Azure Active Directory 㧠Sample_GraphAPI_App ã¢ã¯ã»ã¹èš±å¯ããããŠããªãããæå¹ã«ãªã£ãŠããŸããã
Azure ããŒã¿ã«ãã Azure Active Directory ã®èšå®ç»é¢ã«å ¥ããæŒç¿çšã¢ããªã±ãŒã·ã§ã³ã®[API ã®ã¢ã¯ã»ã¹èš±å¯]ç»é¢ã«Sample_GraphAPI_App ããªã¹ããããŠãããããªã¹ããããŠããå Žå㯠[ç¶æ ]ãã£ãŒã«ãã«ç·è²ã®ã€ã³ãžã±ãŒã¿ãŒãããã確èªããŠãã ãã
-
Bad request ããã㯠Internal server error ãè¿ã
éä¿¡ããŠãã JSON ã®ãã©ãŒãããã«èª€ãããªãã確èªããŠãã ãã
â åãž æŒç¿ 4 : Graph API ã䜿çšãã OneDrive ãžã®ãã¡ã€ã«ã®æçš¿