I have created a simple Chat bot through the use of Microsoft Q&A maker and deployment to azure. Out of the box, the bot has its own default style.
I want to be able to edit the look and feel of the chat window, possibly using CSS. I have found a couple of questions here but they do not give the complete answer I am looking for. I have done some research and found information at these URLs:
https://github.com/Microsoft/BotFramework-WebChat https://github.com/Microsoft/BotBuilder/issues/202
The first link above gives this explanation under the heading of 'Styling':
"In the /src/scss/
folder you will find the source files for generating /botchat.css
. Run npm run build-css to compile once you've made your changes. For basic branding, change colors.scss
to match your color scheme. For advanced styling, change botchat.scss
."
I do not fully understand how these files are connected to my project. I also do not know how to implement the techniques outlined above. I cannot find a specific set of steps to take to change the style of the chat window. Hopefully someone can explain in detail how I can use the techniques above (or that they know already) to change my bot styles.
If anyone knows the most straight forward method to style the Microsoft Bot chat window, or could point me in the right direction, that would be great!
How is it working now?
I do not fully understand how these files are connected to my project
: assuming that you are usingiframe
implementation, it means that you are using the compiled version of the source code you found.If you have a look to the
iframe
content (doing a GET on the URL), it looks like the following:So as you can see, it is referencing a css file, the one compiled by the GitHub project.
How to add your custom css?
On your side, you can edit this css, edit it, and use the same implementation as above but replace the css link to yours.
To customize the WebChat module, head on over to https://github.com/Microsoft/BotFramework-WebChat and fork the repository, then you can add your own CSS customizations and deploy your own custom themed chat interface. You will find the styling options here: https://github.com/Microsoft/BotFramework-WebChat/tree/master/src/scss
Customizing WebChat
Styling
In the
Card Sizes / Responsiveness/src/scss/
folder you will find the source files for generating/botchat.css
. Runnpm run build-css
to compile once you've made your changes. For basic branding, changecolors.scss
to match your color scheme. For advanced styling, changebotchat.scss
.WebChat strives to use responsive design when possible. As part of this, WebChat cards come in 3 sizes: narrow (216px), normal (320px) and wide (416px). In a full-window chat, these sizes are invoked by a CSS media query in the
/botchat-fullwindow.css
style sheet. You may customize this style sheet for the media query breakpoints in your own application. Or, if your WebChat implementation is not a full-window experience, you can manually invoke card sizes by adding the CSS classeswc-narrow
andwc-wide
to the HTML element containing your chat.Strings
You can alter or add localized strings in
/src/Strings.ts
:localizedStrings
strings
Behaviors
Behavioral customization will require changing the TypeScript files in
/src
. A full description of the architecture of WebChat is beyond the scope of this document, but here are a few starters:Architecture
Chat
is the top-level React componentApp
creates a React application consists solely ofChat
Chat
largely follows the Redux architecture laid out in this video seriesChat
usesEpic
from redux-observable - here's a video introductionredux-observable
(and also DirectLineJS) is theRxJS
library, which implements the Observable pattern for wrangling async. A minimal grasp ofRxJS
is key to understanding WebChat's plumbing.Building WebChat
npm install
npm run build
(to build on every changenpm run watch
, to build productionnpm run prepublish
)This builds the following:
/built/*.js
compiled from the TypeScript sources in/src/*.js
-/built/BotChat.js
is the root/built/*.d.ts
declarations for TypeScript users -/built/BotChat.d.ts
is the root/built/*.js.map
sourcemaps for easier debugging/botchat.js
webpacked UMD file containing all dependencies (React, Redux, RxJS, polyfills, etc.)/botchat.css
base stylesheet/botchat-fullwindow.css
media query stylesheet for a full-window experience