- Notifications
You must be signed in to change notification settings - Fork65
An open "intelligent" assistant for the web that can listen to you and learn.
License
NotificationsYou must be signed in to change notification settings
mysamai/mysam
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Sam is an open-source, web-based"intelligent" assistant. It can listen to you, learn new actions and is extensible with JavaScript plugins running in any modern browser.
Watch this video to see what Sam can do:
mkdir mysam-testcd mysam-test
Create the followingindex.html
<!DOCTYPE html><html><head><title>MySam</title><linkhref="https://fonts.googleapis.com/css?family=Muli:400,400italic"rel="stylesheet"type="text/css"><linkrel="stylesheet"href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"><linkrel="stylesheet"href="https://unpkg.com/mysam-ui@0.0.2/dist/styles.css"></head><body><divid="content"class="full"></div><scriptsrc="https://unpkg.com/mysam@0.2.0-pre.1/dist/mysam.js"></script><scriptsrc="https://unpkg.com/mysam-ui@0.0.2/dist/mysam-ui.js"></script><script>// Initialize API (in the browser)constapp=mysam();// Load the UIconstsam=mysamUi(document.getElementById('content'),app);</script></body></html>
Then serve serve the folder from a webserver, e.g. with
npm i -g node-staticstatic
And visit it in a browser (herelocalhost:8080).
In the<script>
section above add
// Add a new plugin to the list of learnable actionssam.learn('myplugin',{description:'Say hello from my plugin'});// Register the action to perform when a classificationc comes insam.action('myplugin',(el,classification={})=>{// `el` is the main HTML element to render in// classification has information about what was saidel.innerHTML='Hello from myplugin! You said: '+classification.text;});
mkdir mysam-testcd mysam-testnpm init --yes
Add the followingwebpack.config.json
:
constpath=require('path');constwebpack=require('webpack');constmerge=require('webpack-merge');constUglifyJSPlugin=require('uglifyjs-webpack-plugin');constenv=process.env.NODE_ENV||'development';constcommons={context:path.join(__dirname,'src'),entry:'./index.js',output:{filename:path.join('dist','app.js')},module:{rules:[{test:/\.jsx?$/,exclude:/node_modules\/(?!(feathers|mysam|mysam-ui))/,loader:'babel-loader'}]},node:{fs:'empty'}};constdev={devtool:'source-map',devServer:{port:3030,contentBase:'.',compress:true}};constproduction={devtool:'cheap-module-source-map',output:{filename:path.join('dist','nina.js')},plugins:[newUglifyJSPlugin({compress:{warnings:false,screw_ie8:true},comments:false,sourceMap:false}),newwebpack.DefinePlugin({'process.env.NODE_ENV':JSON.stringify('production')})]};module.exports=merge(commons,env!=='development' ?production :dev);
Install devDependencies
npm install babel-core babel-loader babel-polyfill babel-preset-es2015 babel-preset-react uglify-js uglifyjs-webpack-plugin webpack webpack-dev-server webpack-merge --save-dev
And main dependencies
npm install mysam@pre mysam-ui react react-dom --save
Add a start script topackage.json
:
"start": "webpack-dev-server",
And runnpm start
.
Website and more in-depth documentation coming soon!
About
An open "intelligent" assistant for the web that can listen to you and learn.
Resources
License
Stars
Watchers
Forks
Packages0
No packages published