机器人框架删除cardaction

时间:2016-07-13 09:22:34

标签: c# telegram botframework microsoft-skype-bot

我正在使用Bot Framework(版本3.0,ASP.NET Bot框架模板)为我的一个聊天机器人和使用HeroCard& CardAction获取用户的反馈。我有以下问题:

  1. CardAction在电报频道上翻译成内联键盘。这工作正常,用户可以在聊天区域多次行动。一旦用户使用该按钮执行操作,如何从聊天区域中删除按钮?

  2. 我可以将CardAction转换为回复键盘(reply_markup)而不是内联标记吗?

  3. CardAction与Telegram合作正常但在Skype中无效。 Skype正在将它们展示为外部媒体。

1 个答案:

答案 0 :(得分:1)

Bot框架并不直接支持Telegram的回复键盘功能,但您仍然可以通过消息的channelData字段发送它。 ChannelData用于发送特定于频道的消息,这些消息不会直接出现在Bot Framework中。在BotBuilder / NodeJS中,使用message.sourceEvent方法设置此字段:

示例(未经测试):

var msg = new builder.Message(session);
msg.sourceEvent({
    telegram: {
        method: "sendMessage",
        parameters: {
            text: "This is a reply keyboard",
            parse_mode: "Markdown",
            reply_markup: JSON.stringify({
                "keyboard": [
                    [{ text: "1" }, { text: "2" }, { text: "3" }],
                    [{ text: "4" }, { text: "5" }, { text: "6" }],
                    [{ text: "7" }, { text: "8" }, { text: "9" }],
                    [{ text: "*" }, { text: "0" }, { text: "#" }]
                ]
            })
        }
    }
});
session.send(msg);

channelData字段文档:https://docs.botframework.com/en-us/csharp/builder/sdkreference/channels.html