我通过以下链接找到了一个使用html和javascript创建聊天机器人的脚本:https://www.youtube.com/watch?v=AMakWEj5vKQ
不过,我想在此处添加一些内容-即在用户将Enter键从girl.png按下后,将图像更改为其他内容。表示女孩的gif图像,并在说完话后返回girl.png。
请问有人可以指导我如何做吗?
完整代码在这里:
var trigger = [
["hi","hey","hello"],
["how are you", "how is life", "how are things"],
["what are you doing", "what is going on"],
["how old are you"],
["who are you", "are you human", "are you bot", "are you human or bot"],
["who created you", "who made you"],
["your name please", "your name", "may i know your name", "what is your name"],
["i love you"],
["happy", "good"],
["bad", "bored", "tired"],
["help me", "tell me story", "tell me joke"],
["ah", "yes", "ok", "okay", "nice", "thanks", "thank you"],
["bye", "good bye", "goodbye", "see you later"]
];
var reply = [
["Hi","Hey","Hello"],
["Fine", "Pretty well", "Fantastic"],
["Nothing much", "About to go to sleep", "Can you guest?", "I don't know actually"],
["I am 1 day old"],
["I am just a bot", "I am a bot. What are you?"],
["Kani Veri", "My God"],
["I am nameless", "I don't have a name"],
["I love you too", "Me too"],
["Have you ever felt bad?", "Glad to hear it"],
["Why?", "Why? You shouldn't!", "Try watching TV"],
["I will", "What about?"],
["Tell me a story", "Tell me a joke", "Tell me about yourself", "You are welcome"],
["Bye", "Goodbye", "See you later"]
];
var alternative = ["Haha...", "Eh..."];
document.querySelector("#input").addEventListener("keypress", function(e){
var key = e.which || e.keyCode;
if(key === 13){ //Enter button
var input = document.getElementById("input").value;
document.getElementById("user").innerHTML = input;
output(input);
}
});
function output(input){
try{
var product = input + "=" + eval(input);
} catch(e){
var text = (input.toLowerCase()).replace(/[^\w\s\d]/gi, ""); //remove all chars except words, space and
text = text.replace(/ a /g, " ").replace(/i feel /g, "").replace(/whats/g, "what is").replace(/please /g, "").replace(/ please/g, "");
if(compare(trigger, reply, text)){
var product = compare(trigger, reply, text);
} else {
var product = alternative[Math.floor(Math.random()*alternative.length)];
}
}
document.getElementById("chatbot").innerHTML = product;
speak(product);
document.getElementById("input").value = ""; //clear input value
}
function compare(arr, array, string){
var item;
for(var x=0; x<arr.length; x++){
for(var y=0; y<array.length; y++){
if(arr[x][y] == string){
items = array[x];
item = items[Math.floor(Math.random()*items.length)];
}
}
}
return item;
}
function speak(string){
var utterance = new SpeechSynthesisUtterance();
utterance.voice = speechSynthesis.getVoices().filter(function(voice){return voice.name == "Agnes";})[0];
utterance.text = string;
utterance.lang = "en-US";
utterance.volume = 1; //0-1 interval
utterance.rate = 1;
utterance.pitch = 2; //0-2 interval
speechSynthesis.speak(utterance);
}
body {
color: #421; font-weight: bold; font-size: 18px; background: #EE4;
background-image: url("girl.png"); background-repeat: repeat-y;
}
span {
color: #711;
}
::-webkit-input-placeholder {
color: #711
}
#main {
position: fixed; top: 40%; right: 60px; width: 400px;
border: 0px solid #421; padding: 40px;
}
#main div {
margin: 10px;
}
#input {
border: 0; background: #EBE547; padding: 5px; border: 1px solid #421;
}
<div id="main">
<div>user: <span id="user"></span></div>
<div>chatbot: <span id="chatbot"></span></div>
<div><input id="input" type="text" placeholder="say anything..." autocomplete="off"/></div>
</div>