寫在前邊
之前寫過一篇文章【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來展示效果。
實踐展示
效果截圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csUTOtlFMOhVWspkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwETOwMTMzUTM1IDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
上邊的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來實作。
今天就跟大家分享到這裡,以後有更多場景的話,再跟大家分享。