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

如何向外部Office 365租户部署调用外部API的Teams Toolkit应用?

问题

使用Visual Studio 2022 Version 17.12.3及Teams Toolkit开发应用,基于“Chat With Your Data”模板并选择Azure OpenAI。修改了RenderDataAsync()方法以调用自建外部API并将结果返回给Teams,代码如下:

public async Task<RenderedPromptSection<string>> RenderDataAsync(ITurnContext context, IMemory memory, ITokenizer tokenizer, int maxTokens, CancellationToken cancellationToken)
{
    string? query = memory.GetValue("temp.input") as string;

    if (query == null)
    {
        return new RenderedPromptSection<string>(string.Empty, 0);
    }
    else
    {
        using var httpClient = new HttpClient();
        var requestUri = "http://<domain-name>/query";
        var requestBody = new
        {
            query = query,
            mode = "local"
        };

        var json = System.Text.Json.JsonSerializer.Serialize(requestBody);
        var content = new StringContent(json, Encoding.UTF8, "application/json");

        using var request = new HttpRequestMessage(HttpMethod.Post, requestUri)
        {
            Headers =
            {
                { "accept", "application/json" }
            },
            Content = content
        };
        var response = await httpClient.SendAsync(request);
        var responseContent = await response.Content.ReadAsStringAsync();
        var answer = responseContent;
        return new RenderedPromptSection<string>(formatDocument(answer), answer.Length);
    }
}

该应用在本地测试正常,导入appPackage.dev.zip发布到自身Office 365组织也能正常运行。但将appPackage.dev.zip提供给不同Office 365租户的客户后,客户可安装应用,但机器人无响应,且未观测到API请求。

可能遗漏的步骤及解决方法
  • 外部API网络可达性问题:你的API使用http协议,且域名可能仅在内部网络可访问。跨租户部署后,Teams机器人服务运行在Azure云端(或客户租户的托管环境),无法访问你的内部HTTP API。需将API切换为https协议,并确保公网可访问;若需限制访问,可配置IP白名单,允许Azure机器人服务的出站IP或客户租户的相关IP访问。
  • 机器人身份验证与跨租户权限配置:默认的Teams机器人注册可能仅允许自身租户访问。需在Azure Active Directory中,将机器人应用程序的可用组织类型设置为“任何组织目录(任何Azure AD目录 - 多租户)和个人Microsoft帐户”;同时确保机器人的权限配置(如Teams相关权限)已设置为允许跨租户使用,且客户租户管理员已同意所需权限。
  • 应用包环境配置问题:你提供的appPackage.dev.zip是开发环境的包,其中可能包含仅适用于自身租户的配置(如机器人端点、API地址的硬编码或环境变量未正确替换)。需生成生产环境的应用包,确保所有配置(如API地址)使用正式公网地址,且环境变量已正确配置为跨租户可用的值。
  • 机器人端点的跨租户访问限制:若你的机器人部署在Azure App Service等服务中,可能配置了IP限制或仅允许自身租户的请求。需检查App Service的访问限制规则,移除租户相关的限制,或添加客户租户的Teams服务IP范围;同时确保机器人的端点URL是公网可访问的https地址。
  • API请求错误处理缺失:当前代码未处理API请求失败的情况(如网络超时、HTTP错误状态码),若跨租户环境中请求API失败,机器人会静默无响应。需添加错误处理逻辑,比如捕获HttpRequestException,返回友好提示给用户,同时记录日志便于排查问题。
  • 跨租户数据合规与权限问题:部分客户租户可能有严格的网络安全政策,阻止外部API请求。需与客户确认其租户的网络策略,是否允许机器人向你的API发起请求;必要时需提供API的安全合规文档,或通过Azure Private Link等方式建立私有连接。

内容的提问来源于stack exchange,提问作者Wahrscheinlichkeit und Methode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:50:10