寫在前邊
之前寫過一篇文章【https://blog.csdn.net/beastboy/article/details/94407659】,是關於Microsoft Teams裏Task Module的本地開發調試。
最近兩天又有朋友跟我提到了一個應用場景,也是真是碰到的場景。朋友的場景我們暫且不提,直接說我這邊給他的解釋,技術人員就直接進入正題看技術細節。
什麼需求呢?實際上就是在Task Module裏彈出窗口裏,需要有個類似button,點擊這個按鈕可以跳到對應聊天界面。
剛聽到這個需求,其實有點沒思路。因爲彈出框裏可能是個內嵌網頁,又或者是Adaptive Card。仔細一想,今年2月份出來的DeepLink就是創建各種teams裏的實體跳轉鏈接的,仔細看看文檔【https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/deep-links#deep-linking-to-a-chat】。
看完的結果,是可以的。先解釋,後實踐。
Deep link to chat的鏈接結構
https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>
可以看到,就是一個鏈接,參數通過QueryString來指定,有哪些參數呢?
- user1,user2都是chat裏參與人員的upn,也就是userPrincipalName,說白了大多數情況下就是用戶郵箱。
- topicName參數,這是可選的一個參數,指定羣聊的名稱。如果聊天參與者多於3個人,那麼如果這個字段不指定,羣聊名稱會根據參與人員的名稱自動生成。
- message,這也是個可選字段,會自動帶到聊天界面的消息輸入框裏。
另外,從文檔來看:如果Task Module是打開的一個url,那麼這個deep link就可以直接放在頁面裏。如果Task Module是個Card,可以作爲一個openUrl類型button的鏈接。
下邊我們就拿打開url的Task Module來展示效果。
實踐展示
效果截圖
上邊的Chat按鈕實際上就是我們通過參數構造起來的DeepLink鏈接,打開chat。
Code
function goToChat() {
// 根據官方文檔,這裏不帶參數來調用submitTask api,目的是關掉Task Module。
microsoftTeams.tasks.submitTask();
// 構建DeepLink To Chat的鏈接,這裏只是爲了說明構建方法,真實場景中這些可能都是動態的;
var chatLink = "https://teams.microsoft.com/l/chat/0/[email protected]&topicName=topicname&message=initMessage";
// 這裏一定要通過executeDeepLink方法來解析鏈接。
// 注意使用到的teams js sdk的版本,老版本可能沒有這個api,具體版本可以自行尋找,此處不贅述。
microsoftTeams.executeDeepLink(chatLink);
}
好了,以上鍊接已經構造好了,button也有了,點擊以後什麼效果呢?
跳轉到聊天界面效果
這裏就是把第三個參數message的值帶過來了。
總結
以上就是如果構造一個到chat的DeepLink,其實真實場景中有很多類似的需求,點擊一個button,可以跳轉到對應的地方,類似的需求如果沒有啥思路,都可以考慮用DeepLink來實現。
今天就跟大家分享到這裏,以後有更多場景的話,再跟大家分享。