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

如何从Azure托管的Microsoft Bot向JavaScript发送字符串?

解决方案:从Azure托管Bot发送密钥字符串到JS脚本

首先,咱们得理清核心问题:默认的/api/messages端点是专门处理Bot Framework协议的POST请求的,所以你直接在MessagesController里加的自定义方法没法通过原路由访问。不过咱们可以利用Web API的路由特性,在同一个控制器(或者新建ApiController)里定义一个独立的公开端点来返回密钥。

步骤1:添加自定义Web API端点

因为你的Bot是基于Web API构建的(MessagesController继承自ApiController),可以直接在控制器里添加带显式路由的GET方法,不用依赖MVC的JsonResult/ActionResult:

using System.Web.Http;
using System.Configuration;

public class MessagesController : ApiController
{
    // 原有的Bot消息处理方法(比如PostAsync)保留不变

    // 新增的获取密钥端点
    [HttpGet]
    [Route("api/disabledbotkey")]
    public IHttpActionResult GetDisabledBotKey()
    {
        // 从Azure应用配置中读取密钥(推荐这种方式,避免硬编码)
        string disabledBotKey = ConfigurationManager.AppSettings["DisabledBotKey"];
        
        // 直接返回字符串,或者封装成JSON对象(看JS需求)
        if (!string.IsNullOrEmpty(disabledBotKey))
        {
            return Ok(disabledBotKey);
        }
        else
        {
            return NotFound();
        }
    }
}

步骤2:配置Azure应用设置

在Azure门户的Bot App Service里,进入配置 > 应用程序设置,添加一个名为DisabledBotKey的设置,值填你的已停用机器人密钥。这样既安全又方便后续修改,不用重新部署代码。

步骤3:从JS脚本请求端点

现在你可以在前端JS里用fetch或者XMLHttpRequest请求这个新端点:

// 示例用fetch获取密钥
fetch('https://你的站点名.azurewebsites.net/api/disabledbotkey')
    .then(response => {
        if (!response.ok) {
            throw new Error('请求失败');
        }
        return response.text(); // 因为返回的是纯字符串,用text()解析
    })
    .then(botKey => {
        // 拿到密钥后做你需要的操作
        console.log('已停用机器人密钥:', botKey);
    })
    .catch(error => {
        console.error('获取密钥出错:', error);
    });

关键注意事项

  • 路由冲突问题:不要把自定义路由挂在/api/messages下面,因为这个路由被Bot Framework的消息处理逻辑独占了,所以咱们用独立的路由比如/api/disabledbotkey。
  • 安全性:如果这个密钥是敏感信息,建议给端点加验证(比如API密钥验证、Azure AD OAuth2),避免未授权访问。可以在方法上添加[Authorize]特性或者自定义验证逻辑。
  • 本地调试:本地测试时,确保你的Bot项目能正常启动,然后直接访问http://localhost:3978/api/disabledbotkey(默认Bot端口是3978)验证是否能返回密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:52