收集后,对照多个Twilio类型和自定义字段类型检查Twilio自动驾驶仪用户输入


我希望你身体健康。我正试图检查Twilio函数中的用户输入;收集";从自动驾驶到多种字段类型,其中一些是自定义的。

例如,我先询问用户的姓名,然后询问用户的电话号码。这些收集问题的集合类型是Twilio.FIRST_NAME和Twilio.PHONE_NUMBER;将我连接到某人";在这两个问题中的任何一个问题上将导致失败;将我连接到某人";不是姓名或电话号码。我希望能够以某种方式处理这样的情况,使我能够控制对话的流程,但也能够检测特定的短语并正确处理。在这种情况下,将他们连接到某人。

这是我的Twilio函数,它在初始化任务之后执行:

exports.handler = function (context, event, callback) {
var responseObject;
responseObject ={
"actions": [
{
"collect": {
"name": "details",
"questions": [
{
"question": "May I get your first name?",
"name": "name",
"type": "Twilio.FIRST_NAME",
"validate": {
"on_failure": {
"messages": [
{
"say": "Sorry, that doesn't seem to be right, can you please try again?"
}
],
"repeat_question": true
},
"max_attempts": {
"redirect":{
"method": "POST",
"uri": "https://quartz-salamander-1024.twil.io/call-forwarding"
},
"num_attempts": 2
}
}
},
{
"question": "Can I get your contact number?",
"name": "phoneNumber",
"type": "Twilio.PHONE_NUMBER",
"validate": {
"on_failure": {
"messages": [
{
"say": "Sorry, that doesn't seem to be right, can you please try again?"
}
],
"repeat_question": true
},
"max_attempts": {
"redirect":{
"method": "POST",
"uri": "https://quartz-salamander-1024.twil.io/call-forwarding"
},
"num_attempts": 2
}
}
},
],
"on_complete": {
"redirect": {
"method": "POST",
"uri": "https://quartz-salamander-1024.twil.io/confirmation"
}
}
}
}
]
}
callback(null, responseObject);
}

我想过为每个问题创建多个任务,但我打算添加更多的问题,我必须收集他们的答案并以某种方式验证这些问题,并且通过引入多个任务我失去了对对话流程的控制。

谢谢

我也遇到了类似的问题,我需要同时听取是/否值和公司员工的姓名。我想出了一种变通的解决方案,希望也能解决你的问题:

  1. 了解自动驾驶仪的字段类型(https://www.twilio.com/console/autopilot/your_bot/field-types)
  2. 创建一个自定义字段类型,并将其命名为Get_First_Name(或您想要的任何类型(
  3. 对于"值"字段,您需要两个值:First_NameConnect_To_Someone
  4. First_Name值字段中,添加一些类似于内置Twilio.FIRST_NAME字段类型的同义词(例如"John"、"Dave"、"My NAME is Bob"、"I am Joe"等(
  5. 对于你的Connect_To_Someone值字段,添加你想触发事件的同义词(例如"我想和某人说话"、"你能把我和一个人联系起来吗"等(
  6. 如果使用Twilio.FIRST_NAME,请改用Get_First_Name。您的Get_First_Name字段现在将返回两个有效值之一:First_NameConnect_To_Someone

这样做的缺点是,你将不得不将你的";收集";问题并将任务重定向到另一个函数,该函数将处理说"是"的逻辑;如果答案是Connect_To_Someone,则将它们连接到某人";或";如果用户给出了名字,则要求提供电话号码";。然后,对电话号码做同样的歌舞。

从本质上讲,您现在有5个功能:

  1. 询问名字
  2. 读取用户是否输入了名字或是否要求连接
  3. 将用户连接到某人
  4. 询问电话号码
  5. 读取用户是否输入了电话号码或是否要求连接

最新更新