给Teams消息附加图片的三种方式

Teams消息支持三种不同的方式来添加图片,这篇文章我们来一起看一下这三种方式。

  1. Inline图片
var imagePath = Path.Combine(Environment.CurrentDirectory, "abc.png");
var imageData = Convert.ToBase64String(File.ReadAllBytes(imagePath));
var image = new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = $"data:image/png;base64,{imageData}",
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

可以看到这种方式讲图片内嵌到消息里,使用base64的方式来对图片进行编码,在url字段,把编后的base64字符串附加到“data:image/png;base64,”后面。

这种方式适合文件大小较小的图片,因为base64编码本身就会把数据扩大三分之一左右,如果一个图片有600kb,那base64之后,这条消息就起码有800kb多了。

  1. 上传图片到服务器
var imagePath = Path.Combine(Environment.CurrentDirectory, "abc.png");var connector = turnContext.TurnState.Get<IConnectorClient>() as ConnectorClient;var attachments = new Attachments(connector);var response = await attachments.Client.Conversations.UploadAttachmentAsync(conversationId,new AttachmentData{Name = @"Resources\abc.png",OriginalBase64 = File.ReadAllBytes(imagePath),Type = "image/png",},cancellationToken);var attachmentUri = attachments.GetAttachmentUri(response.Id);var image = new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = attachmentUri,
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

在这种方式下,先将本地的图片文件上传到conversation里,拿到返回的图片uri,然后在 attachment 的 ContentUrl 里指定图片的url。这种方式是我个人比较推荐的方式。当然这个图片也可以不在本地计算机里,也可以是互联网上的某张图片,我们先把图片下载下来,拿到图片的内容后,就可以调用 UploadAttachmentAsync() 来进行上传了。

  1. 直接使用网上的图片url
var image new Attachment
{Name = @"Resources\abc.png",ContentType = "image/png",ContentUrl = "https://www.blablabla.com/abc.png",
};reply = MessageFactory.Text("Hello world");
reply.Attachments = new List<Attachment>() { image };

可以看到这种方式和第二种的最后一段很像,实际上第二种方式就是多了一步上传过程,拿到上传的图片url后,就和这第三种方式是一样的了。

那我为什么不推荐这种方式呢?因为这种方式实际上是让teams来自己去从网上download那张图片,但是如果teams没有权限访问那个图片url,那虽然这条消息可以发送成共,但是当用户查看这条消息的时候,就会无法显示图片。但第三种方式也有优点,如果这个图片会改变,那用户就能每次看到不同的内容了。

看完这三种方法后,我相信大家已经知道在什么场景下选择什么图片了。 :)

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

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

相关文章

4月18日 MySQL学习

正式开始了数据库的学习 昨天下好的MySQL 今天正式开始学习的&#xff0c;介绍了多种数据库软件&#xff0c;当然 学习的这个是开源的 免费的。 DBMS(数据库管理系统)这就是我们学习的数据库的软件 数据库分为关系型数据库管理系统和非关系型数据库管理系统(没有深入的了解) 今…

企业数据湖构建之旅

摘要&#xff1a;随着互联网的发展&#xff0c;数据的规模和类型都呈现一个爆炸性的增长&#xff0c;对于这么多类型的数据&#xff0c;如何进行有效的管理和存储&#xff0c;包括数据的分析&#xff0c;这是大家要面临的一个问题。在武汉云栖大会上&#xff0c;阿里云高级产品…

用AzureFunction开发最简单的Teams Bot

之前我有一篇文章讲了如何在azure function上开发最简单的outgoing webhook&#xff0c;收到一些反馈&#xff0c;建议我介绍一下如果在azure function上开发teams bot&#xff0c;那这篇文章就来讲一下如何用function来快速开发bot。 我们先创建一个azure function资源&#…

20189215 2018-2019-2 《密码与安全新技术专题》第7周作业

课程&#xff1a;《密码与安全新技术专题》 班级&#xff1a; 1892班 姓名&#xff1a; 李炀 学号&#xff1a;20189215 上课教师&#xff1a;谢四江 上课日期&#xff1a;2019年4月9日 必修/选修&#xff1a; 选修 1.本次讲座的学习总结 讲座主题&#xff1a;信息隐藏 信息隐藏…

BZOJ1565[NOI2009]植物大战僵尸——最大权闭合子图+拓扑排序

题目描述 Plants vs. Zombies&#xff08;PVZ&#xff09;是最近十分风靡的一款小游戏。Plants&#xff08;植物&#xff09;和Zombies&#xff08;僵尸&#xff09;是游戏的主角&#xff0c;其中Plants防守&#xff0c;而Zombies进攻。该款游戏包含多种不同的挑战系列&#xf…

推送ActivityFeed到Teams

几个月前&#xff0c;Teams 团队又推出了新的 Graph API&#xff0c;让 app 可以给用户发送 Activity Feed。我们来看看如何做。 首先&#xff0c;我们的app需要使用较新的 manifest 1.7版本&#xff0c;当然如果使用最新的1.8版本就更好了。在manifest json中添加 webApplica…

RecycleView弹性滑动

还有点bug&#xff0c;建议使用 LinearSnapHelper rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrolled(NonNull RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);// …

关于深度学习,这些知识点你需要了解一下

深度学习概述 o 受限玻尔兹曼机和深度信念网络 o Dropout o 处理不平衡的技巧 o SMOTE&#xff1a;合成少数过采样技术 o 神经网络中对成本敏感的学习 深度学习概述 在2006年之前&#xff0c;训练深度监督前馈神经网络总是失败的&#xff0c;其主要原因都是导致…

发送不同类型的ActivityFeed

上一篇文章讲到了如何使用最新的Graph API来给一个用户发送一个简单的 Activity Feed。我们这篇文章来详细讲一下发送三种不同类型的消息。 发送 Chat 相关的 Activity Notification API 为 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification…

git add * 提示warning: LF will be replaced by CRLF in 解决办法

在使用git的时候&#xff0c;每次执行 $ git add * 都会提示这样一个警告消息&#xff1a; 虽然说没有什么影响吧。 不过就是觉得太碍眼了&#xff0c; 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了。 奋斗的年纪你…

git 放弃本地修改,强制拉取更新

开发时&#xff0c;对于本地的项目中修改不做保存操作&#xff08;或代码改崩&#xff09;&#xff0c;可以用到Git pull的强制覆盖&#xff0c;具体代码如下&#xff1a; git fetch --all git reset --hard origin/master git pull //可以省略 git fetch 指令是下载远程仓库最…

发送ActivityFeed的隐藏功能

前两篇文章介绍了如何发送 activity notification&#xff0c;这篇文章主要介绍两个隐藏功能&#xff0c;实际上所谓的隐藏功能是指大家在阅读官方文档是会忽略的两个点&#xff0c;但是实际上也是很实用的两个功能点。 text 类型的 topic 之前文章中提到我们的 activity not…

Dispatch Queue 之 Invoke 当前队列

&#xfffc; 转载于:https://www.cnblogs.com/huahuahu/p/dispatch-queue-zhi-invoke-dang-qian-dui-lie.html

js或jQuery获取当前屏幕的各种高度

Javascript: 网页可见区域宽&#xff1a; document.body.clientWidth 网页可见区域高&#xff1a; document.body.clientHeight 网页可见区域宽&#xff1a; document.body.offsetWidth (包括边线的宽) 网页可见区域高&#xff1a; document.body.offsetHeight (包括边线的高) …

Teams数据统计 - 用户在线离线状态

前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计&#xff0c;看上去很有大数据感。 实际上 Teams 也具备的类似的能力&#xff0c;只是它把这个能力开放给了开发人员&#xff0c;我们可以通过强大的 Graph API&#xff0c;获取大量的数据信息&…

我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

传统友商ERP的交付过程 一、先初步需求调研&#xff0c;后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研&#xff0c;客户方无论说什么&#xff0c;友商听过算过&#xff0c;只关心你人数多少&#xff0c;有哪些人涉及到哪些模块&#xff0c;接着对模块进行所谓…

HDU 4747 Mex

4747 思路&#xff1a; 线段树 先求出mex(1,1)&#xff0c; mex(1, 2) &#xff0c; mex(1,3)&#xff0c;...&#xff0c;mex(1&#xff0c;n)&#xff08;单调上升&#xff09;&#xff0c;先将这些mex放进线段树里求和 然后再求出next[i]表示下一次出现a[i] 的位置 然后从前…

Teams数据统计 - 通话记录

上篇文章介绍了如何获取用户的在线状态&#xff0c;这篇文章我们记录介绍如何统计用户通话记录。 首先&#xff0c;Teams为了安全&#xff0c;它要求 app 要有 CallRecords.Read.All 权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id}这…

linux下mysql的数据库简单备份脚本

应用于整个库的备份。 #!/bin/bash PATH$PATH:/usr/local/mysql/bin:/usr/local/mysql/sbin # 数据库名称 databases(myname) # 备份目录 basepath/home/databak/ cd $basepath if [ ! -d "$basepath" ]; thenmkdir -p "$basepath" fi#遍历数据库名称 for …

解决JS浮点数(小数)计算加减乘除的BUG

2019独角兽企业重金招聘Python工程师标准>>> //浮点数减法运算function FloatSub(arg1,arg2){var r1,r2,m,n;try{r1arg1.toString().split(".")[1].length}catch(e){r10}try{r2arg2.toString().split(".")[1].length}catch(e){r20}mMath.pow(10…