如何在Botpress版本11.9.5中自定义用户对话框?

时间:2019-06-29 15:05:40

标签: javascript css reactjs chatbot botpress

我正在尝试将时间戳添加到botpress聊天的每个对话框中。到目前为止,我已经可以在bot的对话框中添加此时间戳,但是我需要一些指针来将其添加到用户的对话框和选择技巧中。

聊天屏幕截图,显示了机器人对话框中的时间戳 enter image description here 自定义组件

export class InfaText extends React.Component {
  message = this.props.text

  getTimestamp = () => {
    let date = new Date();
    let options = {
      month: "short",
      day: "numeric", hour: "2-digit", minute: "2-digit"
    };
    return date.toLocaleTimeString("en-us", options);
  }
  render() {
    return (<div className="infaTextMain">
      <p className="infaTextMessage">{this.message}</p>
      <small className="infaTextTimestamp">{this.getTimestamp()}</small>
    </div>)
  }
}

注意:Botpress v11.9.5

还有,是否有一种通用方法可以向所有对话框添加时间戳? 更新

我严格按照@eff_it

所述

我已将 MessageWrapper MySuperOverride 函数复制到modules\infa-module\src\views\lite\index.jsx enter image description here

然后在摘录下面的modules\channel-web\src\views\full\index.tsx文件覆盖下添加

{
          module: 'infa-module',
          component: 'MySuperOverride'
}

enter image description here

仍然没有效果,@ eff_it请看一看,并建议这里缺少什么?

enter image description here

1 个答案:

答案 0 :(得分:2)

您是否曾在BP 12中尝试过?自定义组件现在更容易实现。

您可以使用botpressWebchat存储区的setMessageWrapper包装每条消息,但是,使用另一个自定义组件初始化webchat时,您将需要使用overrides属性(除了将使用网聊商店)。这是views / lite / index.jsx

的示例
export const MessageWrapper = props => (
  <div>
    <p style={{ color: 'blue' }}>sent on: {new Date(props.sentOn).toDateString()}</p>
    <div style={{ background: 'black', color: 'white' }}>{props.children}</div>
  </div>
)

export const MySuperOverride = props => {
    props.store.setMessageWrapper({ module: 'yourModule', component: 'MessageWrapper' })
    return null
}

然后,当您初始化botpressWebchat时,只需按如下所示使用替代API

window.botpressWebChat.init({
  overrides: {
    before_container: {
      module: 'yourModule',
      component: 'MySuperOverride'
    }
  }
})

请参阅docs,有关自定义组件和自定义模块的更多信息。这是生成的结果:

botpress custom component rendering