首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将bot链接到bot框架仿真器

无法将bot链接到bot框架仿真器
EN

Stack Overflow用户
提问于 2018-07-05 16:17:23
回答 2查看 632关注 0票数 0

这是我试图将我的机器人加载到机器人框架仿真器中时的当前屏幕:

这是我在我的机器人设置中输入的内容:

但是由于某些原因,我的机器人框架仿真器仍然是空的。我还尝试将Endpoint URL设置为http://localhost:3979/api/messages,但没有成功。我正试着在本地的visual studio上运行它。

这方面的任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

发布于 2018-07-05 23:57:20

L.full,如果您遵循了instructions from the Azure portal to create a QnA bot from a template,则需要对代码进行一些调整,使其在本地工作,进而在模拟器中工作。

使用模板创建机器人后(听起来像你已经完成了),在ABS中,转到Build (在bot Management下)> "Download zip file",您将在本地获得项目的副本。

如果你看一下模板机器人代码,它可以在Azure中工作,因为总的来说,它是从Azure门户内的应用程序设置中访问你的QnA凭据,但在本地,你需要将凭据放在像.config文件这样的地方。

最终,我们现在要做的是将您的QnA凭证插入到项目的.config文件中,因为当您下载压缩包时,该文件不会自动下载到代码中。

下面我只是使用你可以在Azure门户中找到的QnA模板机器人(创建资源> AI +机器学习>网络应用程序机器人和机器人模板“问答”)

  1. In Web.config 为AzureWebJobsStorage (如果使用)、QnAAuthKey、QnAKnowledgebaseId和QnAEndpointHostName添加键值对您自己的凭据值可在Azure门户的应用程序设置下找到

使用

  • In ConfigurationManager.AppSettings"KeyName" (QnA模板从7/5/18开始有名为BasicQnAMakerDialog.cs的默认对话框文件),而不是 Utils (默认在模板中),我们将使用Utils来访问您刚才放置在Web.config中的值:下面您可以看到,我已经更改了QnA模板中的变量(注释掉),以使用ConfigurationManager.AppSettings检索值。您可能还必须编辑if语句中的变量,这取决于您自己的应用程序所需的逻辑。

在根对话框中

代码语言:javascript
复制
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{

                var message = await result as Activity;

                // OLD 
                //var qnaAuthKey = GetSetting("QnAAuthKey"); 
                //var qnaKBId = Utils.GetAppSetting("QnAKnowledgebaseId");
                //var endpointHostName = Utils.GetAppSetting("QnAEndpointHostName"); 

                // NEW
                var qnaAuthKey = ConfigurationManager.AppSettings["QnAAuthKey"];
                var qnaKBId = ConfigurationManager.AppSettings["QnAKnowledgebaseId"];
                var endpointHostName = ConfigurationManager.AppSettings["QnAEndpointHostName"]; 

                // QnA Subscription Key and KnowledgeBase Id null verification
                if (!string.IsNullOrEmpty(qnaAuthKey) && !string.IsNullOrEmpty(qnaKBId))
                {
                    // Forward to the appropriate Dialog based on whether the endpoint hostname is present
                    if (string.IsNullOrEmpty(endpointHostName))
                        await context.Forward(new BasicQnAMakerPreviewDialog(), AfterAnswerAsync, message, CancellationToken.None);
                    else
                        await context.Forward(new BasicQnAMakerDialog(), AfterAnswerAsync, message, CancellationToken.None);

                }
                else
                {
                    await context.PostAsync("Please set QnAKnowledgebaseId, QnAAuthKey and QnAEndpointHostName (if applicable) in App Settings. Learn how to get them at https://aka.ms/qnaabssetup.");
                }

            }

对于根用户调用的子对话框(例如BasicQnAMakerDialog),请确保还使用ConfigurationManager.AppSettings"KeyName".替换任何需要QnA键的内容

例如在BasicQnAMakerDialog中:

代码语言:javascript
复制
[Serializable]
public class BasicQnAMakerDialog : QnAMakerDialog
{
        static readonly string qnaAuthKey = ConfigurationManager.AppSettings["QnAAuthKey"]; 
        static readonly string qnaKBId = ConfigurationManager.AppSettings["QnAKnowledgebaseId"];
        static readonly string endpointHostName = ConfigurationManager.AppSettings["QnAEndpointHostName"]; 

        public BasicQnAMakerDialog() : base(new QnAMakerService(
            new QnAMakerAttribute
            (
                qnaAuthKey, 
                qnaKBId,
                "No good match in FAQ.", 
                0.5, 
                1, 
                endpointHostName
            )))
        {

        }
    }
票数 3
EN

Stack Overflow用户

发布于 2020-05-02 22:05:57

您可以做的一个可能的解决方案是:

  1. 在Visual Studio的解决方案资源管理器中右键单击您的项目。
  2. 单击属性。
  3. 转到调试<代码>E29选项卡。向下滚动一点,你会看到网络服务器设置。。检查URL并将其设置为新端口。例如,如果是:http://localhost:3798,则将其更改为http://localhost:3979,反之亦然。更改端口号可能会解决您的问题。按Ctrl+ S保存。
  4. 生成解决方案并重新运行项目,而不进行调试(Ctrl +F5)。
  5. 打开机器人框架仿真程序,然后输入您在上面步骤3中提到的

注意:这并不意味着它可以100%工作,但这是我遇到的解决方案之一。我也有同样的问题,我用同样的方法解决了它。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51186403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档