Office 365 Connectors 的使用与自定义开发

时间:2023-02-02 20:31:32

前言

我相信很多人都看过《三国演义》,里面有很多引人入胜的故事和栩栩如生的人物,对我而言,曹操手下的一员猛将典韦实在让我印象深刻。例如,书中有一段描写典韦的作战经历:

时西面又急,韦进当之,贼弓弩乱发,矢至如雨,韦不视,谓等人曰:“虏来十步,乃白之。”等人曰:“十步矣。”又曰:“五步乃白。”等人惧,疾言“虏至矣”!韦手持十余戟,大呼起,所抵无不应手倒者。布众退。

箭如雨下喊声四起,典韦以寡敌众,“贼至五步乃呼我”,如狼似虎,连吕布都要避其锋芒。我今天在写这篇文章时,又不由得联想起来这个让人血脉喷张的画面。Office 365 Connector正是一个有意思的类似场景,而且它也属于Office 365 开发四场场景之一,如下图所示:

Office 365 Connectors 的使用与自定义开发

它通常是在Office 365应用程序内部(目前支持Office 365 Group,Yammer和Microsoft Teams)中需要接收外部系统的一些通知消息时,能够以一种灵活的方式来连接起来。所以,它的中文名称就是“连接器”,换言之,当用户关注的某些业务系统(或者任何消息源)有一些新的状态,他可以自动地得到通知。

本文将包括如下的内容

  1. 在Office 365 Group中使用Office 365 Connectors
  2. 在Yammer中使用Office 365 Connectors
  3. 在Microsoft Teams中使用Office 365 Connectors
  4. 自定义Office 365 Connectors

在Office 365 Group中使用Office 365 Connectors

这是Office 365 Connectors最早的使用场景,用户可以自己在Outlook客户端,或者OWA中进行配置,并且通过邮件的方式得到通知。

关于Office 365 Group的详细信息,请参考 https://support.office.com/zh-cn/article/%E4%BA%86%E8%A7%A3%E6%9C%89%E5%85%B3-office-365-%E7%BB%84-b565caa1-5c40-40ef-9915-60fdb2d97fa2?ui=zh-CN&rs=zh-CN&ad=CN

下图展示了在Outlook中添加连接器的界面:

Office 365 Connectors 的使用与自定义开发

图中的“连接线”翻译不准确,应该为“连接器”

下图展示了在OWA中添加连接器的界面:

Office 365 Connectors 的使用与自定义开发

目前内置提供了超过100个连接器,包括很多企业级应用平台,也包括了很多互联网应用。下面演示一个从Github上面获取通知的连接器配置和使用效果。

Office 365 Connectors 的使用与自定义开发

点击第一个“添加”按钮,然后在下图中配置你的Github账号(通常会弹出一个登陆框,请你输入用户名和密码)

Office 365 Connectors 的使用与自定义开发

在这个界面中选择你要关联的代码库(repositories),并且勾选想要用来接收通知的事件,然后点击“保存”即可。

Office 365 Connectors 的使用与自定义开发

你会在“连接测试组”中收到一个配置成功的邮件:

Office 365 Connectors 的使用与自定义开发

下面我可以尝试往这个代码库提交一次更新,我们可以很快在连接器测试组中看到一个推送的通知。

Office 365 Connectors 的使用与自定义开发

在Yammer中使用Office 365 Connectors

Yammer是Office 365中的一个企业级社交网络,你可以根据需要创建各种各样的群组(Yammer Group),讨论不同的话题。在Yammer群组中,你也可以通过在“组操作”中选择“添加或删除应用”这个操作,如下图所示

Office 365 Connectors 的使用与自定义开发

这里显示的连接器列表其实跟在Outlook里面看到的是一样的

Office 365 Connectors 的使用与自定义开发

本例演示添加“RSS”这个连接器,例如我关注Office 产品组的更新博客,就可以通过下面的方式订阅他们的RSS feed

Office 365 Connectors 的使用与自定义开发

点击“保存”后,会在Yammer群组中看到一个通知

Office 365 Connectors 的使用与自定义开发

在设定的时间,RSS引擎会把博客链接发送到Yammer群组中来

Office 365 Connectors 的使用与自定义开发

在Microsoft Teams中使用Office 365 Connectors

Microsoft Teams是Office 365 Connectors另外一个使用场景,它的用法略有不同:它是在频道中添加连接器的,一个团队可以有多个频道,一个频道有可以添加多个连接器,这样就带来了更加灵活的可能性。

选择某个团队的某个频道,在它右侧的“...”菜单中选择“连接器”,你可以看到跟之前很类似的一个界面

Office 365 Connectors 的使用与自定义开发

在本例中,我演示的是如何配置Yammer这个连接器以便在Teams中能收到Yammer讨论组的消息。

和Github类似,添加Yammer这个连接器后,要进行详细的配置,如下图所示

Office 365 Connectors 的使用与自定义开发

你可以设置要关注的组,事件类型,关注的用户和关键字,以及通知的频率等等,保存后,当Yammer组有状态更新时,在频道里面就可以收到通知:

Office 365 Connectors 的使用与自定义开发

在这里可以直接点赞,或者回复,不过似乎这些还不能双向地同步到Yammer里面来。

自定义Office 365 Connectors

上面演示了使用Office 365 Connectors的场景(Outlook,Yammer,Microsoft Teams),我们都是使用目前内置的Connectors,那么如果我们自己有一个应用系统,也想通过这种方式进行连接(在必要的时候推送消息和更新动态),应该怎么来做呢?这方面,目前Office 365平台提供了三种机制。

首先,对于一些简单的场景,你可以直接使用“Incoming Webhook”这个内置的连接器来定义,如下图所示

Office 365 Connectors 的使用与自定义开发

通常你只需要提供一个名称即可完成连接器的定义

Office 365 Connectors 的使用与自定义开发

点击“创建”,会产生一个Url,这就是可以用来推送消息的地址了

Office 365 Connectors 的使用与自定义开发

那么,如何使用这个自定义的连接器呢?很简单,我们只要在应用程序内部,通过Post的方法,给这个地址发送消息即可。通常的代码如下:

using System;
using System.Net.Http; namespace connectorconsole
{
class Program
{
static void Main(string[] args)
{ var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,"https://outlook.office.com/webhook/f2bde2a5-8459-4acd-b92c-c55947422146@72f988bf-86f1-41af-91ab-2d7cd011db47/IncomingWebhook/9bc2989885fe475fa3d5578796f7dd05/f3b94dd3-20cc-49a3-98ce-b1287658e8cf");
request.Content = new StringContent("{\"text\":\"通过程序推送的消息\"}");
client.SendAsync(request); Console.Read();
}
}
}

运行这个小程序,就可以在目标应用中收到一个通知的消息,如下图所示

Office 365 Connectors 的使用与自定义开发

如果只是作为测试,你甚至都无需写代码,而是使用一些工具来发起请求,例如Fiddler,Postman,curl等,这里就不演示了。

以上这种场景特别适合于简单的环境,并不适合于大规模分发使用,因为这个地址是要用户来生成的,然后再告诉开发人员,而且这个地址每次生成都是不一样的。如果想要更好地解决这个问题,例如你可以做一个自己的连接器,让尽可能多的用户去使用它,那么是时候考虑真正地自定义一个连接器。

你需要使用Office 365账号登录 https://outlook.office.com/connectors/publish 来创建一个自定义的连接器,如下图所示

Office 365 Connectors 的使用与自定义开发

这个页面中的关键信息是Redirect Urls这个地址,然后你可以看到目前它仅支持Outlook和Microsoft Teams,暂时不支持Yammer。

点击“保存”后,接下来就可以进行测试了。值得说明的是,你需要准备一个用来响应用户请求的网站,例如本例我会用本地运行的一个站点做演示(http://localhost:5000)

我用了dotnet core创建了一个最简单的网站,用来响应用户的关联请求,并且将用户相关信息打印出来(真实场景下会将这些信息保存起来,用来推送消息)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System.Text;
using System.Net.Http; namespace connectorhost
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.Run(async (context) =>
{
//打印出来用户关联信息
var sb = new StringBuilder();
foreach (var item in context.Request.Query)
{
sb.AppendLine($"{item.Key}={item.Value}");
}
await context.Response.WriteAsync(sb.ToString()); //推送一个欢迎消息
var url = context.Request.Query["webhook_url"];
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,url);
request.Content = new StringContent("{\"text\":\"欢迎关联我的连接器,你将会收到很多消息推送\"}");
await client.SendAsync(request); });
}
}
}

为了让用户可以关联我们开发的自定义连接器,你可以在注册连接器的页面上,点击"Copy code",如下图所示

Office 365 Connectors 的使用与自定义开发

然后将复制得到的代码,保存为一个html文件,在浏览器中打开它的效果如下

Office 365 Connectors 的使用与自定义开发

你可以将这段代码嵌入到任意网站中去

用户点击页面上这个“Connect to Office 365”的按钮后,会被要求登录Office 365,然后可以选择Outlook中的收件箱或者组来进行关联

Office 365 Connectors 的使用与自定义开发

点击“Allow”后,Office 365后台做好必要的处理后,页面会被重定向到注册时提供的Redirect Urls(我演示的例子是 http://localhost:5000)

Office 365 Connectors 的使用与自定义开发

与此同时,在对应的组中,也立即收到了一个欢迎消息

Office 365 Connectors 的使用与自定义开发

这样就完成了一个开发人员自定义连接器,用户自行关联连接器的流程。连接器的宿主应用程序,可以把用户的信息保存起来,然后再在必要的时候给用户推送消息。

最后,如果你希望将你的自定义连接器发布给全世界所有的Office 365用户去使用,则需要发布到微软的Office 365 Connectors商店中去,你可以在注册页面中点击“Publish to store”按钮

Office 365 Connectors 的使用与自定义开发

你按照需要填写信息,然后“submit”即可

Office 365 Connectors 的使用与自定义开发

Office 365 Connectors 的使用与自定义开发的更多相关文章

  1. Office 365也是.NET Core应用开发新战场

    最近有幸阅读了陈希章花了一年时间为国内开发者贡献的<Office 365 开发入门指南>. 虽然早期接触过SharePoint的开发,2007年之后就再也没有接触SharePoint的开发 ...

  2. Office 365 – SharePoint 2013 Online 之WebPart开发、部署教程

    1.打开Visual Studio,新建一个项目,选择SharePoint空项目,如下图: 2.选择调试站点和沙盒解决方案,如下图: 3.在项目中,添加一个WebPart,如下图: 4.添加完毕的项目 ...

  3. Office 365开发概述及生态环境介绍(二)

    本文于2017年3月19日首发于LinkedIn,原文链接在这里 在上一篇 文章,我给大家回顾了Office发展过来的一些主要的版本(XP,2003,2007,2013等),以及在Office客户端中 ...

  4. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...

  5. Office 365 机器人(Bot)开发入门指南 &lpar;新篇&rpar;

    最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...

  6. Office 365开发概述及生态环境介绍(一)

    原文于2017年3月13日首发于LinkedIn,请参考这个链接 离上一篇文章,很快又过去了两星期的时间.今天抓紧晚上的时间,开始了Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去O ...

  7. Python在Office 365 开发中的应用

    我在昨天发布的文章 -- 简明 Python 教程:人生苦短,快用Python -- 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特 ...

  8. &lbrack; Office 365 开发系列 &rsqb; 身份认证

    前言 本文完全原创,转载请说明出处,希望对大家有用. 通常我们在开发一个应用时,需要考虑用户身份认证及授权,Office 365使用AAD(Azure Active Directory)作为其认证机构 ...

  9. Office 365 - SharePoint 2013 Online 之应用程序开发

    1.给站点添加完Napa后,在网站内容里点击Napa,如下图: 2.创建一个新的app,如下图: 3.可以在Napa里添加新的项目,如下图: 4.添加新的文件,可以添加web页面.样式表.脚本,如下图 ...

随机推荐

  1. The C Programming Language Exercise

    1-9 : Write a program to copy its input to its output, replacing each string of one or more blanks b ...

  2. C&num;读取设置Cookie

    设置: HttpCookie cookie = new HttpCookie("cookieName"); cookie.Value = "name1" Htt ...

  3. 2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  4. 【POJ3691】 DNA repair (AC自动机&plus;DP)

    DNA repair Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Description B ...

  5. adb Monkey用法

    以这条Monkey指令为例: #monkey -s --throttle -p com.android.cameraswitch -- 这条monkey指令是测试:在camera模块中产生1万次伪随机 ...

  6. oracle数据泵之解决方案(用户)导入导出。

    看到网上有这样的介绍而且很多,但觉得都是大神才能一下子看的懂.自己总结下菜鸟能看懂的. 1.导出. 首先第一步: 操作系统—开始—运行输入“cmd”进入dos界面输入“sqlplus/nolog”按回 ...

  7. Android中的windowSoftInputMode属性详解

    这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下     在前面的一篇文章中 ...

  8. bzoj1853&lbrack;Scoi2010&rsqb;幸运数字 容斥

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 3027  Solved: 1128[Submit][Status ...

  9. Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并

    # 以下内容为原创,转载请注明出处 1 import xlrd # 读xlsx import xlsxwriter # 写xlsx import urllib.request # url请求,Pyth ...

  10. &lbrack; java 工具类&rsqb; xml字符串解析成Map&lpar;DOM解析&rpar;

    package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Docum ...