javascript-等待功能完成后再继续

时间:2016-02-23 23:54:29

标签: javascript cordova phonegap-build chatbot

我正在建立一个聊天机器人。聊天脚本的一些示例如下:

var convpatterns = new Array (
  new Array (".*ask me a question*", Question1),
  new Array ("I need (.*)" , "Why do you need $1?" , "Are you sure you need $1?"),
  new Array (".*sorry.*", "Please dont apologise", "Apologies are not necessary", "it is ok, it didn't bother me")
);

所以基本上如果用户键入“问我一个问题”,它会将用户引导到Question1()功能。如果用户键入“我需要一个朋友”,聊天机器人将通过询问“你为什么需要朋友?”来回复。或者“你确定你需要一个朋友吗?”

function Question1(){        
  var textbox=document.getElementById("messages").value;
  window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Do you smoke?");

  if (textbox="Yes"){
    window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Oh, do you know smoking is bad for your health?");
  } else if (textbox="No"){
    window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"That's great to hear that you don't smoke!");
  }
}

window.ispeech.speak将允许聊天机器人口头说出这些词语。

因此,当聊天机器人询问“你吸烟吗?”,并且用户在文本框中键入“是”或“否”时,聊天机器人会根据回复进行响应。

我想要的是Question1()函数在聊天机器人运行之前完成运行并询问其他内容(因此它等待用户在函数完成之前键入“yes”或“no”因为我不希望用户的响应与数组中可用的其他脚本冲突(例如,文本框的输入“是”可能与脚本中的另一个“是”数组冲突),并且可以开始新的脚本)。

1 个答案:

答案 0 :(得分:0)

你实际上需要像状态机这样的东西。但是总是可以在变量中保存当前的-let的say-命令。然后,您始终检查要完成的命令。只要当前命令未设置为null(表示没有当前命令),您就无法侦听另一个命令。你们每个人都应该至少有一个最终状态。它可以是用户输入的值。当满足当前命令的最终状态条件时,您可以将其设置为空。