Я следую этим 2 образцам:
Мой бот работает нормально. Я могу отправлять и обрабатывать действия через прямую линию. Мой тестовый helpButton регистрируется нормально, но фактическое сообщение «помощь» не отправляется, когда я нажимаю кнопку, как в примере.
var mainBotConnection;
const { createStore, ReactWebChat } = window.WebChat;
const { createProvider } = window.ReactRedux;
const Provider = createProvider('webchat');
const Store = createStore();
// get a token
const RequestToken = async (user) => {
...
};
(async function () {
RequestToken(agent)
.then(token => {
//init main chat bot
mainBotConnection = window.WebChat.createDirectLine({token: token});
...
//grab mainbot placeholder and put it on screen
window.ReactDOM.render(
<Provider store = {Store}>
<ReactWebChat
directLine = {mainBotConnection}
storeKey='webchat'
userID = {user.id}
username = {user.name}
styleOptions = {mainBotStyleOptions}
/>
</Provider>,
document.getElementById('webchat'));
// this message does not appear
Store.dispatch({
type: 'WEB_CHAT/SEND_MESSAGE',
payload: { text: 'StartUp hello!' }
});
});
// test button
document.querySelector('#helpButton').addEventListener('click', () => {
// this is successfully logged
console.info(`help button clicked`);
// 'help' text does not appear in bot
Store.dispatch({
type: 'WEB_CHAT/SEND_MESSAGE',
payload: { text: 'help' }
});
// this is also successfully logged
console.info(Store);
});
document.querySelector('#webchat').focus();
})().catch(err => console.error(err));
Вам нужно добавить store = {Store}
к компоненту ReactWebChat
:
[...]
<Provider store = {Store}>
<ReactWebChat
directLine = {mainBotConnection}
storeKey='webchat'
userID = {user.id}
username = {user.name}
styleOptions = {mainBotStyleOptions}
store = {Store} // ADD THIS PART
/>
</Provider>,
[...]
При этом без остальной части вашего кода я не смог точно это проверить. Вместо этого я запустил файл Реакция с образцом Redux. Если я удалял store = {Store}
, он не работал, но если я оставлял его там, он работал нормально и отправлял приветственные и справочные сообщения. Вам также может понадобиться: <Provider store = { store } key='webchat'>
, но, как я уже сказал, я не смог проверить ваш точный код.
Это было именно так. Я думал, что Provider store = {Store}
покрыл привязку магазина к боту, так как это единственный раз, когда он был указан в образце. Спасибо!
добавление вашего полного html было бы намного лучше... здесь мы не видим объявление вашей кнопки