我有一个MVC项目正在使用.NET。
我的英雄卡中有一个按钮,我想通过点击该按钮向DirectLine API发出POST
请求。
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 :(得分:1)
你可以让你的英雄卡上的按钮发送回你的机器人/服务器代码,并在机器人处理回发时触发请求。
You can see the documentation for postback() here.
确保您的postback()
电话会发送一些机器人可以识别的唯一字符串,理想情况下,普通用户永远不会发送的字符串。
postback(session, "thisIsMyUniquePostbackString")
然后你可以检查对话框
if( session.message.text === "thisIsMyUniquePostbackString ){
//HeroCard was tapped, send POST request...
}
我创建了working sample that you can check out here.
请注意,我没有包含request-promise
节点模块来发出HTTP POST请求,但您可以使用您喜欢的任何方法/库。
这是实际工作样本的屏幕截图: