如何在Bot Framework Composer的对话框中调用Azure Function?
在Bot Framework Composer中调用Azure Function的操作步骤
一、准备Azure Function调用信息
- 确认Azure Function已发布至Azure,获取其触发URL(HTTP触发型Function的URL格式通常为
https://<function-app-name>.azurewebsites.net/api/<function-name>) - 若Function启用了密钥验证,从Azure门户的Function“密钥”选项卡获取访问密钥(如默认的
default密钥)
二、方法1:使用内置HTTP请求动作直接调用(最简方案)
- 打开Bot Framework Composer,进入需添加调用逻辑的目标对话框
- 在对话框的“添加”菜单中选择发送HTTP请求动作
- 配置请求参数:
- 方法:选择与Azure Function匹配的请求方法(多为
POST或GET) - URL:填入触发URL,若需密钥验证,在URL末尾追加
?code=<你的访问密钥> - 正文:若Function需接收请求体,填写对应JSON格式内容(例如
{"data": "test content"})
- 方法:选择与Azure Function匹配的请求方法(多为
- 配置后续处理逻辑:
- 添加“设置属性”动作,将响应结果存入机器人状态变量(如
turn.functionResult = turn.activity.value) - 新增分支逻辑,分别处理请求成功或失败的场景
- 添加“设置属性”动作,将响应结果存入机器人状态变量(如
三、方法2:通过自定义代码活动调用(适配复杂场景)
若需封装复杂调用逻辑,可使用自定义代码:
- 在Composer项目的
Actions文件夹下创建C#类(例如CallAzureFunction.cs) - 编写调用逻辑示例:
using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Dialogs; using System.Net.Http; using System.Text; using System.Threading.Tasks; public class CallAzureFunction : Dialog { public override async Task<DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, System.Threading.CancellationToken cancellationToken = default) { var functionUrl = "https://<function-app-name>.azurewebsites.net/api/<function-name>?code=<你的访问密钥>"; var requestBody = new { BotMessage = "Request from Composer Bot" }; using var client = new HttpClient(); var content = new StringContent(System.Text.Json.JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json"); var response = await client.PostAsync(functionUrl, content, cancellationToken); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsStringAsync(cancellationToken); dc.Context.TurnState["FunctionResponse"] = result; } return await dc.EndDialogAsync(cancellationToken: cancellationToken); } }
- 在Composer中注册自定义活动:
打开dialogs\Main.dialog文件,在$schema下方添加引用:"activities": { "CallAzureFunction": { "$type": "Microsoft.Custom", "class": "YourProjectNamespace.CallAzureFunction" } } - 在对话框中使用自定义活动:
点击“添加”→“自定义”,选择已注册的CallAzureFunction活动,后续可通过turn.FunctionResponse获取调用结果
四、调试验证
- 在Composer中启动机器人,触发目标对话框流程,通过Azure门户的Function“监控→日志”确认调用状态
- 在Bot模拟器中查看响应结果,验证逻辑执行是否符合预期
内容的提问来源于stack exchange,提问作者dcalabres
相关产品推荐
相关产品推荐

