Verwendung von Karten in "Dialog"


Bruno Klein

Ich versuche, die fließende API zu verwenden, um einen einfachen Ablauf zu erstellen. Aber anstatt einfachen Text zu verwenden, möchte ich reichhaltige visuelle Komponenten verwenden. Hier ist ein Beispiel.

    public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
    {
        var yn = Chain
            .PostToChain()
            .Select(m => CreateYesNoPrompt(activity)) //This is a dialog which should provide some buttons to the user
            .PostToUser()
            .WaitToBot()
            .Select(x => x.Text)
            .Switch
            (
                Chain.Case
                (
                    s => s == "S",
                    new ContextualSelector<string, IDialog<string>>((context, item) => Chain.Return("Yes"))
                ),
                Chain.Default<string, IDialog<string>>((context, text) => Chain.Return("No"))
            )
            .Unwrap()
            .PostToUser();

        await Conversation.SendAsync(activity, () => yn);

        return Request.CreateResponse(HttpStatusCode.OK);
    }


    private static Activity CreateYesNoPrompt(Activity activity)
    {
        var reply = activity.CreateReply();

        var ybutton = new CardAction(type: "postBack", title: "Yes", value: "S");
        var nbutton = new CardAction(type: "postBack", title: "No", value: "N");

        var buttons = new List<CardAction>() { ybutton, nbutton };

        var card = new HeroCard("Would you like to start an order?", "Subtitle", buttons: buttons);

        reply.Attachments = new List<Attachment> { card.ToAttachment() };

        return reply;
    }

Anstelle der erwarteten Ausgabe wird die Bot ausgibt Microsoft.Bot.Connector.Activity, welche das ist ToString()Rückkehr des ActivityObjekts.

Wie verwende ich Karten in Dialogen?

Michael Washington

Dies zeigt eine Karte, wenn ein DialogContext übergeben wird:

    private static Activity ShowButtons(IDialogContext context, string strText)
{
    // Create a reply Activity
    Activity replyToConversation = (Activity)context.MakeMessage();
    replyToConversation.Text = strText;
    replyToConversation.Recipient = replyToConversation.Recipient;
    replyToConversation.Type = "message";
    // Call the CreateButtons utility method 
    // that will create 5 buttons to put on the Here Card
    List<CardAction> cardButtons = CreateButtons();
    // Create a Hero Card and add the buttons 
    HeroCard plCard = new HeroCard()
    {
        Buttons = cardButtons
    };
    // Create an Attachment
    // set the AttachmentLayout as 'list'
    Attachment plAttachment = plCard.ToAttachment();
    replyToConversation.Attachments.Add(plAttachment);
    replyToConversation.AttachmentLayout = "list";
    // Return the reply to the calling method
    return replyToConversation;
}

Siehe: Verwenden von Bildern, Karten, Karussells und Schaltflächen im Microsoft Bot Framework

Verwandte Artikel


Richtige Verwendung des Speicherns von Objekten in Karten

Ruhe Angenommen, ich muss eine Sammlung von Schülerobjekten speichern und jeder Schüler hat eine eindeutige ID. Eine Möglichkeit besteht darin, alle in einer Liste zu speichern. Bei der Suche nach einem Schüler müsste ich jedoch eine lineare Suche durchführen

Praktische Verwendung von Java-Karten

Aeolus Was ist die aktuelle Verwendung von Java-Karten? Die Dokumentation ist entweder sehr alt oder sehr spärlich. Nachdem ich einige Zeit gegoogelt habe, ist dies meine wahrgenommene Idee: eID: Signieren von Dokumenten-Hash mit privatem Schlüssel, ausgestell

Hyperledger Composer 0.15 & Webanwendungen - Verwendung von Karten

PPCM Ich habe meine Blockchain mit Composer 0.14 ohne Probleme entwickelt. Ich habe meine Benutzer (Teilnehmer) mit Geheimnissen verwaltet und alles wurde in der Blockchain gespeichert. Mit Composer 0.15 müssen wir jetzt Karten verwenden, um eine Verbindung zu

Adaptive Karten mit QnAMaker unter Verwendung von NodeJS

Steve Johnson Ich habe NodeJS gelernt und begonnen, meinen Bot mit Version 4 des Bot Frameworks neu zu erstellen. Ich habe einen Bot in Version 3 mit C # in Betrieb und er verwendet erfolgreich eine Methode, bei der eine QnA-Paarung entweder in eine Heldenkart

Verwendung von [mat-dialog-close]

Laura L. Ich bin etwas verwirrt über die Verwendung von [mat-dialog-close]. Ich habe also einen Dialog mit einem Formular. Wenn der Benutzer auf die Schaltfläche "Senden" klickt, wird das Formular überprüft. Wenn die Eingabe gültig ist, wird der Dialog geschlo

Verwendung von OnDraw im MFC-Dialog

EnglishPoor Ich bin in der MFC mit OpenGL, aber meine Projekte sind ein Dialogfeld, ich kann OnDraw nicht finden, also verwende ich OnPaint. Wenn ich den FPS berechnen möchte, ist die Verwendung von OnPaint falsch. OnPaint funktioniert nur im Änderungsfenster