0

在 QnAMaker 上工作。机器人在模拟器和网络聊天上的文本和 HeroCard 响应都很好。但是,它没有通过我的频道(Skype)发送格式化的 HeroCard。我已经使用 build.cmd 重建了应用程序。重新启动 Azure 服务。仍然没有帮助。

// BasicQnAMakerDialog.cs:
 public RootDialog() : base(new QnAMakerService
        (new QnAMakerAttribute(
            RootDialog.GetSetting("QnAAuthKey") == null ? ConfigurationManager.AppSettings["QnAAuthKey"] : ConfigurationManager.AppSettings["QnAAuthKey"],
            Utils.GetAppSetting("QnAKnowledgebaseId") == null ? ConfigurationManager.AppSettings["QnAKnowledgebaseId"] : ConfigurationManager.AppSettings["QnAKnowledgebaseId"],
            "Not sure how to help with that. Try asking about the ALOTB, Pricing, Technology and scope to find more info or get in touch with sriram.chandrasekaran@epsilon.com", 0.5, 1,
            Utils.GetAppSetting("QnAEndpointHostName") == null ? ConfigurationManager.AppSettings["QnAEndpointHostName"] : ConfigurationManager.AppSettings["QnAEndpointHostName"])))
    {
    }
    //override method
    protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        var answer = result.Answers.First().Answer;
        Activity reply = ((Activity)context.Activity).CreateReply();
        string[] qnaAnswerData = answer.Split(';');
        int dataSize = qnaAnswerData.Length;

        if (dataSize > 1 && dataSize <= 6)
        {
            var attachment = GetSelectedCard(answer);
            reply.Attachments.Add(attachment as Attachment);
            await context.PostAsync(reply);
        }
        else
        {
            await context.Forward(new BasicQnAMakerDialog(), AfterAnswerAsync, message, CancellationToken.None);
            await context.PostAsync(reply);
        }

    }

    private static Attachment GetSelectedCard(string answer)
    {
        int len = answer.Split(';').Length;
        switch (len)
        {
            case 4: return GetHeroCard(answer);
            default: return GetHeroCard(answer);
        }
    }

    private static Attachment GetHeroCard(string answer)
    {
        string[] qnaAnswerData = answer.Split(';');
        string title = qnaAnswerData[0];
        string description = qnaAnswerData[1];
        string url = qnaAnswerData[2];
        string imageURL = qnaAnswerData[3];
        HeroCard card = new HeroCard
        {
            Title = title,
            Subtitle = description,
        };
        card.Buttons = new List<CardAction>
        {
            new CardAction(ActionTypes.OpenUrl, "Learn More", value: url)
        };
        card.Images = new List<CardImage>
        {
            new CardImage( url = imageURL)
        };

        return card.ToAttachment();
    }
4

0 回答 0