如何修复直接频道中的选择提示按钮和http 404? (机器人框架v4,直接API 3)

时间:2019-08-31 14:14:00

标签: c# azure .net-core botframework direct-line-botframework

我已通过在Azure门户中创建直接渠道将我的机器人部署到网站上。在我的机器人程序中,我有几个选择提示,可在整个对话框中进行确认,这在大多数情况下都可以顺利进行。问题在于,特别是对于一个选择提示,有时不呈现按钮。在Azure门户应用程序见解中,我看到有一个GET请求失败,响应代码为404,并且我认为它与此问题有关。为什么会发生这种情况,我该如何解决这个问题?

相对于随机出现,这应该是连续出现的方式:

enter image description here enter image description here

来自应用程序见解:

enter image description here

编辑:

聊天机器人是使用Azure中的直接渠道和直接API 3嵌入到我的网站中的。该网站是在Drupal中开发的,可能与此问题相关... 有时,“是/否”按钮会闪烁显示。

此选择提示的代码

private async Task<DialogTurnResult>ConfirmationStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) 
{ 
    var response = (string)stepContext.Result;                 
    stepContext.Values["phone"] = response; 
    var opts = new PromptOptions 
    { 
        Prompt = MessageFactory.Text($"Du har gitt
        oss følgende opplysninger:\n\nTelefon: {response}\n\nEr dette korrekt?"), 
        RetryPrompt = MessageFactory.Text("Vennligst velg ett av alternativene."), 
        Choices = new List<Choice>(), 
    }; 
     
    opts.Choices.Add(new Choice() { Value = "? Ja", Synonyms = new List<string> { "Ja", "ja" } });                 
    opts.Choices.Add(new Choice() { Value = "? Nei", Synonyms = new List<string> { "Nei", "nei" } }); 
    return await stepContext.PromptAsync(nameof(ChoicePrompt), opts, cancellationToken); 
} 

private async Task<DialogTurnResult> ConfirmationValidationStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) 
{ 
    var response = ((FoundChoice)stepContext.Result).Value.ToLowerInvariant();     
    if (response == "? ja") 
    { 
        var opts = new PromptOptions() 
        { 
            Prompt = MessageFactory.Text("Dine opplysninger vil lagres og brukes i henhold til lover og forskrifter om personvern (GDPR). Samtykker du til at vi lagrer dine opplysninger?"), 
            RetryPrompt = MessageFactory.Text("Vennligst velg ett av alternativene."),
            Choices = new List<Choice>(), 
        }; 
       opts.Choices.Add(new Choice() { Value = "? Ja", Synonyms = new List<string> { "Ja", "ja" } });                    
       opts.Choices.Add(new Choice() { Value = "? Nei", Synonyms = new List<string> { "Nei", "nei" } });
       return await stepContext.PromptAsync(nameof(ChoicePrompt), opts, cancellationToken); 
    } 
    else 
    { 
        await stepContext.Context.SendActivityAsync(MessageFactory.Text("La oss begynne forfra så du kan fylle ut opplysningene på nytt."), cancellationToken); 
        return await stepContext.ReplaceDialogAsync(nameof(PhoneDialog), null, cancellationToken); 
    }
}

0 个答案:

没有答案