如何在自适应卡片中一次性使用后禁用按钮



我在 LUIS 代理中使用自适应卡片。用户填写所有详细信息并提交卡片后,应禁用提交按钮以防止重复使用该按钮。

我们还想知道在单击按钮时显示嵌套自适应卡片时如何隐藏按钮。

我尝试使用用户输入的值验证卡,但我正在寻找更好和最佳的解决方案

P.s 致力于机器人框架 v4 API

在 Teams 等频道中,机器人可以调用更新活动 API 并以这种方式编辑对话历史记录中的卡片。Web Chat 不支持更新或删除现成的活动,但如果分叉网络聊天存储库,则可以对其进行修改以执行所需的任何操作。这本质上与使用网络聊天作为起点创建自己的直线客户端相同。

为了清楚起见,我想简要提一下,网上聊天并不是一个真正的渠道。直线是渠道,网上聊天是直线客户端。客户端应用程序最终负责呈现卡片并处理其交互性。

有一种方法可以使用机器人状态在任何通道中有效地禁用自适应卡片提交操作。如果将标识信息放在提交操作的数据中,则可以让机器人记住该按钮已被单击。如果确保机器人在再次单击按钮时不执行任何操作,则即使它看起来没有任何不同,也会有效地禁用它。

如果你对更多自适应卡片功能作为 NuGet 包提供感兴趣,请对我的机器人生成器社区想法表示一些支持。如果想要详细了解如何将自适应卡片与机器人框架配合使用,请查看我的最新博客文章。

在网络聊天中,可以在 Azure 机器人的"传入活动"事件中处理隐藏/禁用提交按钮。可以从自适应卡片的 JSON 文件中获取"your_submit_button_id"。

const store = window.WebChat.createStore(
{},
function (_ref) {
const dispatch = _ref.dispatch;
return function (next) {
return function (action) {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const event = new Event('webchatincomingactivity');
event.data = action.payload.activity;
/* hiding/disabling button code starts here */
if(event.data.value!=undefined && event.data.value.id=='your_submit_button_id')
{
var btnArr=document.getElementsByClassName("ac-pushButton");
btnArr[btnArr.length-1].style.display='none';
//btnArr[btnArr.length-1].disabled = true;
}
window.dispatchEvent(event);
}
return next(action);
};
};
});

最新更新