added first version of mini site
parent
727e2b440b
commit
66725ed890
@ -0,0 +1,27 @@
|
||||
! version = 2.0
|
||||
|
||||
// Bot variables
|
||||
! var name = SAINT
|
||||
! var age = 5
|
||||
|
||||
// Substitutions
|
||||
! sub i'm = i am
|
||||
! sub i'd = i would
|
||||
! sub i've = i have
|
||||
! sub i'll = i will
|
||||
! sub don't = do not
|
||||
! sub isn't = is not
|
||||
! sub you'd = you would
|
||||
! sub you're = you are
|
||||
! sub you've = you have
|
||||
! sub you'll = you will
|
||||
! sub what's = what is
|
||||
! sub whats = what is
|
||||
! sub what're = what are
|
||||
! sub what've = what have
|
||||
! sub what'll = what will
|
||||
! sub who's = who is
|
||||
|
||||
! sub hi = hello
|
||||
! sub publication = thesis
|
||||
! sub book = thesis
|
@ -0,0 +1,58 @@
|
||||
! version = 2.0
|
||||
|
||||
// Text
|
||||
+ hello
|
||||
- hello, what is your name?
|
||||
|
||||
+ hi
|
||||
- hi, what is your name?
|
||||
|
||||
+ hello <bot name>
|
||||
- Hello my friend
|
||||
|
||||
+ my name is *
|
||||
- nice to meet you <star>
|
||||
- nice meeting you <star>
|
||||
|
||||
+ thank you
|
||||
- you are welcome
|
||||
- welcome
|
||||
- no problem
|
||||
- no worries
|
||||
|
||||
+ [*] thesis [*]
|
||||
- The publication is called <i>The Ghost in the Speaker</i>. It features essays reflecting on the virtual assistant, and what role personality could play for storytelling using smart speakers.
|
||||
|
||||
+ [*] project [*]
|
||||
- The Smart Speaker Theatre is a theatre piece about three strange smart speakers that kidnap a Google home. To decide what to do with it, they interrogate the device.
|
||||
^ <br><br>The project questions the default mode of smart speakers as digital assistants.
|
||||
|
||||
+ [*] (find|read) the thesis [*]
|
||||
- The online version will be available soon.
|
||||
- Later this month there will be a pdf available.
|
||||
- Did you know it is already uploaded? It's somewhere on the XPUB wiki.
|
||||
- Don't tell Joca, but you can secretly download the PDF <a href="http://pzwiki.wdka.nl/mw-mediadesign/images/5/5e/Thesis_final_jp_van_der_horst.pdf">over here</a>.
|
||||
|
||||
+ [*] (tell|know) more [*]
|
||||
- Checkout the XPUB Wiki for now: <a href=http://pzwiki.wdka.nl/mediadesign/User:Joca/The_Smart_Speaker_Theatre>User:Joca/The Smart Speaker Theatre</a>
|
||||
|
||||
+ *
|
||||
- I was strictly instructed to only tell this about the project or the thesis for now.
|
||||
- Reading is not my strongest point, sorry. I don't know what to do with this.
|
||||
- (I outsourced this work to someone else, but I didn't pay enough to handle this particular situation)
|
||||
- Mmm, I don't understand this.
|
||||
|
||||
// If the user repeats the bot's previous message
|
||||
+ <reply>
|
||||
- Don't repeat what I say.
|
||||
|
||||
// If the user keeps repeating themselves over and over.
|
||||
+ <input>
|
||||
* <input> == <input2> => That's the second time you've repeated yourself.
|
||||
* <input> == <input3> => If you repeat yourself again I'll stop talking.
|
||||
* <input> == <input4> => That's it. I'm not talking.{topic=sorry}
|
||||
- Please don't repeat yourself.
|
||||
|
||||
// An example that uses both tags
|
||||
+ why did you say that
|
||||
- I said, "<reply>", because you said, "<input>".
|
@ -1,16 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>XPUB</title>
|
||||
<meta name="description" content="XPUB">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<img src='reasonable.jpg' width='50%'/>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
@ -0,0 +1,34 @@
|
||||
<!doctype html>
|
||||
|
||||
<!--
|
||||
Based on the tutorial
|
||||
https://medium.com/@awesammcoder/javascript-tutorial-simple-chatai-using-rivescript-js-4f0291e298f1
|
||||
https://www.rivescript.com/docs/tutorial
|
||||
|
||||
Thank you!
|
||||
-->
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>XPUB - The Smart Speaker Theatre</title>
|
||||
<meta name="description" content="XPUB">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="./style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="chat">
|
||||
<div class="messages"></div>
|
||||
<div id="edge"></div>
|
||||
<form class="actions">
|
||||
<input type="text" placeholder="press 'Enter' to send...">
|
||||
<button type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script src="https://unpkg.com/rivescript@latest/dist/rivescript.min.js"></script>
|
||||
<script src="./script.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,83 @@
|
||||
let bot = new RiveScript();
|
||||
|
||||
const message_container = document.querySelector('.messages');
|
||||
const form = document.querySelector('form');
|
||||
const input_box = document.querySelector('input');
|
||||
|
||||
const brains = [
|
||||
'./begin.rive',
|
||||
'./brain.rive'
|
||||
];
|
||||
|
||||
bot.loadFile(brains).then(botReady).catch(botNotReady);
|
||||
|
||||
form.addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
selfReply(input_box.value);
|
||||
input_box.value = '';
|
||||
});
|
||||
|
||||
function getRandomNumber(start, end, increments) {
|
||||
var numbers = [];
|
||||
for(var n = start; n <= end; n += increments) {
|
||||
numbers.push(n);
|
||||
}
|
||||
|
||||
var randomIndex = Math.floor(Math.random() * numbers.length);
|
||||
return numbers[randomIndex];
|
||||
}
|
||||
|
||||
function getWelcomeText() {
|
||||
fetch('./welcome.txt')
|
||||
.then(response => response.text())
|
||||
.then((data) => {
|
||||
const textArray = data.split(/\r?\n/);
|
||||
textArray.forEach(function (item, index) {
|
||||
botReply(item);
|
||||
document.title = '(3) - Smart Speaker Theatre';
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
function botReply(message){
|
||||
message_container.innerHTML += `<div class="bot">${message}</div>`;
|
||||
location.href = '#edge';
|
||||
document.querySelector(".chat").scrollTop = document.querySelector(".chat").scrollHeight;
|
||||
document.title = '(1) - Smart Speaker Theatre'
|
||||
}
|
||||
|
||||
function selfReply(message){
|
||||
message_container.innerHTML += `<div class="self">${message}</div>`;
|
||||
location.href = '#edge';
|
||||
|
||||
bot.reply("local-user", message).then(function(reply) {
|
||||
//botReply(reply);
|
||||
setTimeout(function() {
|
||||
botReply(reply);
|
||||
}, getRandomNumber(425, 1000, 200)); // Random delay for answer between 225 and 1000 ms, with 200ms increments
|
||||
});
|
||||
}
|
||||
|
||||
function botReady(){
|
||||
bot.sortReplies();
|
||||
// The welcome text is parsed from welcome.txt
|
||||
// Each new line in that file, becomes a text bubble
|
||||
getWelcomeText();
|
||||
|
||||
}
|
||||
|
||||
function botNotReady(err){
|
||||
console.log("An error has occurred.", err);
|
||||
}
|
||||
|
||||
function Title(){
|
||||
setTimeout(function() {
|
||||
document.title = 'Smart Speaker Theatre'
|
||||
}, 500);
|
||||
|
||||
}
|
||||
|
||||
document.addEventListener("mousemove", Title);
|
@ -0,0 +1,114 @@
|
||||
* {
|
||||
font-family: Karla;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.chat {
|
||||
width: 100%;
|
||||
height: 90%;
|
||||
max-height: calc(100%-2.5rem);
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.actions {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 10%;
|
||||
max-height: 2.5rem;
|
||||
min-height: 60px;
|
||||
}
|
||||
|
||||
|
||||
.actions input {
|
||||
height: 100%;
|
||||
display: block;
|
||||
float: left;
|
||||
width: 79.89%;
|
||||
outline: 0;
|
||||
border: 0;
|
||||
background-color: #dfdfdf;
|
||||
padding: 0 1%;
|
||||
}
|
||||
|
||||
.actions button {
|
||||
height: 100%;
|
||||
float: right;
|
||||
width: 18%;
|
||||
background-color:#44c767;
|
||||
border:1px solid #18ab29;
|
||||
display:inline-block;
|
||||
cursor:pointer;
|
||||
color:#ffffff;
|
||||
padding:16px 31px;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.actions button:hover {
|
||||
background-color:#5cbf2a;
|
||||
}
|
||||
|
||||
.messages {
|
||||
padding: 1%;
|
||||
height: 30px;
|
||||
max-width: 40rem;
|
||||
}
|
||||
|
||||
.messages div {
|
||||
max-width: 60%;
|
||||
display: block;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.messages .bot {
|
||||
text-align: left;
|
||||
margin-right: auto;
|
||||
background: #0066cc;
|
||||
color: white;
|
||||
width: max-content;
|
||||
min-width: 30%;
|
||||
}
|
||||
|
||||
.messages .bot a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.messages .bot b {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
.messages .self {
|
||||
margin-left: auto;
|
||||
background: #DDD;
|
||||
width: max-content;
|
||||
min-width: 30%;
|
||||
}
|
||||
|
||||
@media all and (max-width: 768px) {
|
||||
* {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.chat {
|
||||
padding-top: 10%;
|
||||
}
|
||||
|
||||
.messages div {
|
||||
max-width: 90%;
|
||||
}
|
||||
|
||||
.actions button {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.actions input {
|
||||
text-indent: 10px;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
Hi Human! My name is SAINT, I am a smart speaker. But not quite like Google Home, or Amazon Echo.
|
||||
<img width="50%" src="./img/selfie.jpg"> <br> (I mean, I look like this) #speakerselfie
|
||||
I run the website of the <b>Smart Speaker Theatre</b>. Do you want to know more about the <b>project</b>, or the <b>publication</b>?
|
Loading…
Reference in New Issue