You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure Function向Teams上的Bot Framework Composer v2.1机器人发消息?

解决方案

你可以通过Bot Framework REST API实现Azure Function向Teams机器人发送消息,无需依赖DirectLine,具体步骤如下:

1. 准备必要的凭据与信息

  • 从Azure Bot资源的“配置”页面获取:
    • 机器人的Microsoft App ID和App Password
    • 机器人的消息端点(格式示例:https://<bot-resource-name>.azurewebsites.net/api/messages)
  • 在用户与机器人交互时,将对话上下文信息保存到数据库或存储服务中,供Azure Function后续调用:
    • conversationId:对话ID,可通过turnContext.Activity.Conversation.Id获取
    • userId:用户ID,可通过turnContext.Activity.From.Id获取
    • tenantId:Teams租户ID,可通过turnContext.Activity.Conversation.TenantId获取

2. 实现消息发送流程

步骤1:获取Bot Framework OAuth令牌

向微软身份认证端点发送POST请求,获取访问令牌:

POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=<你的机器人App ID>&client_secret=<你的机器人App Password>&scope=https://api.botframework.com/.default

返回结果中的access_token即为后续API调用所需的令牌。

步骤2:调用Send Activity API发送消息

向Teams的Bot服务端点发送POST请求,构造消息内容:

POST https://smba.trafficmanager.net/apis/v3/conversations/<conversationId>/activities
Authorization: Bearer <获取到的access_token>
Content-Type: application/json

{
  "type": "message",
  "from": {
    "id": "<机器人App ID>",
    "name": "<机器人显示名称>"
  },
  "conversation": {
    "id": "<conversationId>",
    "tenantId": "<tenantId>"
  },
  "recipient": {
    "id": "<userId>"
  },
  "text": "任务处理已完成!"
}

3. 关键注意事项

  • 确保Azure Function能访问上述API,无需额外Azure AD角色权限,仅需正确的机器人App ID和密码。
  • 对话上下文信息(如conversationId、userId)需妥善存储,避免数据泄露。
  • 若为群聊场景,可调整recipient字段为群聊ID,或在text中添加@<用户ID>格式实现@特定用户的效果。

内容的提问来源于stack exchange,提问作者Ibrahim Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:06:10