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

BotFramework确认对话框:用户选Yes后如何向Bot发送隐式自定义消息

在Bot Framework中发送不显示的自定义消息

当然有可行的实现方式!要达成用户选择Yes后,向Bot发送一条不显示在对话中的自定义消息的需求,你可以利用Bot Framework的后台事件活动(Event Activity)——这种类型的活动专门用于Bot和客户端之间的后台通信,完全不会出现在用户的聊天界面里。

具体实现步骤

  1. 构造隐藏的Event活动:在res=true的代码块里,创建一个类型为ActivityTypes.Event的活动,你可以自定义事件名称和需要传递的业务数据。
  2. 发送隐藏消息:使用SendActivityAsync发送这条活动,用户端不会有任何显示。

修改你原有的Confirm方法代码如下:

private async Task Confirm(IDialogContext context, IAwaitable<bool> result) { 
    var res = await result; 
    await context.PostAsync(res ? "Proceed" : "Ok then"); 
    if (res) { 
        // 构造不显示的后台事件消息
        var hiddenEvent = context.MakeMessage();
        hiddenEvent.Type = ActivityTypes.Event;
        hiddenEvent.Name = "UserConfirmedProceed"; // 自定义事件标识,方便Bot识别
        // 在Value中传递任意你需要的自定义数据
        hiddenEvent.Value = new {
            TargetOperation = "StartBusinessTask",
            TriggerTime = DateTime.UtcNow
        };

        // 发送这条后台消息,用户完全看不到它
        await context.SendActivityAsync(hiddenEvent);

        // 你的后续业务逻辑...
    } 
}

如何处理这条隐藏消息

如果需要在Bot的其他逻辑里响应这条隐藏消息,可以在Bot的OnTurnAsync方法中监听Event类型的活动:

public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default) {
    // 监听后台事件活动
    if (turnContext.Activity.Type == ActivityTypes.Event) {
        var eventActivity = turnContext.Activity;
        if (eventActivity.Name == "UserConfirmedProceed") {
            // 解析自定义数据并处理
            var eventData = eventActivity.Value as JObject;
            var targetOp = eventData?["TargetOperation"]?.ToString();
            
            // 执行对应的后台操作,比如启动任务、调用内部API等
            await ExecuteConfirmedOperation(targetOp);
        }
    }

    // 处理其他常规对话逻辑
    await base.OnTurnAsync(turnContext, cancellationToken);
}

这种方式是Bot Framework官方支持的标准后台通信方案,既不会干扰用户的对话体验,又能实现Bot内部的消息传递,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者J-K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:06:26