為部落格園文章添加 「分享到Teams」按鈕
本文是《Microsoft Teams平台完全手冊》的一部分,有興趣請參考 //teamsplatform.code365.xyz
Microsoft Teams是一個圍繞溝通協作的平台,資訊分享是很重要的。那麼,如果你有一個網站,如何讓你的用戶很容易地將網站內容分享到Teams呢?
下面通過實例講解如何實現這個目的。熟悉我的朋友可能知道,我長期撰寫技術部落格,而部落格園也是我認為中國做的很不錯的部落格平台,默認情況,目前部落格園提供的模板中已經包含了一些分享的能力,包括分享到微博、微信等。下面我嘗試為它添加分享到Teams的功能。

Microsoft Teams提供了一個專門的庫,可以很容易地生成分享按鈕。下面的完整程式碼,請大家參考一下,其實邏輯很簡單,我在現有分享工具欄的前面插入了一個按鈕,並且按照規定定義了有關的屬性。
<!--概要:在部落格園的部落格頁面底部增加「分享到Teams」的按鈕作者:陳希章來源:《Microsoft Teams 平台完全手冊》網址://teamsplatform.code365.xyz--><!--引入Teams的分享腳本庫--><scriptasyncdefersrc="//teams.microsoft.com/share/launcher.js"></script><!--定義合適的樣式--><style>.divblock {padding: 10px;border: #c0c0c0 1px dashed;display: table-cell;vertical-align: middle;}</style><!--在頁面的合適位置放置這個按鈕--><script>document.getElementById("green_channel").setAttribute("class", "divblock");let sharebutton = document.createElement("div");sharebutton.id = "green_channel_teams";<!--這個屬性很重要,決定了分享時提供給Teams的網頁鏈接-->sharebutton.setAttribute("data-href", window.location.href);<!--這個按鈕必須至少有teams-share-button 這個樣式 -->sharebutton.setAttribute("class", "divblock teams-share-button");<!--你可以通過屬性設置分享的一些輔助文字說明-->sharebutton.setAttribute("data-msg-text", "分享好文章:"+ document.title +" <br /> ");document.getElementById("blog_post_info").insertBefore(sharebutton, document.getElementById("green_channel"));shareToMicrosoftTeams.renderButtons();document.getElementById("green_channel_teams").getElementsByTagName("img")[0].style.marginTop = "10px";</script>
現在可以把這段程式碼添加到我的部落格後台設置中,請注意要添加到 「部落格側邊欄公告」 這個區域,只有這裡是允許JS程式碼的。

保存後,打開某個文章,就可以看到下方分享欄會多出來一個Teams的按鈕。

點擊此按鈕,會自動彈出一個對話框,並且把相關文字和鏈接都按照規定組合好,你只需要在「共享到」這個框中搜索團隊或頻道,然後點擊 「共享」按鈕即可。

如果當前沒有登錄Teams,則在顯示分享對話框前會提示用戶登錄。
在分享到Teams時,會嘗試進行網頁的預覽(如上圖所示,通過鏈接可以解析得到標題和內容簡介),以便給用戶更加好的體驗。那麼這個是怎麼實現的呢?
其實這個很簡單的,你的網頁只要按照下面的約定在Head中定義元數據即可。

考慮到對搜索引擎和不同平台的兼容性,我的建議是兩個版本都定義。如果兩者都定義了,Teams會以Open Graph定義的為準。
我們回過頭去看剛才分享的部落格園文章源程式碼

可以看出當前網頁定義了title, description,og:description, 所以在分享時能解析出標題和描述,但沒有定義縮略圖,而且定義標題和內容摘要也不是特別規範。
感謝部落格園提供的平台,以及允許自定義頁面的能力。如果默認能把「分享到Teams」的按鈕加上,並且在網頁元數據這個部分能夠規範一點就更好了。

