我正在使用 Bot Framework 和 Azure for Microsoft Teams 开发一个机器人,并且我将使用 ngrok 直接在 MS Teams 中开发和测试我的代码。在机器人的设置中,我已将消息端点设置为从 ngrok 获取的 URL 并添加/api/messages
.
但每次我想从 Teams 发送消息时,都会收到 401 未经授权的响应。
我如何授权 ngrok 发送消息?
Update:形成@Hilton Giesenow 的答案我已经检查过appSettings.json
文件并且一切都正确。他还说,有一个小变化,问题在于HttpAdapter
。这是我的代码:
public class AdapterWithErrorHandler : BotFrameworkHttpAdapter
{
public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger) : base(configuration, logger)
{
OnTurnError = OnTurnErrorHandler;
}
private async Task OnTurnErrorHandler(ITurnContext turnContext, Exception exception)
{
string replyText = "An error occured while sending a message. If this error stays, please contact the service desk.";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText));
}
}
启动文件中的代码ConfigureServices
method:
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
services.AddTransient<ILogger<BotFrameworkHttpAdapter>, BotFrameworkHttpAdapterLogger>();
所以,如果能走到这一步,你就迈出了正确的第一步。只是一个无关的提示,您甚至可以通过查看来查看流量http://本地主机:4040 http://localhost:4040.
除此之外,您的实际错误很可能是由于机器人配置中的机器人应用程序 ID 和应用程序密码不正确或丢失造成的(例如,C# 项目的 appSettings.json 或节点项目的等效项)。这是一个例子 https://github.com/Wajeed-msft/MessagingExtensionWithoutTaskModule/blob/master/appsettings.json对于 C# 项目。
您可以在 Azure 门户中获取该信息。最简单的方法是转到您的机器人本身,转到左侧菜单上的“设置”部分,然后选择“Microsoft App Id”部分上方的“管理”链接(出现的应用程序 ID 是您需要的, “管理”链接是您获取应用程序密码的地方)。查看“设置”屏幕的屏幕截图here https://learn.microsoft.com/en-us/azure/bot-service/bot-service-manage-settings?view=azure-bot-service-4.0.
如果仍然不起作用,则可能是配置设置本身的问题。本质上,在默认情况下,HttpAdapter 将尝试实例化一个配置凭证提供者 https://github.com/microsoft/botbuilder-dotnet/blob/f8c3955dc3c4f1c03fa14a961cb16788f846383f/libraries/integration/Microsoft.Bot.Builder.Integration.AspNet.WebApi/ConfigurationCredentialProvider.cs,它正在专门查找名为“MicrosoftAppId”和“MicrosoftAppPassword”的配置项(请参阅here https://github.com/microsoft/botbuilder-dotnet/blob/461df3c76cf74d00d001cee93bc383f544c89473/libraries/Microsoft.Bot.Connector/Authentication/MicrosoftAppCredentials.cs了解更多)。
因此,您需要确保您的设置名称与配置文件中的名称正确匹配。如果你是still如果出现问题,那么您至少可以通过替换“AdapterWithErrorHandler”文件中的实例化基础行来验证它是配置问题。将其修改为:
: base(new Bot.Connector.Authentication.SimpleCredentialProvider("[your app id]", "[your add password"), logger: logger)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)