Ini adalah perpustakaan juru bahasa RiveScript untuk JavaScript. RiveScript adalah bahasa skrip untuk chatterbots, sehingga memudahkan penulisan pasangan pemicu/respons untuk membangun kecerdasan bot.
Pustaka ini dapat digunakan baik di browser web atau sebagai modul Node. Lihat folder eg/
untuk contohnya.
RiveScript v2.0.0 hadir dengan pemfaktoran ulang basis kode secara besar-besaran untuk mengimplementasikan fitur Async/Await modern secara menyeluruh. Refactor sekarang mengizinkan fitur seperti "menyimpan variabel pengguna secara langsung di Redis" atau "menggunakan makro asinkron dalam kondisional"
Tapi itu pasti merusak beberapa kompatibilitas ke belakang -- sedikit! -- dengan mengubah fungsi yang sebelumnya sinkron seperti reply()
menjadi fungsi asinkron yang mengembalikan Janji seperti yang dilakukan replyAsync()
.
Lihat dokumen Peningkatan-v2 untuk informasi tentang perubahan dan cara memperbaiki kode Anda untuk versi baru.
Untuk nodejs dan mesin JavaScript serupa lainnya, Anda dapat menginstal modul ini di proyek Anda melalui npm:
$ npm install rivescript
Untuk web Anda dapat menggunakan unpkg:
< script src =" https://unpkg.com/rivescript@latest/dist/rivescript.min.js " > script >
Repositori git untuk proyek ini mencakup kode sumber ES2015+. Untuk build ES5 yang menargetkan browser lama dan versi Node, periksa tab Rilis. Distribusi yang dikompilasi mencakup direktori lib/
dengan sumber ES5 untuk digunakan dengan node <= 6, dan direktori dist/
berisi skrip "browser" yang dapat digunakan pada halaman web.
Untuk menggunakannya di web, cukup muat dist/rivescript.min.js
dengan tag seperti biasa.
var bot = new RiveScript ( ) ;
// Load a directory full of RiveScript documents (.rive files). This is for
// Node.JS only: it doesn't work on the web!
bot . loadDirectory ( "brain" ) . then ( loading_done ) . catch ( loading_error ) ;
// Load an individual file.
bot . loadFile ( "brain/testsuite.rive" ) . then ( loading_done ) . catch ( loading_error ) ;
// Load a list of files all at once (the best alternative to loadDirectory
// for the web!)
bot . loadFile ( [
"brain/begin.rive" ,
"brain/admin.rive" ,
"brain/clients.rive"
] ) . then ( loading_done ) . catch ( loading_error ) ;
// All file loading operations are asynchronous, so you need handlers
// to catch when they've finished. If you use loadDirectory (or loadFile
// with multiple file names), the success function is called only when ALL
// the files have finished loading.
function loading_done ( ) {
console . log ( "Bot has finished loading!" ) ;
// Now the replies must be sorted!
bot . sortReplies ( ) ;
// And now we're free to get a reply from the brain!
// RiveScript remembers user data by their username and can tell
// multiple users apart.
let username = "local-user" ;
// NOTE: the API has changed in v2.0.0 and returns a Promise now.
bot . reply ( username , "Hello, bot!" ) . then ( function ( reply ) {
console . log ( "The bot says: " + reply ) ;
} ) ;
}
// It's good to catch errors too!
function loading_error ( error , filename , lineno ) {
console . log ( "Error when loading files: " + error ) ;
}
Distribusi RiveScript.js menyertakan shell baris perintah interaktif yang disebut riveshell untuk menguji bot RiveScript Anda. Dibutuhkan sebagai argumen jalur (relatif atau absolut) ke "otak" - folder yang berisi dokumen RiveScript Anda (file .rive ).
npm install rivescript
), Anda dapat memulai shell menggunakan npx saat berada di folder proyek Anda. Contoh: $ npx riveshell /path/to/brain
npm install -g rivescript
), Anda dapat memulai shell dari mana saja. Contoh: $ riveshell /path/to/brain
shell.js
di root proyek, menggunakan node. Contoh menggunakan otak default yang ada di folder eg/ : $ node shell.js /eg/brain
Setelah berada di dalam shell Anda dapat mengobrol dengan bot menggunakan file RiveScript di direktori itu. Untuk proses debug sederhana, Anda dapat mengetik /eval
untuk menjalankan satu baris kode JavaScript. Lihat /help
untuk lebih lanjut.
Shell menerima beberapa parameter baris perintah:
--debug
: mengaktifkan pencatatan debug verbose.--watch
: perhatikan perubahan pada folder balasan dan muat ulang bot secara otomatis ketika file diubah.--utf8
: mengaktifkan mode UTF-8.--case
: mengaktifkan pesan pengguna yang peka huruf besar-kecil. Ada dokumentasi Markdown dan HTML yang dihasilkan dari modul di folder docs. Modul utama ada di rivescript.
Lihat juga Wiki Komunitas RiveScript untuk pola desain umum dan tip & trik untuk RiveScript.
Ada contoh yang tersedia di direktori eg/ proyek ini di GitHub yang menunjukkan cara berinteraksi dengan bot RiveScript dalam berbagai cara--seperti melalui browser web atau server telnet--dan cuplikan kode lainnya serta trik berguna.
Untuk menguji dan berbagi cuplikan RiveScript yang menggunakan implementasi JavaScript, lihat RiveScript Playground.
Ini adalah aplikasi web bergaya JSFiddle untuk bermain dengan RiveScript di browser web Anda dan berbagi kode dengan orang lain.
https://play.rivivescript.com/
Versi 1.0.5 menambahkan dukungan eksperimental untuk UTF-8 dalam dokumen RiveScript. Ini dinonaktifkan secara default. Aktifkan dengan memberikan nilai true
untuk opsi utf8
di konstruktor.
Secara default (tanpa mengaktifkan mode UTF-8), pemicu hanya boleh berisi karakter ASCII dasar (tidak ada karakter asing), dan semua karakter dalam pesan pengguna akan dihilangkan kecuali huruf, angka, dan spasi. Artinya, misalnya, Anda tidak dapat menangkap alamat email pengguna dalam balasan RiveScript, karena tanda @ dan . karakter.
Jika mode UTF-8 diaktifkan, pembatasan ini akan dicabut. Pemicu hanya dibatasi untuk tidak mengandung metakarakter tertentu seperti garis miring terbalik, dan pesan pengguna hanya dihilangkan dari garis miring terbalik dan tanda kurung siku HTML (untuk melindungi dari XSS yang jelas jika Anda menggunakan RiveScript dalam aplikasi web). Selain itu, karakter tanda baca umum dihilangkan, dengan set defaultnya adalah /[.,!?;:]/g
. Hal ini dapat diatasi dengan menyediakan objek RegExp
baru sebagai atribut rs.unicodePunctuation
. Contoh:
// Make a new bot with UTF-8 mode enabled.
var bot = new RiveScript ( { utf8 : true } ) ;
// Override the punctuation characters that get stripped from the
// user's message.
bot . unicodePunctuation = new RegExp ( / [.,!?;:] / g ) ;
Tag
di RiveScript akan menangkap masukan "mentah" pengguna, sehingga Anda dapat menulis balasan untuk mendapatkan alamat email pengguna atau menyimpan karakter asing dalam namanya.
Sejauh ini hanya diuji ketika dijalankan di bawah Node.js. Saat disajikan melalui server web, berhati-hatilah agar server Anda mengirimkan pengkodean konten yang benar dengan file sumber RiveScript ( Content-Type: text/plain; charset=utf-8
).
Satu peringatan yang harus diperhatikan dalam mode UTF-8 adalah bahwa karakter tanda baca tidak dihapus dari pesan pengguna, jadi jika karakter tersebut menyertakan koma atau tanda seru, hal ini dapat memengaruhi kemampuan pencocokan pemicu Anda (Anda sama sekali tidak boleh menulis tanda baca eksplisit di sisi pemicu Anda TIDAK boleh berisi simbol seperti ?
atau ,
bahkan dengan mode UTF-8 diaktifkan, dan meskipun itu mungkin berfungsi saat ini, pembaruan di masa mendatang mungkin akan menerapkan hal ini secara kaku).
Saya menggunakan skrip npm run untuk menangani berbagai tugas pembangunan.
npm run build
- Mengkompilasi sumber ES2015+ dari src/
dengan Babel dan mengeluarkannya ke lib/
npm run test
- Membangun sumber dengan Babel seperti di atas, membuat skrip pengujian ES2015+ di test/
dan mengeluarkannya ke test.babel/
dan kemudian menjalankan nodeunit
di atasnya.npm run dist
- Menghasilkan build yang dapat didistribusikan secara penuh. Sumber dibuat dengan Babel dan kemudian diserahkan ke webpack dan uglify untuk pembuatan browser.npm run webpack
- Membuat dist/rivescript.js
dari sumber ES2015+ langsung dari src/
(menggunakan babel-loader
). Perintah ini tidak bergantung pada npm run build
dan dapat dijalankan tanpa meninggalkan kode ES5 apa pun.npm run uglify
- Memperkecil dist/rivescript.js
menjadi dist/rivescript.min.js
npm run clean
- Bersihkan semua file build.Jika versi Node lokal Anda >= 7 (mendukung Async/Await), Anda dapat menjalankan sumber ES2015+ secara langsung tanpa perlu menjalankan skrip npm apa pun. Untuk tujuan itu, saya punya Makefile.
make setup
- mengatur lingkungan dev, menginstal dependensi, dll.make run
- menjalankan shell.js
dengan menunjuk ke contoh otak. Skrip ini berjalan secara asli pada sumber ES2015+, tidak diperlukan langkah pembuatan.make test
- menjalankan nodeunit
pada sumber pengujian ES2015+ secara langsung tanpa membuatnya seperti yang dilakukan npm run test
.Saya mengalami ini di Fedora 37/node 18.7.0; jawaban dari webpack/webpack#14532 adalah:
export NODE_OPTIONS=--openssl-legacy-provider
Langkah-langkah pengelola npm modul ini:
package.json
dan src/rivescript.js
Changes.md
npm run dist
untuk membangun sumber ES5 dan menjalankan pengujian unit.npm install ../rivescript-js
)npm login
jika ini pertama kalinya di sistem baru, dan npm publish
untuk mempublikasikan modul ke NPM.rm -rf .git node_modules
untuk menghapus cruft dari folder baru.zip -r rivescript-js-VERSION.zip rivescript-js
tar -czvf rivescript-js-VERSION.tar.gz rivescript-js
The MIT License (MIT)
Copyright (c) 2020 Noah Petherbridge
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Situs web resmi RiveScript, http://www.rivescript.com/