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 № 1Moż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: