Программная почтовая активность WebChat не работает - сообщение не отправляется при нажатии кнопки

Я следую этим 2 образцам:

  1. Веб-чат с реакцией
  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));

добавление вашего полного html было бы намного лучше... здесь мы не видим объявление вашей кнопки

Nicolas R 29.05.2019 17:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
253
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно добавить 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} покрыл привязку магазина к боту, так как это единственный раз, когда он был указан в образце. Спасибо!

Oyen 30.05.2019 05:25

Другие вопросы по теме

Японский символ в AdaptiveCard Bot Framework V4
Adaptive Card возвращает неопределенное значение в Microsoft Teams, но хорошо работает в эмуляторе бота
[BotFramework]: есть ли способ отобразить приглашение Oauth в карточке героя или адаптивной карточке в BOT, разработанном с использованием SDK V4 на C#?
Запрос упреждающего сообщения канала Skype через некоторое время получает 500 (внутренняя ошибка сервера)
Как исправить проблемы, связанные с параметрами выбора приглашения DirectLineChannel, которые не отображаются в окне чат-бота, разработанного с использованием V4 SDK на C#?
Преобразование шаблона кнопки facebook из json в c#
Как контролировать сумму входных значений на адаптивной карте
Как добавить настраиваемые варианты выбора, отображаемые с помощью параметров подсказки внутри карточек, и запускать действия при выборе выбора в BOT V4 с помощью С#?
Не удается создать бот веб-приложения Azure из-за ошибки регистрации поставщика ресурсов
Как запретить .net-core постоянно добавлять папки при сборке