Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
@epam/ai-dial-chat-visualizer-connector
Advanced tools
Package for custom visualizer to connect with Dial Chat
DIAL Chat Visualizer Connector is a library for connecting custom visualizers - applications which could visualize some special type data (for example plot data for the Plotly).
ChatVisualizerConnector
- class which provides needed methods for the Visualizer(rendered in the iframe) to interact with DIAL Chat (receive data to visualize). Types for configuration options are ChatVisualizerConnector
and AttachmentData
.
For security reason your Dial Chat application should configure sources where your custom visualizers hosted:
ALLOWED_IFRAME_SOURCES
- list of allowed iframe sources in <source> <source>
format.Note: For development purposes you can set *
ALLOWED_IFRAME_SOURCES=http://localhost:8000
Moreover, it needs to be configured some Visualizer properties:
CUSTOM_VISUALIZERS
- list of the objects with custom visualizers properties. This properties are : { title, description, icon, contentType, url }
.interface CustomVisualizer {
title: string;
description: string;
icon: string;
contentType: string;
url: string;
}
CUSTOM_VISUALIZERS=[
{
"title":"CUSTOM_VISUALIZER", // Visualizer title
"description": "CUSTOM VISUALIZER to render images", // Short description for the Visualizer
"icon":"data:image/svg+xml;base64,some-base64-image", // Icon for the Visualizer
"contentType":"image/png,image/jpg", // List of MIME types that Visualizer could render separated by ","
"url":"http://localhost:8000" // Visualizer host
},
{
//Other Visualizer
}
]
npm i @epam/ai-dial-chat-visualizer-connector
import { AttachmentData, ChatVisualizerConnector } from '@epam/ai-dial-chat-visualizer-connector';
dialHost
to the DIAL CHAT host you want to connect:const dialHost = 'https://hosted-dial-chat-domain.com';
appName
same as title
in the DIAL CHAT configuration in the CUSTOM_VISUALIZERS
:const appName = 'CUSTOM_VISUALIZER';
ChatVisualizerConnector
in your code.ChatVisualizerConnector:
//Here you store your data which you get from the DIAL CHAT
const [data, setData] = useState<AttachmentData>();
const chatVisualizerConnector = useRef<ChatVisualizerConnector | null>(null);
useEffect(() => {
if (!chatVisualizerConnector.current && dialHost && appName) {
chatVisualizerConnector.current = new ChatVisualizerConnector(dialHost, appName, setData);
return () => {
chatVisualizerConnector.current?.destroy();
chatVisualizerConnector.current = null;
};
}
}, [appName, dialHost]);
sendReady()
to the DIAL CHAT to inform that your Visualizer is ready (this action will hide loader). Then you could do some preparation (login, etc.) and, after that, send 'READY TO INTERACT' event via sendReadyToInteract()
to inform DIAL CHAT that Visualizer is ready to receive data.useEffect(() => {
if (appName && dialHost) {
chatVisualizerConnector.current?.sendReady();
//Make some actions if needed
chatVisualizerConnector.current?.sendReadyToInteract();
}
}, [dialHost, appName]);
Note: Data send by model/application from DIAL CHAT should be the same type as you expect.
data.visualizerData as { dataToRender: string; layout: Layout };
<div>{typedVisualizerData.dataToRender}</div>
Module.tsx
import { AttachmentData, ChatVisualizerConnector } from '@epam/ai-dial-chat-visualizer-connector';
export const Module: FC = () => {
const [data, setData] = useState<AttachmentData>();
const chatVisualizerConnector = useRef<ChatVisualizerConnector | null>(
null
);
//DIAL CHAT host
const dialHost = 'https://hosted-dial-chat-domain.com';
//Visualizer title. Should be same as in the DIAL CHAT configuration in CUSTOM_VISUALIZERS
const appName = 'CUSTOM_VISUALIZER';
useEffect(() => {
if (!chatVisualizerConnector.current && dialHost && appName) {
chatVisualizerConnector.current = new ChatVisualizerConnector(
dialHost,
appName,
setData
);
return () => {
chatVisualizerConnector.current?.destroy();
chatVisualizerConnector.current = null;
};
}
}, [appName, dialHost]);
useEffect(() => {
if (appName && dialHost) {
chatVisualizerConnector.current?.sendReady();
chatVisualizerConnector.current?.sendReadyToInteract();
}
}, [dialHost, appName]);
const typedVisualizerData = React.useMemo(() => {
return (
data?.visualizerData && (data.visualizerData as { dataToRender: string })
);
}, [data?.visualizerData]);
return (
<div>
{!!typedVisualizerData?.dataToRender && (
<div>
{typedVisualizerData.dataToRender}
</div>
)}
</div>
);
};
index.ts
//...other imports
import { Module } from "./Module.tsx";
const root = createRoot(document.getElementById("root"));
root.render(<Module />);
FAQs
Package for custom visualizer to connect with Dial Chat
We found that @epam/ai-dial-chat-visualizer-connector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.