/ / Jak poprosić o interfejs API DirectLine z przycisku HeroCard? - asp.net-mvc, botframework

Jak zażądać DirectLine API z przycisku HeroCard? - asp.net-mvc, botframework

Mam projekt MVC używa .NET.

Na mojej karcie bohatera jest jeden przycisk i chcę zrobić POST poprosić o API DirectLine, klikając ten przycisk.

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 + "" >";
}
}
}

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz mieć przycisk na karcie Bohatera, który wysyła zwrotne powiadomienie do kodu bota / serwera i uruchamia żądanie, gdy bot obsługuje zwrot zwrotny.

Dokumentację do postback () możesz zobaczyć tutaj.

Upewnij się, że postback() call wysyła unikalny ciąg znaków, który Twój bot może rozpoznać, idealnie, coś, czego normalny użytkownik nigdy nie wyśle.

postback(session, "thisIsMyUniquePostbackString")

Następnie możesz sprawdzić w oknie dialogowym

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

Stworzyłem działająca próbka, którą możesz sprawdzić tutaj.

Proszę nie żebym zawarł request-promise moduł węzła do wysłania żądania HTTP POST, ale możesz użyć dowolnej metody / biblioteki, którą preferujesz.

Oto zrzut ekranu działającej próbki w akcji:

wprowadź opis obrazu tutaj