Skip to content

Instantly share code, notes, and snippets.

@FredrikOseberg
Last active May 21, 2024 15:42
Show Gist options
  • Save FredrikOseberg/87795296efb67fe76fa05fc839d22e25 to your computer and use it in GitHub Desktop.
Save FredrikOseberg/87795296efb67fe76fa05fc839d22e25 to your computer and use it in GitHub Desktop.
import React from "react";
import { createChatBotMessage } from "react-chatbot-kit";
import SingleFlight from './components/SingleFlight/SingleFlight'
const botName = "Somebot";
const config = {
// Defines the chatbot name
botName: botName,
// Defines an array of initial messages that will be displayed on first render
initialMessages: [
createChatBotMessage(`Hi I'm ${botName}`),
createChatBotMessage(
"First things first, which airport are you looking for information from?",
{
widget: "airportSelector",
delay: 500,
}
),
],
// Defines an object that will be injected into the chatbot state, you can use this state in widgets for example
state: {
airports: [],
flightType: "",
selectedFlightId: "",
selectedFlight: null,
},
// Defines an object of custom components that will replace the stock chatbot components.
customComponents: {
// Replaces the default header
header: () => <div style={{ backgroundColor: 'red', padding: "5px", borderRadius: "3px" }}>This is the header</div>
// Replaces the default bot avatar
botAvatar: (props) => <FlightBotAvatar {...props} />,
// Replaces the default bot chat message container
botChatMessage: (props) => <CustomChatMessage {...props} />,
// Replaces the default user icon
userAvatar: (props) => <MyUserAvatar {...props} />,
// Replaces the default user chat message
userChatMessage: (props) => <MyUserChatMessage {...props} />
},
// Defines an object of custom styles if you want to override styles
customStyles: {
// Overrides the chatbot message styles
botMessageBox: {
backgroundColor: "#376B7E",
},
// Overrides the chat button styles
chatButton: {
backgroundColor: "#5ccc9d",
},
}
// Defines an array of widgets that you want to render with a chatbot message
widgets: [
{
// defines the name you will use to reference to this widget in "createChatBotMessage".
widgetName: "singleFlight",
// Function that will be called internally to resolve the widget
widgetFunc: (props) => <SingleFlight {...props} />,
// Any props you want the widget to receive on render
props: {},
// Any piece of state defined in the state object that you want to pass down to this widget
mapStateToProps: [
"selectedFlightId",
"selectedFlight",
],
},
],
};
export default config;
@proton029
Copy link

Hi, FredrikOseberg Thanks for the amazing npm package. I need to change the send button icon how can I achieve this
You can remove the svg tag that creates the default bot button image and instead create a div which holds an src to an image and style it . It will work.

@proton029
Copy link

@FredrikOseberg Is there way to change the send Message icon ?

@anshul4322
Copy link

Hello, thank you for the work.

My question is How can I plz use the header of the customComponents in another component in my app.

I want to use it for a component unmount (So when i click on the header the chatbot is reduced ) .

Thanks.

Have you find any solution??

@anshul4322
Copy link

Have you find any solution?

@Aryan-Jagadale
Copy link

Hi, Does this libraray works with React-Native @FredrikOseberg ?

@vanshkr
Copy link

vanshkr commented Jul 28, 2023

using functional approach for the actionProvider and messageParser... wheni console.log props in the component that it to be rendered and defined in widgetFunc the props.actionProvider is empty ...thought if i swtich back to class components then it props.actionProvider has all functions defined in actionProvider

@vanshkr
Copy link

vanshkr commented Jul 28, 2023

and why createClientMessage is not a function in functional component?

@saranilango
Copy link

saranilango commented Aug 1, 2023

@FredrikOseberg, i am using your chat bot i have modified chat header here i want load widget when i click icon which i marked in blue color in screenshot
image
And chat code is



{showBot ?
<Chatbot
config={config}
actionProvider={ActionProvider}
messageParser={MessageParser}
disableScrollToBottom="false"
headerText={
<div style={{ display: "flex" }}>
<div style={{ display: "flex", alignItems: "center" }}>

<img width="50px" height="30px" src=' alt='' />

Contact Centre


                  
                  
                    
                                
<div style={{ display: "flex", alignItems: "center" }}>

<ThumbsUpDownIcon style={{ cursor: "pointer", color: "white" }} />


   
   
   



<RemoveIcon style={{ cursor: "pointer", color: "white" }} onClick={() => minimizeBot()} />




<CloseIcon style={{ cursor: "pointer", color: 'white' }} onClick={() => toggleBot('false')} />



}
/> :


<IconButton className="chatbot-icon" style={{ cursor: "pointer", color: "white" }} onClick={() => toggleBot('true')}>
{/* */}




}


Can you please help this

@StefaniRibeiro
Copy link

I would like to remove "Conversation with" from the header, how do I do that? I tried using the chat.tsx file but it didn't work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment