c# - 如何在 OpenUrl 卡片操作中发回消息?
问题描述
我正在发送一个带有 openURL 的 cardAction,用户应该在其中单击按钮,按照所述 URL 的说明进行操作,然后报告数据。我希望在用户单击按钮时显示一条消息,这也是打开 URL 时。
根据我的测试,我只能选择 ImBack 或 OpenUrl。有没有办法在一个 CardAction 中同时做到这两个?
var card = new SigninCard()
{
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = "Open a URL",
Type = ActionTypes.OpenUrl,
Value = this.myURL,
DisplayText = "I want to show text when I open myURL but this text doesn't show",
},
new CardAction()
{
Title = "Message Back",
Type = ActionTypes.ImBack,
Value = "MessageBackButtonClicked",
},
},
};
解决方案
不幸的是,每个频道都负责处理用户操作,并且大多数频道不会在用户点击链接时通知您。但是,在网络聊天中,您可以使用卡片操作中间件在用户单击打开的 URL 操作时调度反向通道事件。请注意,这仅适用于网络聊天,不适用于任何其他渠道。
Bot Framework 网络聊天 v4
const cardActionMiddleware = ({ dispatch }) => next => action => {
const { cardAction: { type, value } } = action;
if (type === 'openUrl') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/urlClickedEvent',
value: `Navigating to ${value}`
}
});
}
return next(action);
}
window.WebChat.renderWebChat({
cardActionMiddleware,
directLine,
}, document.getElementById('webchat'));
希望这可以帮助!