收集后根据多个 Twilio 类型和自定义字段类型检查 Twilio 自动驾驶仪用户输入
Check Twilio autopilot user input against multiple Twilio Types and custom Field Types after collect
希望你身体健康。我正在尝试检查 Twilio 函数中的用户输入,以针对多个字段类型(其中一些是自定义的)自动驾驶仪中的特定“收集”。
例如,我先询问用户的姓名,然后再询问他们的 phone 号码。这些收集问题的集合类型是 Twilio.FIRST_NAME 和 Twilio.PHONE_NUMBER。但是,用户可能会在这两个问题中的任何一个问题上说“将我连接到某人”,这将导致失败,因为“将我连接到某人”不是姓名或 phone 号码。我希望能够以某种方式处理这样的情况,让我能够控制对话的流程,但也能够检测到特定的短语并正确处理它。在这种情况下,将他们与某人联系起来。
这是我在启动任务后执行的 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);
}
我想为每个问题创建多个任务,但我打算添加更多问题,我必须收集他们的答案并以某种方式验证,通过引入多个任务,我失去了对对话流程的控制。
谢谢
我也遇到了类似的问题,我需要同时监听 yes/no 值和我们公司员工的姓名。我提出了一种解决方法,希望也能解决您的问题:
- 已找到您的 Autopilot 字段类型(https://www.twilio.com/console/autopilot/your_bot/field-types)。
- 创建自定义字段类型并将其命名为
Get_First_Name
(或您喜欢的任何名称)。
- 对于您的值字段,您需要两个值:
First_Name
和 Connect_To_Someone
- 在您的
First_Name
值字段中,添加一些类似于内置 Twilio.FIRST_NAME 字段类型的同义词(例如“John”、“Dave”、“My name is鲍勃”、“我是乔”等)。
- 对于您的
Connect_To_Someone
值字段,添加您想要触发事件的同义词(例如“我想和某人交谈”、“你能帮我联系一个人吗”、等)。
- 在您使用
Twilio.FIRST_NAME
的地方,改用 Get_First_Name
。您的 Get_First_Name
字段现在将返回两个有效值之一:First_Name
或 Connect_To_Someone
.
这样做的缺点是您必须拆分“收集”问题并将任务重定向到另一个函数,该函数将处理逻辑“如果答案是 Connect_To_Someone,则将它们连接起来给某人”或“如果用户给出了名字,则要求提供 phone 号码”。然后,为phone个号码做同样的歌舞。
从本质上讲,您现在将拥有 5 个功能:
- 询问名字
- 读取用户是否输入了名字或要求连接
- 将用户与某人联系起来
- 求phone个数
- 读取用户是否输入了 phone 号码或要求连接
希望你身体健康。我正在尝试检查 Twilio 函数中的用户输入,以针对多个字段类型(其中一些是自定义的)自动驾驶仪中的特定“收集”。
例如,我先询问用户的姓名,然后再询问他们的 phone 号码。这些收集问题的集合类型是 Twilio.FIRST_NAME 和 Twilio.PHONE_NUMBER。但是,用户可能会在这两个问题中的任何一个问题上说“将我连接到某人”,这将导致失败,因为“将我连接到某人”不是姓名或 phone 号码。我希望能够以某种方式处理这样的情况,让我能够控制对话的流程,但也能够检测到特定的短语并正确处理它。在这种情况下,将他们与某人联系起来。
这是我在启动任务后执行的 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);
}
我想为每个问题创建多个任务,但我打算添加更多问题,我必须收集他们的答案并以某种方式验证,通过引入多个任务,我失去了对对话流程的控制。
谢谢
我也遇到了类似的问题,我需要同时监听 yes/no 值和我们公司员工的姓名。我提出了一种解决方法,希望也能解决您的问题:
- 已找到您的 Autopilot 字段类型(https://www.twilio.com/console/autopilot/your_bot/field-types)。
- 创建自定义字段类型并将其命名为
Get_First_Name
(或您喜欢的任何名称)。 - 对于您的值字段,您需要两个值:
First_Name
和Connect_To_Someone
- 在您的
First_Name
值字段中,添加一些类似于内置 Twilio.FIRST_NAME 字段类型的同义词(例如“John”、“Dave”、“My name is鲍勃”、“我是乔”等)。 - 对于您的
Connect_To_Someone
值字段,添加您想要触发事件的同义词(例如“我想和某人交谈”、“你能帮我联系一个人吗”、等)。 - 在您使用
Twilio.FIRST_NAME
的地方,改用Get_First_Name
。您的Get_First_Name
字段现在将返回两个有效值之一:First_Name
或Connect_To_Someone
.
这样做的缺点是您必须拆分“收集”问题并将任务重定向到另一个函数,该函数将处理逻辑“如果答案是 Connect_To_Someone,则将它们连接起来给某人”或“如果用户给出了名字,则要求提供 phone 号码”。然后,为phone个号码做同样的歌舞。
从本质上讲,您现在将拥有 5 个功能:
- 询问名字
- 读取用户是否输入了名字或要求连接
- 将用户与某人联系起来
- 求phone个数
- 读取用户是否输入了 phone 号码或要求连接