天天看點

如何在Teams使用DeepLink to chat?

寫在前邊

之前寫過一篇文章【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來指定,有哪些參數呢?

  1. user1,user2都是chat裡參與人員的upn,也就是userPrincipalName,說白了大多數情況下就是使用者郵箱。
  2. topicName參數,這是可選的一個參數,指定群聊的名稱。如果聊天參與者多于3個人,那麼如果這個字段不指定,群聊名稱會根據參與人員的名稱自動生成。
  3. message,這也是個可選字段,會自動帶到聊天界面的消息輸入框裡。

另外,從文檔來看:如果Task Module是打開的一個url,那麼這個deep link就可以直接放在頁面裡。如果Task Module是個Card,可以作為一個openUrl類型button的連結。

下邊我們就拿打開url的Task Module來展示效果。

實踐展示

效果截圖

如何在Teams使用DeepLink to chat?

上邊的Chat按鈕實際上就是我們通過參數構造起來的DeepLink連結,打開chat。

Code

如何在Teams使用DeepLink to chat?
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也有了,點選以後什麼效果呢?

跳轉到聊天界面效果

如何在Teams使用DeepLink to chat?

這裡就是把第三個參數message的值帶過來了。

總結

以上就是如果構造一個到chat的DeepLink,其實真實場景中有很多類似的需求,點選一個button,可以跳轉到對應的地方,類似的需求如果沒有啥思路,都可以考慮用DeepLink來實作。

今天就跟大家分享到這裡,以後有更多場景的話,再跟大家分享。