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

收集后,根据多个Twilio类型和自定义字段类型检查Twilio自动驾驶仪用户输入,twilio,twilio-api,twilio-programmable-chat,twilio-functions,Twilio,Twilio Api,Twilio Programmable Chat,Twilio Functions,我希望你身体健康。我试图检查Twilio函数中的用户输入,以查看autopilot针对多个字段类型的特定“collect”,其中一些字段类型是自定义的 例如,我首先询问用户的姓名,然后询问他们的电话号码。这些收集问题的集合类型为Twilio.FIRST_NAME和Twilio.PHONE_NUMBER。但是,用户可能会对这两个问题中的任何一个说“将我连接到某人”,这将导致失败,因为“将我连接到某人”不是姓名或电话号码。我希望能够以某种方式处理这样的情况,让我能够控制对话的流程,但也能够检测特定的

我希望你身体健康。我试图检查Twilio函数中的用户输入,以查看autopilot针对多个字段类型的特定“collect”,其中一些字段类型是自定义的

例如,我首先询问用户的姓名,然后询问他们的电话号码。这些收集问题的集合类型为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);
}
我想为每个问题创建多个任务,但是我打算添加更多的问题,我必须收集他们的答案并以某种方式验证,通过引入多个任务,我失去了对对话流程的控制


谢谢

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

  • 进入自动驾驶仪的字段类型()
  • 创建一个自定义字段类型并将其命名为
    Get\u First\u name
    (或任何您喜欢的名称)
  • 对于值字段,您需要两个值:
    First\u Name
    Connect\u To\u Someone
  • First_Name
    value字段中,添加一些与内置的Twilio.First_Name字段类型类似的同义词(例如,“John”、“Dave”、“我的名字是Bob”、“我是Joe”等)
  • 对于您的
    Connect_To_Someone
    值字段,添加您希望触发事件的同义词(例如,“我想与某人通话”、“您能将我连接到人吗”等)
  • 如果您使用的是
    Twilio.FIRST\u NAME
    ,请改用
    Get\u FIRST\u NAME
    。您的
    Get\u First\u Name
    字段现在将返回两个有效值之一:
    First\u Name
    Connect\u To\u Someone
  • 这样做的缺点是,您必须将“收集”问题分开,并将任务重定向到另一个功能,该功能将处理以下逻辑:“如果答案是连接某人,则将他们连接到某人”或“如果用户给出了名字,则询问电话号码”。然后,为电话号码做同样的歌曲和舞蹈

    本质上,您现在将有5个函数:

  • 询问名字
  • 了解用户是否输入了名字或要求连接
  • 将用户连接到某人
  • 询问电话号码
  • 了解用户是否输入了电话号码或是否要求连接

  • 我也有一个类似的问题,我需要同时倾听是/否值和我们公司员工的姓名。我提出了一种解决方案,希望也能解决您的问题:

  • 进入自动驾驶仪的字段类型()
  • 创建一个自定义字段类型并将其命名为
    Get\u First\u name
    (或任何您喜欢的名称)
  • 对于值字段,您需要两个值:
    First\u Name
    Connect\u To\u Someone
  • First_Name
    value字段中,添加一些与内置的Twilio.First_Name字段类型类似的同义词(例如,“John”、“Dave”、“我的名字是Bob”、“我是Joe”等)
  • 对于您的
    Connect_To_Someone
    值字段,添加您希望触发事件的同义词(例如,“我想与某人通话”、“您能将我连接到人吗”等)
  • 如果您使用的是
    Twilio.FIRST\u NAME
    ,请改用
    Get\u FIRST\u NAME
    。您的
    Get\u First\u Name
    字段现在将返回两个有效值之一:
    First\u Name
    Connect\u To\u Someone
  • 这样做的缺点是,您必须将“收集”问题分开,并将任务重定向到另一个功能,该功能将处理以下逻辑:“如果答案是连接某人,则将他们连接到某人”或“如果用户给出了名字,则询问电话号码”。然后,为电话号码做同样的歌曲和舞蹈

    本质上,您现在将有5个函数:

  • 询问名字
  • 了解用户是否输入了名字或要求连接
  • 将用户连接到某人
  • 询问电话号码
  • 了解用户是否输入了电话号码或是否要求连接

  • 谢谢你的回复!这是一个有趣的解决方法,我不确定您是否打算在字段类型中包含第一个\u名称的短语并将\u连接到\u某人,因为我知道您是否在另一个字段类型中内置了其他字段类型?另一个问题是,你如何确定答案的类型是名字还是与某人的联系?您是否正在检查是否捕获了一个值?因此,同义词/短语就是在这里起作用的。当您在for中输入这些示例短语时,比如说Connect_To_Someone,而某人说了一个与该字段值相关的短语,那么您的Twilio内存将包含答案Connect_To_Someone。看看如何从记忆中得到答案。谢谢你的回复!这是一个有趣的解决方法,我不确定您是否打算在字段类型中包含第一个\u名称的短语并将\u连接到\u某人,因为我知道您是否在另一个字段类型中内置了其他字段类型?另一个问题是,你如何确定答案的类型是名字还是与某人的联系?您是否正在检查是否捕获了一个值?因此,同义词/短语就是在这里起作用的。当您输入这些示例短语时,我