#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:
У меня также была аналогичная проблема, когда мне нужно было одновременно прослушивать значение «да» / «нет» и имя сотрудника нашей компании. Я придумал своего рода обходное решение, которое, надеюсь, сможет решить и вашу проблему:
- Добрался до типов полей вашего автопилота (https://www.twilio.com/console/autopilot/your_bot/field-types ).
- Создайте пользовательский тип поля и назовите его
Get_First_Name
(или как хотите). - Для вашего поля значений вам понадобятся два значения:
First_Name
иConnect_To_Someone
- В
First_Name
поле значения добавьте несколько синонимов, которые похожи на встроенные в Twilio.Тип поля FIRST_NAME — (например, «Джон», «Дэйв», «Меня зовут Боб», «Я Джо» и т. Д.). - Для вашего
Connect_To_Someone
поля значения добавьте синонимы, которые вы хотели бы инициировать ваше событие (например, «Я хотел бы поговорить с кем-нибудь», «Можете ли вы соединить меня с человеком» и т. Д.). - Там, где вы используете
Twilio.FIRST_NAME
, используйтеGet_First_Name
вместо этого. Теперь вашеGet_First_Name
поле вернет вам одно из двух допустимых значений:First_Name
илиConnect_To_Someone
.
Недостатком этого является то, что вам придется разделить ваши «собирать» вопросы и перенаправить задачу другой функции, которая будет обрабатывать логику, чтобы сказать «Если ответ Connect_To_Someone, затем соедините их с кем-то» или «Если пользователь назвал имя, затем попросите номер телефона». Затем выполните ту же песню и танец для номера телефона.
По сути, теперь у вас будет 5 функций:
- Спросите имя
- Прочитайте, ввел ли пользователь имя или попросил подключиться
- Подключите пользователя к кому-либо
- Спросите номер телефона
- Прочитайте, ввел ли пользователь номер телефона или попросил подключиться
Комментарии:
1. Спасибо за ответ! Это интересный обходной путь, я не уверен, хотите ли вы включить фразы для First_Name и Connect_To_Someone в тип поля, потому что я знаю, есть ли у вас другие типы полей, встроенные в другой тип поля? Другой вопрос: как вы можете определить, является ли тип ответа First_Name или Connet_To_Someone? Вы проверяете, записано ли значение или нет?
2. Итак, вот где в игру вступают синонимы / фразы. Когда вы вводите эти примеры фраз в for , скажем, Connect_To_Someone, и кто-то произносит фразу, привязанную к значению этого поля, тогда ваша память Twilio будет содержать ответ Connect_To_Someone. Смотрите Здесь , как получить этот ответ из памяти.