Symbl's APIs empower developers to enable:
- Real-time analysis of free-flowing discussions to automatically surface highly relevant summary discussion topics, contextual insights, suggestive action items, follow-ups, decisions, and questions.
- Voice APIs that makes it easy to add AI-powered conversational intelligence to either telephony or WebSocket interfaces.
- Conversation APIs that provides a REST interface for managing and processing your conversation data.
- Summary UI with a fully customizable and editable reference experience that indexes a searchable transcript and shows generated actionable insights, topics, timecodes, and speaker information.
This repository contains the reusable components for React JS which can be used to reduce the overall integration time.
This extension provides the following out-of-the-box conversational intelligence features:
- Live Closed Captioning: Live closed captioning is enabled by default and provides a real-time transcription of your audio content.
- Real-time Transcription: Symbl offers state-of-the-art Speech-to-Text capability (also called transcription). You can get audio and video conversations transcriptions in real-time.
- Real-time Insights: Symbl allows you to get the real-time insights (action items, questions and follow ups) of the conversations.
- Real-time Topics with sentiments: Symbl allows you to get the real-time topics of the conversations along with their sentiments.
- Real-time Trackers detection: Symbl allows real-time detection of the trackers in the conversation.
- Real-time Sentiment Analysis of the conversations: Symbl allows you to get real-time sentiment analysis (sentence level) and aggregated/overall sentiment categorisation of the conversations.
- Real-time Meeting metrics: Symbl allows you to get real-time analytics of
total talktime
,total silence
andtotal overlapping time
of the meeting. - Real-time Member metrics: Demonstrates the
talktime
or contribution of a member in the conversations.
-
Clone the project
git clone https://github.com/SymblDev/reusable-react-components.git
-
Go to the project directory
cd reusable-react-components
-
Copy the
symbl
folder.project │ symbl │ README.md │ ...
-
Navigate to the project to which Symbl powers needs to be integrated
-
Paste the
symbl
folder copied in step 3, in the project'ssrc
directory.target-react-project │ public │ src │ symbl <--- │ App.js │ index.tsx │ index.css │ package.json │ package-lock.json │ README.md │ ...
-
Install dependencies
npm install recharts npm install
Note: 'recharts' is required to show the graphical representation of the insights
-
Navigate to the
src/symbl/config/
directory and open theconfig.js
file. -
Add your Symbl
App Id
andApp Secret
values in the respective fields below:appId: '', appSecret: ''
-
Modify the rest of the configuration such as Trackers, Sentiment Analytics as per requirements. [Optional]
realtimeSentimentAnalysis: true, realtimeAnalyticsMetric: true, trackers: [ { name: "Promotion Mention", vocabulary: [ "We have a special promotion going on if you book this before", "I can offer you a discount of 10 20 percent you being a new customer for us", "We have our month special this month", "We have a sale right now on" ] } ]
-
Start the application.
npm start
The application will be started at http://localhost:3000
The magic provided by Symbl can be utilized in the following ways:-
-
Symbl capabilities can be utilized using the
useSymbl
hook. It provides all the features out of the box.
But in order to get real-time conversation insights a user has to provide some configuration details while initializing the connection with Symbl.
The configuration details are as follows:--
Meeting Id: Unique Identifier of the meeting.
-
Meeting Name: Name of the meeting.
-
Participant Id: Unique Identifies of the local participant
(e.g- 9334785, abcd@test.com, ...)
-
Participant Name: Name of the local participant who wants to join the meeting.
-
Audio Stream: A
MediaStream
object which refers to the audio stream of the local participant.const getSymblConfig = async () => { const stream: MediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: false}); const participantId = 'vishal@symbl.ai'; const participantName = 'Vishal'; const meetingId = '4eee04f1f66318c659d02949e2f4f7fb946521bdfe11181423795565850c92f4' const meetingName = 'Demo Meeting'; return {meetingId, meetingName, participantId, participantName, stream}; }
-
To get the real-time closed captions.
const { closedCaption } = useSymbl(symblConfig);
-
To get the real-time transcripts.
const { transcripts } = useSymbl(symblConfig);
-
To get the real-time messages with sentiment score.
const { messagesWithSentiment } = useSymbl(symblConfig);
In order to get all the features we can simply destructure the required fields from
useSymbl
hook.const { closedCaption, transcripts, insights, topics, trackers, messagesWithSentiment, analyticsMetric, muteSymbl, unmuteSymbl, stopSymbl } = useSymbl(symblConfig);
Note:
muteSymbl
,unmuteSymbl
andstopSymbl
are the methods that provides mute, unmute and stop the Symbl connection functionality out of the box -
-
Using the
useSymbl
hook, we can easily integrate Symbl capabilities in our app within minutes.
But in order to display the magical results that we get from Symbl (closed captions, sentiment analysis, ...), we need to create some user interfaces.
There comes the<Symbl />
component to rescue.
-
To display the real-time closed captions.
<Symbl closedCaption={closedCaption} />
-
To display the real-time message transcripts.
<Symbl closedCaption={closedCaption} transcripts={transcripts} />
-
To display the real-time messages with sentiment score.
<Symbl closedCaption={closedCaption} messagesWithSentiment={messagesWithSentiment} />
Note: Closed Captions are mandatory by default, so they are required to be passed to
<Symbl />
component.
In order to display all the features we can simply pass the required details to
<Symbl />
component which we get fromuseSymbl
hook.<Symbl closedCaption={closedCaption} transcripts={transcripts} insights={insights} topics={topics} trackers={trackers} messagesWithSentiment={messagesWithSentiment} analyticsMetric={analyticsMetric} />
Each and every component has two primary files in it,
.js
file for making logical changes to component and.css
file for styling changes of the component.Tracker │ Tracker.js │ styles.css
These files can be changed for any CSS styling or logical changes to components according to your needs.
-
-
Live Closed Captioning
-
Real-time Transcripts, Insights (Action Items, Questions and Follow Ups), Topics and Trackers
-
Real-time Topics with sentiments
-
Sentiment and Meeting Analytics
-
Sentiment Analysis with overall sentiment
If you have any questions, feel free to reach out to us at devrelations@symbl.ai
or through our Community Slack or our forum.
This guide is actively developed, and we love to hear from you! Please feel free to create an issue or open a pull request with your questions, comments, suggestions, and feedback. If you liked our integration guide, please star our repo!