首页 > 解决方案 > 如何在 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",
        },
    },
};

标签: c#botframework

解决方案


不幸的是,每个频道都负责处理用户操作,并且大多数频道不会在用户点击链接时通知您。但是,在网络聊天中,您可以使用卡片操作中间件在用户单击打开的 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'));

希望这可以帮助!


推荐阅读