如何在Teams使用DeepLink to chat?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/beastboy/article/details/102743530

写在前边

之前写过一篇文章【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来实现。

今天就跟大家分享到这里,以后有更多场景的话,再跟大家分享。

猜你喜欢

转载自blog.csdn.net/beastboy/article/details/102743530