如何解决如何在“ 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 举报,一经查实,本站将立刻删除。