webhook自定义服务器,创建传出 Webhook

创建传出 Webhook

2021/6/26

本文内容

传出 Webhook 充当自动程序,使用 @mention 在频道 中搜索消息。 它将通知发送到外部 Web 服务,并响应丰富的消息,其中包括卡片和图像。 它有助于跳过通过以下过程创建Microsoft Bot Framework。

传出 Webhook 的主要功能

下表提供了传出 Webhook 的功能和说明:

功能

说明

作用域配置

Webhook 的范围在团队级别。 每个项的必需设置过程会添加一个传出 Webhook。

反应消息

用户必须使用 @mention webhook 接收消息。 目前,用户只能在公共频道中发送传出 Webhook 消息,而不是在个人或专用范围内。

标准 HTTP 邮件交换

响应显示在与原始请求消息相同的链中,并且可以包含任何 Bot Framework 消息内容,例如格式文本、图像、卡片和表情符号。 尽管传出 Webhook 可以使用卡片,但除了 以外,它们不能使用任何卡片操作 openURL 。

TeamsAPI 方法支持

传出 Webhook 将 HTTP POST 发送到 Web 服务并获取响应。 他们无法访问任何其他 API,例如检索团队中名单或频道列表。

创建传出 Webhook

创建传出 Webhook,并添加自定义聊天机器人Teams。

创建传出 Webhook

Select Teams from the left pane. 将显示 Teams 页:

cae5b4ef376b587192ff634d7a27c7db.png

在 "Teams" 页中,选择创建传出 Webhook 所需的团队,然后选择 •••。 在下拉菜单中,选择"管理团队":

d3114019869c89170e17d3b3772fe318.png

选择频道 页面上 的"应用"选项卡:

1000e4e6816019544c9e5796f260adc0.png

选择 "创建传出 Webhook":

db3f1463ce43dd4781e2c64d4cfba18a.png

在"创建传出 Webhook"页中键入以下 详细信息:

名称:Webhook 标题和@mention选项卡。

回调 URL: 接受 JSON 有效负载并接收来自客户端的 POST 请求的 HTTPS Teams。

说明:显示在配置文件卡片和团队级应用仪表板中的详细字符串。

个人资料图片:Webhook 的应用图标,可选。

选择“创建”。 传出 Webhook 将添加到当前团队的频道:

92734e53168eb7512d457f4911afdb72.png

将显示 基于哈希的消息身份验证代码 (HMAC) 对话框。 它是一个安全令牌,用于对 Teams 和指定的外部服务之间的调用进行身份验证。

备注

仅在 URL 有效且服务器和客户端身份验证令牌相等时,传出 Webhook 才可供团队用户使用。 例如,HMAC 握手。

以下方案提供了添加传出 Webhook 的详细信息:

应用场景:将更改状态通知推送到Teams通道数据库服务器应用。

示例:你有一个业务线应用,可跟踪所有 CRUD 操作,如创建、读取、更新和删除。 这些操作通过跨租户的 Teams HR 用户对员工Office 365操作。

在应用服务器上创建 URL 以接受并处理具有 JSON 有效负载的 POST 请求

你的服务接收标准 Azure 自动程序服务消息架构中的邮件。 Bot Framework 连接器是一项 RESTful 服务,它支持通过 HTTPS 协议处理 JSON 格式邮件的交换,如 Azure Bot Service API 中记录。 或者,你可以按照 Microsoft Bot Framework SDK 处理和分析消息。 有关详细信息,请参阅 Azure Bot 服务概述。

传出 Webhook 的范围为级别 team ,并且所有团队成员都可以看到。 用户需要 @ 提及传出 Webhook 的名称,以在频道中调用它。

创建用于验证传出 Webhook HMAC 令牌的方法

使用入站邮件和 ID 示例:{"contoso"的 SigningKeyDictionary 的"contoso","vqF0En+Z0ucuRTM/01o2GuhMH3hKKk/N2bOmlM31zaA=" }。

在请求标头的授权中,使用值"HMAC 03TCao0i55H1eVKUusZOTZRjtvYTs+mO41mPL+R1e1U="。

为了确保服务仅接收来自实际客户端Teams的呼叫,Teams HTTP 授权标头中提供 HMAC hmac 代码。 始终在身份验证协议中包括代码。

代码必须始终验证请求中包含的 HMAC 签名,如下所示:

从邮件的请求正文生成 HMAC 令牌。 在大多数平台上,有一些标准库可以这样做,例如加密for Node.js 和 Teams webhook 示例 #) 。 Microsoft Teams使用标准 SHA256 HMAC 加密。 你必须在 UTF8 中将正文转换为字节数组。

在客户端中注册传出 Webhook 时,计算由 Teams 提供的安全令牌的字节数组Teams哈希。 请参阅 创建传出 Webhook。

使用 UTF-8 编码将哈希转换为字符串。

将生成的哈希的字符串值与 HTTP 请求中提供的值进行比较。

创建发送成功或失败响应的方法

来自传出 Webhook 的响应显示在与原始邮件相同的回复链中。 当用户执行查询时,Microsoft Teams向服务发出同步 HTTP 请求,您的代码将在连接中断和终止之前获取 5 秒钟来响应消息。

示例响应

{

"type": "message",

"text": "This is a reply!"

}

备注

可以使用传出 Webhook 将自适应卡片、Hero 卡片和短信作为附件发送。

卡片支持格式设置。 有关详细信息,请参阅使用 markdown 格式化卡片。

以下代码是自适应卡片响应的示例:

string content = await this.Request.Content.ReadAsStringAsync();

Activity incomingActivity = JsonConvert.DeserializeObject(content);

var Card = new AdaptiveCard(new AdaptiveSchemaVersion("1.4"))

{

Body = new List()

{

new AdaptiveTextBlock(){Text= $"Request sent by: {incomingActivity.From.Name}"},

new AdaptiveImage(){Url=new Uri("https://c.s-microsoft.com/en-us/CMSImages/DesktopContent-04_UPDATED.png?version=43c80870-99dd-7fb1-48c0-59aced085ab6")},

new AdaptiveTextBlock(){Text="Sample image for Adaptive Card.."}

}

};

var attachment = new Attachment()

{

ContentType = AdaptiveCard.ContentType,

Content = Card

};

var sampleResponseActivity = new Activity

{

Attachments = new [] { attachment }

};

return sampleResponseActivity;

var receivedMsg = JSON.parse(payload);

var responseMsg = JSON.stringify({

"type": "message",

"attachments": [

{

"contentType": "application/vnd.microsoft.card.adaptive",

"contentUrl": null,

"content": {

"type": "AdaptiveCard",

"version": "1.4",

"body": [

{

"type": "TextBlock",

"text": "Request sent by: " + receivedMsg.from.name

},

{

"type": "Image",

"url": "https://c.s-microsoft.com/en-us/CMSImages/DesktopContent-04_UPDATED.png?version=43c80870-99dd-7fb1-48c0-59aced085ab6"

},

{

"type": "TextBlock",

"text": "Sample image for Adaptive Card."

}

]

},

"name": null,

"thumbnailUrl": null

}

]

});

{

"type": "message",

"attachments": [

{

"contentType": "application/vnd.microsoft.card.adaptive",

"content": {

"type": "AdaptiveCard",

"version": "1.4",

"body": [

{

"type": "TextBlock",

"text": "Request sent by: Megan"

},

{

"type": "Image",

"url": "https://c.s-microsoft.com/en-us/CMSImages/DesktopContent-04_UPDATED.png?version=43c80870-99dd-7fb1-48c0-59aced085ab6"

},

{

"type": "TextBlock",

"text": "Sample image for Adaptive Card.."

}

]

}

}

]

}

代码示例

示例名称

说明

.NET

Node.js

传出 Webhook

用于创建自定义聊天机器人的示例,以在 Microsoft Teams。

另请参阅

电报机器人的Webhook服务器搭建是指创建一个能够接收来自Telegram Bot API的消息并处理它们的后端服务。Telegram Webhooks功能允许Bot在收到特定事件(如用户发送消息、更新状态等)时自动执行预定义的操作,而不是轮询API。 以下是搭建电报机器人Webhook服务器的基本步骤: 1. **创建Telegram Bot**: 首先,你需要注册一个Telegram开发者账户,并创建一个新的Bot。获取Bot的Token和HTTP地址,这是Webhook设置的关键信息。 2. **选择服务器语言与框架**: - 常用的语言有Python (Flask, Django)、Node.js (Express)、Java等。 - 选择一个你熟悉的框架或库来快速开发服务器,如Python的`requests`库用于与Telegram API交互。 3. **设置Webhook URL**: - 在Telegram BotFather中,点击"修改"按钮,将“Webhook URL”设为你的服务器地址(通常是`https://yourdomain.com/telegram webhook`),同时启用TLS加密(如果可能的话)。 4. **编写Server代码**: - 编写服务器端接收POST请求的代码,检查请求头中的验证令牌(通常包含在请求头的`Authorization`字段)是否匹配Bot的Token。 - 解析JSON数据,提取事件类型和具体内容,然后根据你的需求定制响应逻辑。 5. **错误处理与日志记录**: - 添加适当的错误处理和异常捕获,防止因网络中断或其他问题导致服务不可用。 - 记录关键操作的日志,以便于调试和追踪。 6. **测试与部署**: - 测试Webhook是否正常工作,发送一些消息到Bot,确认能否接收到并正确处理。 - 将服务器部署到可靠的环境,比如云服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值