微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在“ botframwork-webchat”中的每个传入消息中添加侦听器

如何解决如何在“ botframwork-webchat”中的每个传入消息中添加侦听器

我在我的react js项目中使用botframework-webchat使用Microsoft chatbot。我想为每个传入消息添加一个侦听器。

要求是识别特定消息(最后一条消息)及其内容。根据内容,应将用户重定向到结果屏幕。如果可以访问结果,则可以进行导航。我搜索解决方案,但找不到任何解决方案。

这是我的代码

const chatbot = (props) => {
  const directLine = useMemo(
    () => createDirectLine({ token: process.env.REACT_APP_DIRECT_LINE_SECRET,locale: 'sv-se' }),[]
  );

  const styleOptions = {
    bubbleBackground: 'white',bubbleBorder: '#26acab',bubbleFromUserBackground: 'white',bubbleFromUserBorder: '#26acab',botAvatarImage: './Icon.ico',botAvatarBackgroundColor: 'transparent',userAvatarBackgroundColor: '#26acab',userAvatarInitials: bubbleInitials,rootHeight: '50%',rootWidth: '100%',hideUploadButton: true,primaryFont: "'Avenir LT Std',sans-serif",hideSendBox: true,};

  useEffect(() => {
    var initiatingActivity = {
      from: {
        id: '001',name: 'noviral',token: msalToken,locale: language === 'en' ? 'en-US' : 'sv-se',},name: 'startConversation',type: 'event',value: 'Hi noviral!',};


    directLine.postActivity(initiatingActivity).subscribe(function (id) {
      if (console) {
        console.log('Chat bot initiated');
      }
    });

    
  },[]);

  return (
    <Layout className="login-layout">
      <div className="login-div">
        <div className="chatbot">
          <div className="consent-wrapper">
            <ReactWebChat
              directLine={directLine}
              userID={'001'}
              username="Noviral"
              locale={language === 'en' ? 'en-US' : 'sv-se'}
              styleOptions={styleOptions}
            ></ReactWebChat>
          </div>
        </div>
      </div>
    </Layout>
  );
};

export default withTranslation()(chatbot);

有人可以帮我吗?预先感谢

解决方法

您可以将自定义存储传递给ReactWebChat,每当您收到消息时都会调用该存储

import  {  createStoreWithDevTools } from 'botframework-webchat

const store =  createStoreWithDevTools( {},({ dispatch }) => next => action => {
     if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
        console.log(action.payload); //this will have incoming message data
      }

      return next(action);
    });

<ReactWebChat directLine={directLine} store={store} userID="YOUR_USER_ID" />;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。