Legg kortet vedlegg til melding ved hjelp av Microsoft Bot Work

stemmer
2

Problem:

  • Feste et kort til en dialog respons, er følgende kode stort sett hentet fra bot prøver, men viser ikke et kort i dialogboksen respons i de sentrale delene av skjermen logikk jeg trakk brukt.

Jeg har problemer med å gjøre vedlegg innen i en LUIS Intent oppgave.

Mål

  • Har en bruker stille et spørsmål som LUIS ikke gjenkjenner og deretter svare med et hjelpekort når koden hopper inn i LUIS hensikt oppgaven ansvarlig for å håndtere det ukjente. Er det noen annen struktur av et hjelpevindu jeg kan vurdere, som fortsatt benytter kortene?

Kode

Hvor kortet mitt skal vises fra

[LuisIntent(None)]    
public async Task NoneHandler(IDialogContext context, LuisResult result) {
        string worriedFace = \U0001F61F;
        string smilingFace = \U0001F642;

        await context.PostAsync(I'm sorry, I didn't get that  + worriedFace + '.');
        await context.PostAsync(Here are some things I know how to talk about! + smilingFace);

        var message = context.MakeMessage();

        var attachment = new CardDialog().ReceiptCard();
        message.Attachments.Add(attachment);

        await context.PostAsync(message);
    }

Kort klasse av visningen objektet I'ved laget at jeg prøver å vise.

namespace LUISBankingBot.Views
{
    using System.Collections.Generic;
    using Microsoft.Bot.Connector;
    using Microsoft.Bot.Builder.Dialogs;
    using System;
    using System.Threading.Tasks;

    public class CardDialog : IDialog<object>
    {
        public Task StartAsync(IDialogContext context)
        {
            throw new NotImplementedException();
        }

        public Attachment ReceiptCard()
        {
            var receiptCard = new ReceiptCard
            {
                Title = John Doe,
                Facts = new List<Fact> { new Fact(Order Number, 1234), new Fact(Payment Method, VISA 5555-****) },
                Items = new List<ReceiptItem>
                {
                    new ReceiptItem(Data Transfer, price: $ 38.45, quantity: 368, image: new CardImage(url: https://github.com/amido/azure-vector-icons/raw/master/renders/traffic-manager.png)),
                    new ReceiptItem(App Service, price: $ 45.00, quantity: 720, image: new CardImage(url: https://github.com/amido/azure-vector-icons/raw/master/renders/cloud-service.png)),
                },
                Tax = $ 7.50,
                Total = $ 90.95,
                Buttons = new List<CardAction>
                {
                    new CardAction(
                        ActionTypes.OpenUrl,
                        More information,
                        https://account.windowsazure.com/content/6.10.1.38-.8225.160809-1618/aux-pre/images/offer-icon-freetrial.png,
                        https://azure.microsoft.com/en-us/pricing/)
                }
            };

            return receiptCard.ToAttachment();
        }        
    }
}
Publisert på 07/12/2016 klokken 19:43
kilden bruker
På andre språk...                            


1 svar

stemmer
4

Et par ting. Først, er du sannsynligvis får en null ref unntak når du prøver å legge til vedlegg som vedlegg matrisen ikke er initialisert ennå.

message.Attachments = new List<Attachment>();

Dessuten trenger du ikke å opprette CardDialog. Her er et eksempel som fungerer:

    [LuisIntent("None")]
    public async Task NoneHandler(IDialogContext context, LuisResult result)
    {
        string worriedFace = "\U0001F61F";
        string smilingFace = "\U0001F642";

        await context.PostAsync("I'm sorry, I didn't get that " + worriedFace + '.');
        await context.PostAsync("Here are some things I know how to talk about!" + smilingFace);

        var message = context.MakeMessage();

        var receiptCard = new ReceiptCard
        {
            Title = "John Doe",
            Facts = new List<Fact> { new Fact("Order Number", "1234"), new Fact("Payment Method", "VISA 5555-****") },
            Items = new List<ReceiptItem>
            {
                new ReceiptItem("Data Transfer", price: "$ 38.45", quantity: "368", image: new CardImage(url: "https://github.com/amido/azure-vector-icons/raw/master/renders/traffic-manager.png")),
                new ReceiptItem("App Service", price: "$ 45.00", quantity: "720", image: new CardImage(url: "https://github.com/amido/azure-vector-icons/raw/master/renders/cloud-service.png")),
            },
            Tax = "$ 7.50",
            Total = "$ 90.95",
            Buttons = new List<CardAction>
            {
                new CardAction(
                    ActionTypes.OpenUrl,
                    "More information",
                    "https://github.com/amido/azure-vector-icons/raw/master/renders/traffic-manager.png",
                    "https://azure.microsoft.com/en-us/pricing/")
            }
        };

        message.Attachments = new List<Attachment>();
        message.Attachments.Add(receiptCard.ToAttachment());

        await context.PostAsync(message);
    }
Svarte 08/12/2016 kl. 00:26
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more