0

ウェブチャネルと直通電話でチャットボットを作成しました。

ボットエミュレーターでテストすると正しい応答が得られ、ローカルホスト (webchat) で同じ意図をテストしようとすると異なる応答が得られました。

私はあなたと例を示します:

  • エージェントに電話する
  • お客様番号を教えてください
  • (顧客番号が送信された後)よろしいですか?
  • [はい] をクリックすると、データはデータベース (SQL サーバー) に保存されます

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();
    }


 }
 }

誰かが私が間違っているところを助けてくれますか? 同じ応答を取得するにはどうすればよいですか? それはタイムアウトの問題ですか、それとも何ですか?

4

1 に答える 1