javascript - 拦截用户消息并对其进行修改,bot框架

标签 javascript botframework direct-line-botframework

我正在使用带有直线的机器人框架,我想在将用户的消息发送到服务器进行修改之前拦截用户的消息。

这个想法是,如果用户输入一些电话号码、信用卡等,请通过星号等修改消息的该部分,并且不会将带有该数据的消息传输到服务器。 我尝试配置某些事件或事件,但无法执行此操作。

我尝试使用javascript,为inputBox和按钮创建一个addeventlistener,但是当该事件启动时,消息无法再修改

有什么想法吗?

conect.activity$
                    .filter(function (activity) {   
                      return activity.type === 'endOfConversation';
                    })
                    .subscribe(function (activity) {
                        console.log('RemoveLocalStorage endOfConversation');
                     RemoveLocalStorage("paramCon");
                    });

                      BotChat.App({
                        botConnection : conect,
                        speechOptions: speechOptions,
                        user: user,
                        bot: bot,
                        typing:false,
                        locale: (params.locale !== undefined) ? params.locale : "es-es",
                        resize: 'detect'
                      },window.parent.frames["chatBot"].document.getElementById('bot'));
                     //window.frames[0].document.getElementById('bot')
                      //document.getElementById("bot")

window.parent.frames["chatBot"].document.getElementsByClassName("wc-send")[0].addEventListener("click", disableSensitiveData);
    window.parent.frames["chatBot"].document.getElementsByClassName("wc-textbox")[0].addEventListener("keyup", disableSensitiveData);

最佳答案

您可以创建一个自定义中间件来拦截并修改用户点击发送时消息的文本属性。我在下面的 Webchat V3 和 V4 中创建了示例,将整个消息转换为星号。

网络聊天V4

// We are adding a new middleware to customize the behavior of WEB_CHAT/SEND_MESSAGE.
const store = window.WebChat.createStore(
  {},
  ({ dispatch }) => next => action => {
      if (action.type === 'WEB_CHAT/SEND_MESSAGE') {
        // Edit text when user sends message
        action.payload.text = action.payload.text.split('').map(_ => '*').join('')
      }
      return next(action);
  }
);

window.WebChat.renderWebChat({
  directLine: window.WebChat.createDirectLine({ token }),
  store
}, document.getElementById('webchat'));

查看 WebChat Repository有关 v4 的更多示例和信息。

网络聊天V3

我们将修改机器人处理发布事件的方式,以拦截和修改来自用户的消息。

var dl = new BotChat.DirectLine({ secret: '<SECRET>' });

BotChat.App({
  botConnection: Object.assign({}, dl, {
    postActivity: activity => {
      // Edit text when user sends message
      activity.text = activity.text.split('').map(_ => '*').join('');
      return dl.postActivity(activity);
    }
  }),
  bot: 'bot',
  user: 'user',
  resize: 'detect',
}, document.getElementById('bot'));

希望这有帮助!

关于javascript - 拦截用户消息并对其进行修改,bot框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465391/

相关文章:

javascript - 第三方REST API基础认证

javascript - 当 Template.mytemplate.field 放置在主模板事件方法中时,HTML 不会被渲染

javascript - getUserMedia() - 在移动设备上选择后置摄像头

azure - 我们可以动态添加文本字段吗

botframework - LUIS 中的培训 无意图

node.js - 如何通过直线将带有负载的自定义消息从机器人发送到客户端应用程序?

javascript - Onclick 使用 Javascript 将图标旋转 180 度

c# - LUIS/Bot Framework 多个对话框,将意图处理移至另一个对话框

azure - 发送至 Microsoft Bot 的 Directline API 消息

node.js - 直线 API : Define a new ChannelId