Lightbot.js is a client javascript SDK
It allows the developer to easily communicate with any lightbot agent.
import { LightbotMessenger } from "lightbot";
const lightbotMessenger = new LightbotMessenger({
hostURL: "http://localhost:9000",
agentId: "agent-id",
});
lightbotMessenger.toggleMessenger();
lightbotMessenger.sendMessage({
type: "plain",
sender: "human",
label: "Hello, I need some help!",
});
Property | Description | Type |
---|---|---|
messages | Message history | Message |
startMessenger | Initializes the messenger and adds its welcome message to messages . NOTE: It doesn't do anything if the messenger was already initialized. |
Function(void): void |
sendMessage | Sends a message to the bot | Function(message: Message): void |
toggleMessenger | Toggles messenger open state | Function() |
isOpen | Current open state | Boolean |
onChange | Called when any primitive property gets updated | Function(): void |
Property | Description | Value |
---|---|---|
sender | Message sender identification | "bot" | "human" |
type | Type of message | "plain" | "link" | "jump" |
when type: "plain"
:
Property | Description | Type |
---|---|---|
label | Plain text message | string |
when type: "link"
:
Property | Description | Type |
---|---|---|
label | Representative link label | string |
link | link | string |
when type: "jump"
:
Property | Description | Type |
---|---|---|
label | Representative jump label | string |
jumps | link | Array<{ label: string; event: string; }> |
Lightbot.js provides a React HOC which can be used to provide a communication interface to your React components.
withLightbotMessenger<ComponentProps>(options: { agentId: string; hostURL: string; })(Component)
React components are exported from lib/lightbot-react
.
import {
LightbotMessage,
LightbotMessengerDecoratedProps,
withLightbotMessenger
} from "lightbot/lib/lightbot-react";
type AppProps = LightbotMessengerDecoratedProps & {
children: any;
}
class AppDisconnected extends Component<AppProps, {}> {
public render() {
const { messages, isMessengerOpen, toggleMessenger } = this.props;
return (
<>
{
isMessengerOpen ?
(<ChatWindow
messages={messages}
onMessageSend={this.sendMessage}
/>) :
null
}
<button onClick={toggleMessenger}>
{isMessengerOpen ? "close" : "open"}
</button>
</>
);
}
private sendMessage = (message: string) => {
this.props.sendMessage({ type: "plain", label: message });
}
}
export const App = withLightbotMessenger<AppProps>({
hostURL: "https://localhost:9000",
agentId: "agent-id"
})(AppDisconnected);
withLightbotMessenger
injects the same props as the one defined by the Lightbot API except the onChange is implemented in order to update your React components when any update is available.