Вызов фреймворка чат-бота по нажатию кнопки

Я новичок в реакции на js, и я хочу вызвать чат-бота, используя токен прямой линии. У меня есть код, приведенный ниже. Мне нужно вызвать чат-бота, когда кнопка нажата и должна быть свернута. Я не знаю, как это сделать, и это, кажется, простой вопрос. Помогите мне решить эту проблему. Заранее спасибо.

import React from "react";
import { DirectLine } from 'botframework-directlinejs'; 
import ReactWebChat from 'botframework-webchat';
import "./Login.css";

export default class extends React.Component {
    constructor(props) { 
        super(props);
            this.directLine=new DirectLine({ token: '' });
      }
      Chat = ()=> {
        <ReactWebChat directLine={ this.directLine } />
      }
    render(){
        return (
            <div className="image">
                <img src={require('../src/Images/banner.jpg')} ></img>
            <form>
            <div className="ChatBot" > <button onClick={this.Chat} >Click</button>
            </div>
            </form>
            </div>
        );
    }
}

и мне нужно настроить стиль фреймворка чат-бота. Как я могу это реализовать. Приведенный выше код может быть неправильным. Пожалуйста, помогите мне разобраться.


person Basil    schedule 03.02.2020    source источник


Ответы (1)


Вы можете подписаться на это образец предоставлен Microsoft. Это хорошая отправная точка для реализации запрошенных вами функций (сворачивание окна чата). По сути, вы создаете эти два компонента React:

МинимизируемыйWebChat.js и WebChat.js

Я не буду вдаваться в подробности кода, поскольку в README примера есть подробное описание реализации. Но в MinimizableWebChat.js вы обрабатываете создание хранилища, обработку выборки токена и обработку минимизации. В WebChat.js вы можете использовать метод createStyleSet для настройки WebChat по своему усмотрению. Вы можете увидеть все свойства, которые вы можете установить с помощью этого метода здесь. Надеюсь, я смог вам помочь.

person Armend    schedule 03.02.2020
comment
При передаче ссылки на фреймворк бота я получаю сообщение об ошибке политики CORS. заблокировано политикой CORS: ответ на предварительный запрос не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса на 'no-cors', чтобы получить ресурс с отключенным CORS. Как я могу решить эту проблему. - person Basil; 04.02.2020
comment
Если вы используете это исключительно локально, проверьте мое решение здесь о том, как включить CORS на свой токен-сервер. Если вы работаете локально, но туннелируете в ABS через ngrok, включите расширенные параметры аутентификации на вашем канале Direct Line и укажите свой URI (например, http://localhost:3000). В зависимости от ваших потребностей вам также может потребоваться включить URI в политику CORS вашей службы приложений. - person Steven Kanberg; 07.02.2020
comment
Также небольшое примечание о минимизируемом примере веб-чата. Код подвергался недавним обновлениям, которые не отражены в документации. Имейте это в виду, если вы столкнетесь с ошибками и захотите сравнить код и документы. На днях я создал новый код, и он отлично работает. - person Steven Kanberg; 07.02.2020
comment
в настоящее время мой отредактированный код содержит проблему, которую я пытался решить последние несколько дней. всякий раз, когда я сворачиваю свой чат и увеличиваю его до максимума, чат начинается с самого начала со старыми сообщениями, которые все еще присутствуют там. Можете ли вы помочь мне решить эту проблему? - person Basil; 18.02.2020
comment
Это потому, что в компоненте MinimizableWebChat компонент WebChat загружается только один раз, а затем изменяется только свойство display (устанавливается в none, если WebChat свернут). Вот возможное решение: в методе handleMinimizeButtonClick вы можете вызвать setToken(null);, и тогда компонент WebChat запросит другой токен, что означает новый диалог. - person Armend; 18.02.2020
comment
Я использовал механизм хранения сеансов, и теперь я могу сохранить свой чат. Спасибо всем за мнения. - person Basil; 19.02.2020