Проверка пользовательского ввода Twilio autopilot на соответствие нескольким типам Twilio и типам настраиваемых полей после сбора

#twilio #twilio-api #twilio-programmable-chat #twilio-functions

#twilio #twilio-api #twilio-программируемый-чат #twilio-функции

Вопрос:

Я надеюсь, что вы здоровы и здоровы. Я пытаюсь проверить пользовательский ввод в функции Twilio на предмет конкретного «сбора» из автопилота по нескольким типам полей, некоторые из которых являются пользовательскими.

Например, я сначала запрашиваю у пользователя его имя, а затем номер телефона. Типы набора для этих вопросов сбора — Twilio.FIRST_NAME и Twilio.НОМЕР ТЕЛЕФОНА. Однако пользователь может сказать «соедините меня с кем-нибудь» на любой из этих 2 вопросов, что приведет к сбою, потому что «соедините меня с кем-нибудь» — это не имя или номер телефона. Я хочу иметь возможность каким-то образом обрабатывать подобный случай, который дает мне контроль над ходом разговора, но также может обнаруживать определенные фразы и обрабатывать их должным образом. В этом случае подключите их к кому-нибудь.

Вот моя функция 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:

У меня также была аналогичная проблема, когда мне нужно было одновременно прослушивать значение «да» / «нет» и имя сотрудника нашей компании. Я придумал своего рода обходное решение, которое, надеюсь, сможет решить и вашу проблему:

  1. Добрался до типов полей вашего автопилота (https://www.twilio.com/console/autopilot/your_bot/field-types ).
  2. Создайте пользовательский тип поля и назовите его Get_First_Name (или как хотите).
  3. Для вашего поля значений вам понадобятся два значения: First_Name и Connect_To_Someone
  4. В First_Name поле значения добавьте несколько синонимов, которые похожи на встроенные в Twilio.Тип поля FIRST_NAME — (например, «Джон», «Дэйв», «Меня зовут Боб», «Я Джо» и т. Д.).
  5. Для вашего Connect_To_Someone поля значения добавьте синонимы, которые вы хотели бы инициировать ваше событие (например, «Я хотел бы поговорить с кем-нибудь», «Можете ли вы соединить меня с человеком» и т. Д.).
  6. Там, где вы используете Twilio.FIRST_NAME , используйте Get_First_Name вместо этого. Теперь ваше Get_First_Name поле вернет вам одно из двух допустимых значений: First_Name или Connect_To_Someone .

Недостатком этого является то, что вам придется разделить ваши «собирать» вопросы и перенаправить задачу другой функции, которая будет обрабатывать логику, чтобы сказать «Если ответ Connect_To_Someone, затем соедините их с кем-то» или «Если пользователь назвал имя, затем попросите номер телефона». Затем выполните ту же песню и танец для номера телефона.

По сути, теперь у вас будет 5 функций:

  1. Спросите имя
  2. Прочитайте, ввел ли пользователь имя или попросил подключиться
  3. Подключите пользователя к кому-либо
  4. Спросите номер телефона
  5. Прочитайте, ввел ли пользователь номер телефона или попросил подключиться

Комментарии:

1. Спасибо за ответ! Это интересный обходной путь, я не уверен, хотите ли вы включить фразы для First_Name и Connect_To_Someone в тип поля, потому что я знаю, есть ли у вас другие типы полей, встроенные в другой тип поля? Другой вопрос: как вы можете определить, является ли тип ответа First_Name или Connet_To_Someone? Вы проверяете, записано ли значение или нет?

2. Итак, вот где в игру вступают синонимы / фразы. Когда вы вводите эти примеры фраз в for , скажем, Connect_To_Someone, и кто-то произносит фразу, привязанную к значению этого поля, тогда ваша память Twilio будет содержать ответ Connect_To_Someone. Смотрите Здесь , как получить этот ответ из памяти.