Office Development – Microsoft Graph Giriş – Microsoft Graph Nedir?
Merhaba uzun zamandır Office Development alanında makaleler yazıp paylaşmaya çalışıyorum. Tabii ki bu paylaşımlar genel olarak SharePoint Add-in ve Online geliştirme üzerine idi. Biraz daha genişleyerek tam olarak Office Add-In geliştirme ve Graph API üzerinde bilgiler vermeye daha çok devam ediyor olacağım.
Daha önce gene Çözümpark üzerinde yayınlanan Microsoft Office Geliştirmeye giriş webcast ve Videolarımız dan da faydalanabilirsiniz bu yazı serimize başlamadan önce.
Microsoft Graph’ın kullanım amacı, Microsoft Office 365 bulut sistemi üzerinde olan tüm kullanıcılar ile ( milyarlarca ) etkileşim oluşturmak, raporlamak, uygulama geliştirmek vb.dir.
Bu işlemleri yaparken ( tamamını ) tek bir end point adresi ile yapabilmenize olanak sağlar. https://graph.microsoft.com.
Microsoft Graph, nesnelerin birbirlerine olan ilişkilerine göre çalışmaktadır. Örneğin bir uygulamanızın izinlerinin bir gruba bağlanması ve bu gurubunda bir yöneticiye olan ilişkisine bağlanması üzerine kuruludur. Yazacağınız uygulama bu ilişkileri kullanarak bu kaynaklara erişebilir ve bunu bir API üzerinden yapar.
Microsoft Graph size tenant üzerinde değerli metrik bilgilerini sunarak kullanım verileri, disk bilgileri, mail kullanım raporları gibi binlerce metrik değerlerini elde edebilirsiniz.
Yukarıdaki resimde görülen tüm nesnelerin ve tüm ilişkilerin graph API üzerinden erişimi mevcut olup sürekli olarak da geliştirilmektedir.
Microsoft Graph İle Ne Yapabilirsiniz?
Microsoft Graph ile kullanıcılarınızın ve uygulamalarınızın maksimum üretkenlikte olmasını sağlayabilir benzersiz deneyimleri oluşturabilirsiniz.
Şimdi bir uygulama düşünelim;
Outlook üzerinde birkaç gün sonra bir toplantınız var. Microsoft Graph ile bu toplantıya ait yeni belgeleri Microsft Teams üzerinden ve diğer paylaşılan dosyalardan bulur, katılımcıların profilleri ne varana kadar size bir bilgi kümesi hazırlayarak önünüze sunabilir. Nasıl güzel ve eğlenceli görünüyor değil mi?
Dahası var. Takvimlerinizi tarayabilir ve toplantınız için de en uygun zamanı size Machine Learning dene alt yapı sayesinde yoğunluğunuzu analiz ederek size teklif edebilir. OneDrive üzerindeki bir Exceli düzenleyebilir ve aynı anda tüm mobil cihazlarınızla senkronize ederek (gerçek zamanlı ) kullanıma alabilir hatta bunları gerekli toplantı katılımcılarına gönderebilir.
Microsoft Graph API sayesinde Office 365 Eko Sistemi üzerindeki tüm uygulamalara erişebilir ve oralardan veri toplayarak istediğiniz farklı platforma da taşıyabilirsiniz.
Bundan sonra ne olacak ?
Evet az çok da olsa Graph API hakkında bilgiler paylaştık. Bundan sonra ne olacak ? Çok basit biraz API’yi tanımaya başlayacağız ve sonrasında uygulamalarımıza nasıl ekleyeceğimiz hakkında bilgileri sizinle beraber paylaşıyor olacağız.
Günümüzde IoT lerinde devreye girmesi ile interface ( arayüz) kullanımları aslında buna API diyebiliriz çok revaçta ve bundan sonrası için daha yoğun kullanımları olacak.
Gelin aşağıdaki tabloya beraber bakalım. Bu tablo Microsoft tarafından “En çok kullanılan Metodlar “ olarak Office Dev Center üzerinde mevcut bende oradan alarak sizlerle paylaşıp üzerinde kısa açıklamalar yapmak istiyorum.
GET my profile https://graph.microsoft.com/v1.0/me
Profilimiz hakkında tüm bilgilerin dönüldüğü metoddur. Bu metod basit bağlamda kullanıcınız bilgilerini döner
Örnek Çıktı ;
{
“@odata.context”: “https://graph.microsoft.com/v1.0/$metadata#users/$entity”,
“id”: “9f63fb14-7abb-41c5-ba7f-b7469792d8c6”,
“businessPhones”: [
“”
],
“displayName”: “Erdem Avni SELÇUK”,
…….
GET my files https://graph.microsoft.com/v1.0/me/drive/root/children
OneDrive üzerinden size ait olan dosyalarınızın listesini dönen metoddur. Bu metod ile tüm dosyalarınızın internet üzerindeki path leri de dahil olmak üzere bir çok detayına ulaşabilir durumdasınız.
Örnek Çıktı ;
{
“@odata.context”: “https://graph.microsoft.com/v1.0/$metadata#users(‘9f63fb14-7abb-41c5-ba7f-b7469792d8c6’)/drive/root/children”,
“value”: [
{
“createdBy”: {
“user”: {
“id”: “9f63fb14-7abb-41c5-b232-b7469792d8c6”,
“displayName”: “Erdem Avni SELÇUK”
}
},
“createdDateTime”: “2017-03-10T15:22:19Z”,
“eTag”: “\”{D820D5A8-2323-AD25-77091CFBC130},1\””,
“id”: “01AJOK3232323AIVCK2JLXBEOPXQJQ”,
“lastModifiedBy”: {
“user”: {
“id”: “9f63fb14-7abb-23”,
“displayName”: “Erdem Avni SELÇUK”
}
},
“lastModifiedDateTime”: “2017-03-10T15:22:19Z”,
“name”: “Attachments”,
“parentReference”: {
“driveId”: “b!HEtsxnNxM0q2322323223N1W7gsH44434VIigMBKVUheSqysX6EseqG9”,
“id”: “01AJOK3356Y2GOVW772334324234WSELRRZ”,
“path”: “/drive/root:”
},
“webUrl”: “https://profectsoft-my.sharepoint.com/personal/eravse_profectsoft_onmicrosoft_com/Documents/Attachments”,
“cTag”: “\”c:{D820D5A8-4016-234234234},0\””,
“fileSystemInfo”: {
“createdDateTime”: “2017-03-10T15:22:19Z”,
“lastModifiedDateTime”: “2017-03-10T15:22:19Z”
},
“folder”: {
“childCount”: 0
},
“size”: 0,
“specialFolder”: {
“name”: “attachments”
}
},
GET my photo https://graph.microsoft.com/v1.0/me/photo/$value
Office 365 üzerinden senkronize edilen kullanıcı resmini verir. Bu metod iki şekilde çalışabilir. Eğer sadece veri olarak elde etmek itiyorsanız End Point adresi sonundaki $value ibaresini kaldırarak post etmeniz yeterlidir. Eğer bu şekilde bir post yaparsanız aşağıdaki gibi bir sonuç elde edersiniz.
{
“@odata.context”: “https://graph.microsoft.com/v1.0/$metadata#users(‘9f63fb14-7abb-41c5-ba7f-b7469792d8c6’)/photo/$entity”,
“@odata.mediaContentType”: “image/jpeg”,
“@odata.mediaEtag”: “\”28D9D945\””,
“id”: “360X360”,
“height”: 360,
“width”: 360
}
Eğer bu methodu direk olarak çağırırsanız content type image jpg olarak size resminiz geri dönecektir.
GET my mail https://graph.microsoft.com/v1.0/me/messages
Maillerinizin tamamını okuyabileceğiniz bir arayüzü size sunan metoddur. Eskiden EWS ( Exchange Web Service ) ile geliştirme yapan arkadaşlarımızın kısmen aşina olduğu bilgileri içermekle beraber, tamamen değişmiş alanları da içermektedir.
Ben genel olarak bu metodu fazlaca kullanmaktayım. Özellikle SharePoint üzerinden gelen task ve duyuruları takip edebilmek için ekstra bir uygulama ile direk okuyarak işleme almaktayım.
Örnek Çıktı ;
{
“@odata.context”: “https://graph.microsoft.com/v1.0/$metadata#users(‘9f63fb14-7abb-41c5-ba7f-b7469792d8c6’)/messages”,
“@odata.nextLink”: “https://graph.microsoft.com/v1.0/me/messages?$skip=14”,
“value”: [
{
“@odata.etag”: “W/\”CQAAABYAAAAICWhYpz4aQa0owRI01ckmAAHxjol+\””,
“id”: ” _KsvRLpmQKAHP3Xltp8CBwAICWhYpz4aQa0owRI01ckmAAElp3BAAAAICWhYpz4aQa0owRI01ckmAAHwJeiuAAA=”,
“createdDateTime”: “2017-06-09T00:46:33Z”,
“lastModifiedDateTime”: “2017-06-11T04:30:00Z”,
“changeKey”: “CQAAABYAAAAICWhYpz4aQa0owRI01ckmAAHxjol+”,
“categories”: [],
“receivedDateTime”: “2017-06-09T00:46:33Z”,
“sentDateTime”: “2017-06-09T00:46:33Z”,
“hasAttachments”: false,
“internetMessageId”: ” @AM3PR06MB0994.eurprd06.prod.outlook.com>”,
“subject”: null,
“bodyPreview”: “\t\r\n\t\tErdem Avni SELÇUK Team Site\r\n\t\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\nDUYURULAR \r\n\t\t\t\tTümü\r\n\r\n \r\n\tYüksek \r\n\tNormal \r\n\tDüşük \r\n {{item.Title}} – {{item.Created | date:’dd-MM-yyyy HH:mm’ }}\r\n\r\nDUYURULAR\r\n\r\nDOĞUM GÜNLERİ \r\n\t\t\t\tTümü\r\n\r\n{{dogumGunu.Ya_x01″,
“importance”: “normal”,
“parentFolderId”: ” _KsvRLpmQKAHP3Xltp8CAQAICWhYpz4aQa0owRI01ckmAAElp3BAAAA=”,
“conversationId”: ” =”,
“isDeliveryReceiptRequested”: null,
“isReadReceiptRequested”: false,
“isRead”: true,
“isDraft”: true,
“webLink”: “https://outlook.office365.com/owa/?ItemID=AAMkADYzYTM4ZjI2LTFmZmMtNGQ1ZS05ZmZlLWI4MzEzM2UzN2I5MQBGAAAAAABS%%3D&exvsurl=1&viewmodel=ReadMessageItem”,
“inferenceClassification”: “focused”,
“body”: {
“contentType”: “text”,
“content”: “\r\n\r\n\r\n\r\n\r\n\t\r\n\t\tErdem Avni SELÇUK Team Site\r\n\t\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\nDUYURULAR \r\n\t\t\t\tTümü\r\n\r\n \r\n\tYüksek \r\n\tNormal \r\n\tDüşük \r\n {{item.Title}} – {{item.Created | date:’dd-MM-yyyy HH:mm’ }}\r\n\r\nDUYURULAR\r\n\r\nDOĞUM GÜNLERİ \r\n\t\t\t\tTümü\r\n\r\n{{dogumGunu.Ya_x015f_ | number}}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t{{dogumGunu.Title}}\r\n\r\nDepartman : \r\n\t\t\t\t\t\t\t\t\t\tCarregando \r\n\r\nDUYURULAR\r\n\r\nDUYURULAR\r\n\r\nHava Durumu\r\n\r\n BURSA\r\n {{date | date:’dd-MM-yyyy HH:mm’}}\r\n{{havadurumu.main.temp}}°\r\n{{havadurumu.wind.speed}} km/h {{havadurumu.wind.deg}}° \r\n\r\n\r\n”
},
“toRecipients”: [],
“ccRecipients”: [],
“bccRecipients”: [],
“replyTo”: []
},
Yukarıda anlattığımız en çok kullanılan metodlardan bazıları idi. Bu methodların ve daha fazlasını https://developer.microsoft.com/en-us/graph/docs/concepts/featured_scenarios adresinden elde edebilirsiniz.
Microsoft Graph API ye bir sonraki konumuz Uygulama Kayıt ile devam edeceğiz.
Faydalı olması dileği ile.