【问题标题】:Different response from bot emulator and chatbot in web来自网络中机器人模拟器和聊天机器人的不同响应
【发布时间】:2018-07-10 15:21:18
【问题描述】:

我在网络频道和直线中创建了一个聊天机器人。

当我在机器人模拟器中测试时,我得到了正确的响应,当我尝试在本地主机(网络聊天)中测试相同的意图时,我得到了不同的响应。

我会告诉你和例子:

  • 致电代理
  • 给我你的客户号码
  • (发送客户编号后)您确定吗?
  • 如果您单击是...数据存储在数据库(sql server)中

如果你在 localhost 中保存,你会得到:你取消了表单(实际上我没有取消任何表单

这是我称之为表单的 luisdialog:

        [LuisIntent("human")]
    public async Task human(IDialogContext context, LuisResult result)
    {

        var form = new FormDialog<Human>(
         new Human(),
         Human.BuildForm,
         FormOptions.PromptInStart,
         result.Entities);
        context.Call<Human>(form, LossFormCompleted)

    }


    private async Task LossFormCompleted(IDialogContext context, 
        IAwaitable<Human> result)
    {
        HumanCall form = null;
        try
        {
            form = await result;
        }
        catch (OperationCanceledException)
        {
        }
        if (form == null)
        {
            await context.PostAsync("You cancelled the form.");
        }
        else
        {
            //call the LossForm service to complete the form fill
            var message = $"Your data are stored in database";
            await context.PostAsync(message);
        }
        context.Wait(this.MessageReceived);
    }

表单模型为:

[Serializable]
public class Human
{


    [Prompt("What is your contract number?")]
    public string contract;





    public static IForm<Human> BuildForm()
    {
        OnCompletionAsyncDelegate<HumanCall> wrapUpRequest = async (context, state) =>
        {

            using (BotModelDataContext BotDb = new BotModelDataContext())
            {
                tblBot bot = new tblBot();
                bot = BotDb.tblBots.SingleOrDefault(q => q.Reference == state.contract);


                if (bot != null)
                {
                    using (bbbserviceSoapClient cws = new bbbserviceSoapClient())
                    {
                        viewc a= new viewc();

         a.Lastname = bot.Lastname;


                    }
                }
            }




        };
        return new FormBuilder<Human>().Message
        ("can you send us some info ?")

        .Field(nameof(contract))

            .OnCompletion(wrapUpRequest)
            .Confirm("Are you sure: Yes or No. ")
            .Build();
    }


 }
 }

有人可以帮我解决我的错误吗?我能做些什么来检索相同的响应?这是关于超时问题还是你在做什么?

【问题讨论】:

    标签: c# botframework direct-line-botframework web-chat


    【解决方案1】:

    我根据你提供的代码做了一个测试,稍作修改,发现如果wrapUpRequest方法出现异常,会显示“你取消了表单” em> 而不是消息“您的数据存储在数据库中”

    所以我怀疑当您通过网络聊天进行测试时,wrapUpRequest 方法中发生的异常(可能是数据库查询问题或 bbbserviceSoapClient 发送的请求超时等)

    要解决问题,您可以尝试实现/编写自定义日志,以检测在通过网络聊天进行测试时wrapUpRequest 方法中是否发生任何异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多