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

如何在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请求动作直接调用(最简方案)

  1. 打开Bot Framework Composer,进入需添加调用逻辑的目标对话框
  2. 在对话框的“添加”菜单中选择发送HTTP请求动作
  3. 配置请求参数:
    • 方法:选择与Azure Function匹配的请求方法(多为POST或GET)
    • URL:填入触发URL,若需密钥验证,在URL末尾追加?code=<你的访问密钥>
    • 正文:若Function需接收请求体,填写对应JSON格式内容(例如{"data": "test content"})
  4. 配置后续处理逻辑:
    • 添加“设置属性”动作,将响应结果存入机器人状态变量(如turn.functionResult = turn.activity.value)
    • 新增分支逻辑,分别处理请求成功或失败的场景

三、方法2:通过自定义代码活动调用(适配复杂场景)

若需封装复杂调用逻辑,可使用自定义代码:

  1. 在Composer项目的Actions文件夹下创建C#类(例如CallAzureFunction.cs)
  2. 编写调用逻辑示例:
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);
    }
}
  1. 在Composer中注册自定义活动:
    打开dialogs\Main.dialog文件,在$schema下方添加引用:
    "activities": {
        "CallAzureFunction": {
            "$type": "Microsoft.Custom",
            "class": "YourProjectNamespace.CallAzureFunction"
        }
    }
    
  2. 在对话框中使用自定义活动:
    点击“添加”→“自定义”,选择已注册的CallAzureFunction活动,后续可通过turn.FunctionResponse获取调用结果

四、调试验证

  • 在Composer中启动机器人,触发目标对话框流程,通过Azure门户的Function“监控→日志”确认调用状态
  • 在Bot模拟器中查看响应结果,验证逻辑执行是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:34:58