在Teams中对网站的URL特殊解析

Teams中有一个不太被大家注意的扩展点,名字叫Link unfurling,就是对于一些特殊域名的URL进行特别的解释。

可能这么说,大家还是无法理解,我们看一下下面这个图,当用户在message输入框中输入了一窜url后,Teams会按照自己本身的一种规则来对URL指定的网页产生预览。但是如果你想要生成你自己的特殊的预览卡片的话,就需要这种扩展了。

Teams

一说到时间,就会联想到时区,夏令时等头痛的问题,不同国家有不同国家的规定。如果你希望你的Teams Bot可以判断出当前用户所在的时区,从而可以针对性的进行一些处理时,你要做好心理准备,这个复杂程度远远超过你的想象。因为一个用户这次在一个时区内登入Teams,下一次可能就在另一个时区了。

怎么做呢?很简单,两步,首先现在你的app的manifest文件中申请一下你的bot可以支持这种功能,值得一提的是,你可以同时指定多个域名哦。


"composeExtensions": [{"botId": "abc123456-ab12-ab12-ab12-abcdef123456","messageHandlers": [{"type": "link","value": {"domains": ["*.specialdomain.com"]}}]}
],

如果你使用App Studio,也可以。在Message Extension页里,找到Message Handlers,然后就可以一个个的添加你的预览的域名。

第二步,你需要让你的bot能够处理“composeExtension/queryLink”这种命令。

如果你使用的是C#,代码类似于:

protected override async Task<MessagingExtensionResponse> OnTeamsAppBasedLinkQueryAsync(ITurnContext<IInvokeActivity> turnContext, AppBasedLinkQuery query, CancellationToken cancellationToken)
{// 访问query.link来分析这个网页var card = new ThumbnailCard{Title = "你所希望显示的标题",Text = "你所希望显示的文字",Images = new List<CardImage> { new CardImage("https://yourimages.com/yourimage.png") },};var attachments = new MessagingExtensionAttachment(HeroCard.ContentType, null, card);var result = new MessagingExtensionResult(AttachmentLayoutTypes.List, "result", new[] { attachments }, null, "mytest");return new MessagingExtensionResponse(result);
}

如果使用的是nodejs:

class TeamsLinkUnfurlingBot extends TeamsActivityHandler {handleTeamsAppBasedLinkQuery(context, query) {// 访问query.url来分析这个网页const attachment = CardFactory.thumbnailCard('你所希望显示的标题',query.url,['https://yourimages.com/yourimage.png']);const result = {attachmentLayout: 'list',type: 'result',attachments: [attachment]};const response = {composeExtension: result};return response;}
}

当前版本的Teams并不支持所有的卡片格式,到写这篇博客为止只支持以下几种:

  • Hero card
  • Thumbnail card
  • Adaptive Card
  • Office 365 Connector card

赶快写一个你的app试试看吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wireshark 在Windows下的安装

1、wireshark官网地址&#xff1a;https&#xff1a;//www.wireshark.ort/ 下载抓包驱动&#xff1a;windows使用winpcap&#xff0c;Linux使用libcap2、安装下载好的wireshark程序包&#xff1a;3、安装winpcap插件&#xff1a;4、安装USBPcap插件&#xff1a;5、安装完成&…

OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单&#xff08;2018&#xff09;请戳&#xff08;这里&#xff09; 【今日歌曲】 焕焕 &#xff1a;分享郑秀文的单曲《唉声叹气》 《唉声叹气》 手机党少年们想听歌&#xff0c;请使劲儿戳&#xff08;这里&am…

LuckyDraw app被评为Microsoft365 App Award

今天查了一下LuckyDraw app&#xff0c;突然发现我上半年开发的Teams app: LuckyDraw&#xff0c;竟然多了一个勋章图标&#xff0c;点进去一看是微软给我的app评了一个”Microsoft 365 App Award”。Super surprise!!&#x1f60d;&#x1f60d;&#x1f60d; 看来我必须要抓…

Teams架构剖析(2019年版本)

在上个月刚刚结束的Ignite大会上&#xff0c;Teams产品的架构师Bill Bliss给大家奉上了最新的Teams的架构设计&#xff0c;之前2017年和2018年微软的技术大会上都Teams架构的分享&#xff0c;但是今年大神把Teams架构讲得很深入&#xff0c;覆盖面很广。我这里就挑一些&#xf…

pycharm工具下代码下面显示波浪线的去处方法

近期安装了python后&#xff0c;发现使用pycharm工具打开代码后发现代码下边会有波浪线的显示&#xff1b;但是该代码语句确实没有错误&#xff0c;通过查询发现了两种方法去掉该波纹的显示&#xff0c;下面就具体说明一下&#xff1a; 方法一&#xff1a; 打开pycharm在右下方…

js面向对象与PHP面向对象总结

js面向对象&#xff1a; 1.什么是对象&#xff1f; 对象&#xff1a;任何实体都是对象&#xff0c;拥有属性和方法两大特征 属性&#xff1a;描述事物的特点&#xff1b; 方法&#xff1a;实物拥有的行为&#xff1b; 2.在JS里 Person.name"zhang" Person.fnfunction…

Dubbo原理与框架设计

Dubbo是常用的开源服务治理型RPC框架&#xff0c;在之前osgi框架下不同bundle之间的方法调用时用到过。其工作原理和框架设计值得开源技术爱好者学习和研究。 一、Dubbo的工作原理 调用关系说明 服务容器负责启动&#xff0c;加载&#xff0c;运行服务提供者。服务提供者在启动…

面向全球用户的Teams app之Culture计量单位和禁忌篇

我在前一篇文章里分享了Global Ready的app时会遇到的不同文化对于数字方面的挑战。这篇我继续分享不同文化对于计量单位和禁忌方面的挑战。 我们先来看一个例子&#xff0c;假如有一个teams bot&#xff0c;它告诉你一些动物的速度&#xff0c;比如它告诉你&#xff1a; 猎豹能…

【我的Android进阶之旅】Android自定义Lint实践

背景 2017年8月份的时候&#xff0c;我在公司开始推广Lint、FindBugs等静态代码检测工具。然后发现系统自带的Lint检测的Issue不满足我们团队内部的特定需求&#xff0c;因此去自定义了部分Lint规则。这个检测运行了大半年&#xff0c;运行良好&#xff0c;团队的代码规范也有了…

存储结构与索引

一、SQL数据存储的基本介绍 数据库中的数据存储涉及页&#xff08;Page&#xff09;和区&#xff08;Extent)这两个概念了。SQL server中数据存储的基本单位是页。为数据库中的数据文件&#xff08;.mdf或.ndf&#xff09;分配的磁盘空间可以从逻辑上划分成页&#xff08;从0到…

面向全球用户的Teams app之时区篇

我在前两篇文章里分享了Global Ready的app时会遇到的不同文化的挑战。这篇我继续分享在时区方面的挑战。 时间是最复杂的&#xff0c;最容易出错的部分。时间复杂的最根本原因是时区问题。 首先&#xff0c;大家都知道&#xff0c;我们地球是圆的&#xff0c;这个意味着如果大…

Linux: Nginx proxy_pass域名解析引发的故障

背景 业务架构&#xff1a; 部署细节&#xff1a;  两容器均部署在同一机器上&#xff0c;通过 docker-compose 编排&#xff0c;并且通过link方式链接。 故障描述 在有次更新代码时&#xff0c;发现前端能够打开&#xff0c;但是所有接口请求全是502(Bad GateWay) 故障排查 …

Oracle建立全文索引详解

Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能&#xff0c;当然也有很多方法可以在Oracle数据库中搜索文本&#xff0c;比如INSTR函数和LIKE操作&#xff1a; SELECT *FROM mytext WHERE INSTR (thetext, Oracle) > 0; SELECT * FROM mytext WHE…

面向全球用户的Teams app之夏令时篇

我在前两篇文章里分享了Global Ready的teams app时会遇到的不同挑战。这篇我继续分享在夏令时方面的挑战。 夏令时&#xff0c;主要是为了节约能源&#xff0c;英文里通常缩写成DST(Daylight Saving Time)。一般在天亮早的夏季人为将时间调快一小时&#xff0c;可以使人早起早…

面向全球用户的Teams app之合规性篇

我在前两篇文章里分享了Global Ready的app时会遇到的不同挑战。这篇我继续分享在合规性方面的挑战。 说到合规性compliance&#xff0c;不得不说GDPR标准&#xff0c;当我们发布了一个teams app后&#xff0c;微软会要求开发人员做一个security self assessment&#xff0c;这…

行内元素中去掉文字的上下间距,使得文字所在元素的高度同字体高度一致的方法...

之前在p这类块元素中的文字&#xff0c;给line-hight1;就可以去掉文字自带的上下间距&#xff0c; 像这样&#xff1a; 最近突然发现这个方法在行内块和块元素上好使&#xff0c;可当用在span或者a这类内联元素上都不好使&#xff0c;除了转为块元素的方法来去掉上下间距&#…

VSCode的Teams插件

随着今年在线的Build大会的结束&#xff0c;又是一大波的 Teams 新功能&#xff0c;新工具&#xff0c;新SDK。我接下来几篇博客就会详细和大家一一介绍。我今天先从VSCode的插件开始。 打开VS Code&#xff0c;搜索Teams&#xff0c;就可以找到Microsoft Teams Toolkit插件&a…

使用Flow快速开发Teams小应用

继续我的上一篇博客&#xff0c;这篇继续介绍BUILD大会里的内容&#xff1a;Flow。 Flow是微软power平台的一个服务&#xff0c;通过简单的拖拽就可以完成一个业务逻辑的处理&#xff0c;现在Flow和Teams的结合十分紧密。我们来试一下。 先点击Teams左边的Flow菜单。 如果你的…

python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转

正则表达式&#xff1a;  [\u2E80-\u9FFF]$ 匹配所有东亚区的语言   [\u4E00-\u9FFF]$ 匹配简体和繁体   [\u4E00-\u9FA5]$ 匹配简体   <input type"text" name"username" οnkeyup"valuevalue.replace([\u4E00-\u9FA5]$)"> 正则表…

【区块链】认识区块链的基本概念

2018年区块链技术风卷全球&#xff0c;似乎大家都在谈论区块链&#xff0c;那到底什么区块链&#xff0c;区块链到底能干什么&#xff0c;对普通人会有什么影响&#xff0c;很多人还是稀里糊涂&#xff0c;那么就谈谈我的一些理解吧&#xff0c;抛砖引玉欢迎探讨。 我是如何接触…