如何在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來展示效果。

實踐展示

效果截圖

在這裏插入圖片描述
上邊的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來實現。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章