2017-02-19 3 views
0

Ich habe ein MVC-Projekt verwendet .NET.Wie kann man DirectLine API von der HeroCard-Taste anfordern?

Es gibt eine Schaltfläche in meiner Heldenkarte und ich möchte eine POST Anfrage an DirectLine API machen, indem ich auf diese Schaltfläche klicke.

var heroCard = JsonConvert.DeserializeObject<HeroCard>(attachment.Content.ToString()); 

if (heroCard != null) { 
    objchat.ChatResponse += " " + heroCard.Title + " " + heroCard.Subtitle; 

    if (heroCard.Images != null) { 
    IList<CardImage> cardImages = heroCard.Images; 

    foreach(var image in cardImages) { 
     objchat.ChatResponse += " " + RenderImageHTML(image.Url); 
    } 
    } 

    if (heroCard.Buttons != null) { 
    IList<CardAction> cardButtons = heroCard.Buttons; 

    foreach(var button in cardButtons) { 
     objchat.ChatMessage = button.Title; 
     objchat.ChatResponse += " " + "<input type='button' value='" + button.Title + "' >"; 
    } 
    } 
} 
+0

Festcodeblock und Grammatik. – c0deNinja

Antwort

1

Sie können die Taste auf Ihrer Heldenkarte haben einen Postbacks zu Ihrem Bot/Server-Code senden, und haben die Anforderung ausgelöst, wenn der Bot das Postback behandelt.

You can see the documentation for postback() here.

Stellen Sie sicher, dass postback() Anruf einige einzigartige Zeichenfolge sendet, dass Ihr Bot erkennen können, im Idealfall etwas ein normaler Benutzer nie senden würde.

postback(session, "thisIsMyUniquePostbackString")

Dann können Sie im Dialog überprüfen

if(session.message.text === "thisIsMyUniquePostbackString){ 
    //HeroCard was tapped, send POST request... 
} 

Ich habe ein working sample that you can check out here.

Bitte nicht, dass ich den request-promise Knotenmodul enthalten sind, die HTTP-POST-Anfrage zu erteilen, aber Sie kann die von Ihnen bevorzugte Methode/Bibliothek verwenden.

Hier ist ein Screenshot der Arbeitsprobe in Aktion:

enter image description here

Verwandte Themen