/ / Como solicitar a API DirectLine no botão HeroCard? - asp.net-mvc, botframework

Como solicitar a API do DirectLine a partir do botão do HeroCard? - asp.net-mvc, botframework

Eu tenho um projeto MVC está usando o .NET.

Existe um botão no meu cartão de herói e quero fazer uma POST solicitar à API DirectLine clicando nesse botão.

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

Respostas:

1 para resposta № 1

Você pode fazer com que o botão do seu Hero Card envie uma postagem para o código do seu bot / servidor e solicite o acionamento quando o seu bot manipular a postagem.

Você pode ver a documentação para postback () aqui.

Certifique-se de que postback() A chamada envia uma sequência única que seu bot pode reconhecer, idealmente, algo que um usuário normal nunca enviaria.

postback(session, "thisIsMyUniquePostbackString")

Então você pode verificar na caixa de diálogo

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

Eu criei um amostra de trabalho que você pode conferir aqui.

Por favor, não que eu tenha incluído o request-promise módulo de nó para emitir a solicitação HTTP POST, mas você pode usar o método / biblioteca que preferir.

Aqui está uma captura de tela do exemplo de trabalho em ação:

insira a descrição da imagem aqui