Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ngrok在团队中测试机器人功能_C#_Botframework_Microsoft Teams_Ngrok - Fatal编程技术网

C# 使用ngrok在团队中测试机器人功能

C# 使用ngrok在团队中测试机器人功能,c#,botframework,microsoft-teams,ngrok,C#,Botframework,Microsoft Teams,Ngrok,我正在使用bot框架和Azure为Microsoft团队开发一个bot,我将使用ngrok直接在MS团队中开发和测试我的代码。在bot的设置中,我将消息端点设置为从ngrok获得的URL,并添加了/api/messages 但每次我想从团队发送消息时,都会收到401未经授权的响应 我如何授权ngrok发送消息 更新:形成@Hilton Giesenow的答案我已经检查了appSettings.json文件,那里的一切都是正确的。他还说,有一个小小的变化,问题出在HttpAdapter中。这是我

我正在使用bot框架和Azure为Microsoft团队开发一个bot,我将使用ngrok直接在MS团队中开发和测试我的代码。在bot的设置中,我将消息端点设置为从ngrok获得的URL,并添加了
/api/messages

但每次我想从团队发送消息时,都会收到401未经授权的响应

我如何授权ngrok发送消息


更新:形成@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));
    }
}

因此,如果要走那么远,你已经迈出了正确的第一步。只是一个不相关的提示,你甚至可以通过查看来查看流量

除此之外,您的实际错误很可能是由于您的机器人配置中的机器人应用程序Id和应用程序密码不正确或丢失造成的(例如,对于C#项目,您的appSettings.json,对于节点项目,您的appSettings.json)。对于一个C#项目

你可以在Azure门户中获得这些信息。最简单的方法是进入你的机器人本身,进入左边菜单上的“设置”部分,然后选择“Microsoft应用程序Id”部分上方的“管理”链接(显示的应用程序Id是你需要的,“管理”链接是你获取应用程序密码的地方)。查看设置屏幕的屏幕截图

如果它仍然不工作,那么很可能是配置设置本身。本质上,在封面下,默认情况下,HttpAdapter将尝试实例化一个,它非常专门地查找名为“MicrosoftAppId”和“MicrosoftAppPassword”的配置项(有关更多信息,请参阅)

因此,您需要确保您的设置名称与配置文件中的名称正确匹配。如果您仍然有问题,那么您至少可以通过替换“AdapterWithErrorHandler”文件中的行来实例化基来验证这是一个配置问题。将其修改为:


:base(新的Bot.Connector.Authentication.SimpleCredentialProvider(“[你的应用程序id],“[你的添加密码]”),logger:logger)

我已经检查了
appSettings.json
文件,那里的一切都是正确的。因此可能是
HttpAdapter
错了。注意:我正在使用C#。尝试添加
--host header=“localhost:3978”
到ngrokcommand@Chenna当前位置我做了,但不起作用
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
services.AddTransient<ILogger<BotFrameworkHttpAdapter>, BotFrameworkHttpAdapterLogger>();