Рубрики
Без рубрики

Построить богомодный тест-бот за восемь минут

Постройте BuzzFeed без серверов без промежутков без сердца, используя SMS в течение 8 минут с Twilio. Помечено с JavaScript, Bot, Ai, Serverless.

Вы когда-нибудь задумывались, какой продукт Twilio вы больше всего подобного? Теперь вы можете написать +1 (321) 340-6085, чтобы узнать!

Эти развлечения “Какой ты?”? “ Викторины имеют Воскрес в популярности Разделяя в среднем в 1900 раз в социальных сетях По словам Buzzsumo Отказ Читайте дальше, чтобы увидеть, как вы можете сделать разбитый и веселый викторину в стиле BuzzFeed «какой продукт Twilio вы?» с твилио.

Настройте и настройте свой бот с номером Twilio

Чтобы следовать с этим постом, вам нужно две вещи:

Перейти к себе Автопилот Консоль и под Создать бот Выбрать Начните с нуля Отказ

Дайте свой бот название, как Что-twilio-product – это ты и нажмите Создать бот Отказ

Выберите Каналы из левого меню, а затем нажмите Программируемая обмен сообщениями Отказ

Скопируйте этот URL-адрес обмена сообщениями и на новой вкладке Настройте номер Twilio в вашем Консоль номера телефона Отказ

Если у вас еще нет номера Twilio, перейдите к Телефонные номера Раздел вашего Twilio Console И искать номер телефона в вашей стране и регионе, убедившись, что флажок SMS отмечен.

В Обмен сообщениями Раздел вашего купленного номера, в Появится сообщение Раздел, установите WebHook, чтобы стать URL-адресом вашего обмена сообщениями и ударить Сохранить Отказ

Сделайте викторину стиля Buzzfeed с автопилотом

Назад в консоль Bot Autopilot, вы должны увидеть несколько задач по умолчанию, которые уже были обучены некоторыми образцами. Например, Прощай Задача говорит: «Спасибо! Пожалуйста, обратитесь снова, если вам нужно что-нибудь. До свидания.” И запускается фразами, такими как «Это все», «нет благодарности» и т. Д. Приветствие это еще одна готовая задача. Давайте отредактим это сейчас.

Редактировать Приветствие Нажав Программа Рядом с ним, чтобы включить следующее JSON, которое представит бот с помощью действий, а затем перенаправить на новую задачу, называемую main_collect Отказ Вопросы викторины будут заданы в Main_Collect.

{
        "actions": [
                {
                        "say": "What Twilio product are you? Answer 3 questions to find out!"
                },
                {
                        "redirect": "task://main_collect"
                }
        ]
}

Давайте сделаем задачу Main_coLlect сейчас. Вернитесь к Задачи и нажмите Добавить задачу , вызывая это main_collect Отказ Обычно вы, вероятно, захотите тренировать эту задачу на образцах, чтобы вызвать его, но потому что мы перенаправляем к нему от Приветствие Нам не нужно беспокоиться о образцах. Это простой бот, он просто хочет знать, какой продукт Twilio вы!

Сначала мы добавляем Собирать к нашим Джонским действиям Bin. Это просит серию вопросов вместе в группе. Мы также предоставляем название потока Collect (в этом случае это what_twilio_product_are_you ), а затем массив вопросов. У каждого вопроса есть имя и Проверить Инструкция по ограничению того, с чем пользователь может ответить. Мы используем Проверить атрибут разрешенные_вены обеспечить массив возможных ответов. Если это была викторина, где есть только один правильный ответ, он может иметь только одно разрешенное значение.

Если пользователь отправляет в ответ, который не в разрешенные_вены , скажи в on_failure вернутся “Пожалуйста, отправьте a, b, c или d!” И повторите вопрос к пользователю, чтобы они могли попробовать еще раз. Максимальное количество попыток пользователя может попытаться ответить на вопрос, в три раза три раза, а затем, если они не отправляют допустимый ответ, они перенаправлены обратно в приветствие задача.

{
        "actions": [
                {
                        "collect": {
                                "name": "what_twilio_product_are_you",
                                "questions": [
                                                {
                                                "question": "1. You have a virtual meeting🖥️ at 9am🌅. What are you doing at 8:58am?\n A. reviewing the meeting notes and agenda so you can best contribute\n B. You're drinking coffee☕, getting ready to lead the meeting or watch someone you delegated lead the meeting.\n C. Just waking up.🛏You're efficient and will look polished from the top up👔.\n D. Checking your email and Slack📰, getting some easy work tasks out of the way.",
                                                "name": "pandemic_meeting",
                                                "validate": {
                                                        "allowed_values": {
                                                                "list": [
                                                                        "a",
                                                                        "b",
                                                                        "c",
                                                                        "d"
                                                                ]
                                                        },
                                                        "on_failure": {
                                                                "messages": [
                                                                        {
                                                                                "say": "Please send a, b, c, or d!"
                                                                        }
                                                                ],
                                                                "repeat_question": true
                                                        },
                                                        "max_attempts": {
                                                                "redirect": "task://greeting",
                                                                "num_attempts": 3
                                                        }
                                                }
                                        }
                                                ]
                        }
                }
        ]
}

Затем вы можете скопировать и вставить строки, выделенные выше для каждого вопроса, который вы хотите, чтобы ваш Quiz-Bot спросить. Ниже введен код включает в себя три вопроса, но вы можете найти полный Собирать поток со всеми пятнадцатьми вопросами в этом Github Gist :

{
        "actions": [
                {
                        "collect": {
                                "name": "what_twilio_product_are_you",
                                "questions": [
                                        {
                                                "question": "1. You have a virtual meeting🖥️ at 9am🌅. What are you doing at 8:58am?\n A. reviewing the meeting notes and agenda so you can best contribute\n B. You're drinking coffee☕, getting ready to lead the meeting or watch someone you delegated lead the meeting.\n C. Just waking up.🛏You're efficient and will look polished from the top up👔.\n D. Checking your email and Slack📰, getting some easy work tasks out of the way.",
                                                "name": "pandemic_meeting",
                                                "validate": {
                                                        "allowed_values": {
                                                                "list": [
                                                                        "a",
                                                                        "b",
                                                                        "c",
                                                                        "d"
                                                                ]
                                                        },
                                                        "on_failure": {
                                                                "messages": [
                                                                        {
                                                                                "say": "Please send a, b, c, or d!"
                                                                        }
                                                                ],
                                                                "repeat_question": true
                                                        },
                                                        "max_attempts": {
                                                                "redirect": "task://greeting",
                                                                "num_attempts": 3
                                                        }
                                                }
                                        },
                                        {
                                                "question": "2. What unusual celebrity baby name do you secretly🤐like💗?\n A. Pilot Inspektor\n B. Banks💰\n C. X Æ A-12🤖\n D. Apple🍎",
                                                "name": "celeb_baby_name",
                                                "validate": {
                                                        "allowed_values": {
                                                                "list": [
                                                                        "a",
                                                                        "b",
                                                                        "c",
                                                                        "d"
                                                                ]
                                                        },
                                                        "on_failure": {
                                                                "messages": [
                                                                        {
                                                                                "say": "Please send a, b, c, or d!"
                                                                        }
                                                                ],
                                                                "repeat_question": true
                                                        },
                                                        "max_attempts": {
                                                                "redirect": "task://greeting",
                                                                "num_attempts": 3
                                                        }
                                                }
                                        },
                                        {
                                                "question": "3. What's your brunch order?\n A. pancakes🥞, waffles, or french toast \n B. omelette or frittatta🥚\n C. avocado🥑 toast🍞\n D. oatmeal",
                                                "name": "brunch_order",
                                                "validate": {
                                                        "allowed_values": {
                                                                "list": [
                                                                        "a",
                                                                        "b",
                                                                        "c",
                                                                        "d"
                                                                ]
                                                        },
                                                        "on_failure": {
                                                                "messages": [
                                                                        {
                                                                                "say": "Please send a, b, c, or d!"
                                                                        }
                                                                ],
                                                                "repeat_question": true
                                                        },
                                                        "max_attempts": {
                                                                "redirect": "task://greeting",
                                                                "num_attempts": 3
                                                        }
                                                }
                                        }
                                ],
                                "on_complete": {
                                        "redirect": {
                                                "method": "POST",
                                                "uri": "https://YOUR-TWILIO-FUNCTION-URL.twil.io/buzzfeedquiz"
                                        }
                                }
                        }
                }
        ]
}

После последнего вопроса бот перенаправляет функцию Twilio, чтобы поднять все ответы и рассчитать все важный ответ на «какой продукт Twilio?»

Рассчитайте результаты с JavaScript в функции Twilio

Сделайте новую функцию, нажав кнопку Red Plus в вашем Функции консоли Отказ Выберите Пустой Шаблон и нажмите Создать Отказ

Добавить /buzzfeed Quiz. К пути, затем скопируйте путь и вставьте его в автопилот не JSON BINS Oncomplete: перенаправить: URI Отказ Затем добавьте следующий код JavaScript, чтобы получить память каждой из пяток ответов на ответы и создайте пустой объект ответа, который скоро будет заполнен.

//get answer from Memory
    let memory = JSON.parse(event.Memory);
    let respObj = {}; //empty response object to fill with Autopilot response SMS message 
    let q1 = memory.twilio.collected_data.what_twilio_product_are_you.answers.pandemic_meeting.answer.toLowerCase(); 
    let q2 = memory.twilio.collected_data.what_twilio_product_are_you.answers.celeb_baby_name.answer.toLowerCase();
    let q3 = memory.twilio.collected_data.what_twilio_product_are_you.answers.brunch_order.answer.toLowerCase();

Затем мы рассчитываем, какой ответ (A, B, C или D) был наиболее распространен в этом чистоте ES6 способом (с сложностью O (N)!)

const result = Object.entries(
    [q1, q2, q3].reduce((previous, current) => {
        if (previous[current] === undefined) previous[current] = 1;
        else previous[current]++;
        return previous;
    }, {})).reduce((previous, current) => (current[1] >= previous[1] ? current : previous))[0];

Наконец, мы возвращаем сообщение, содержащее какой продукт Twilio, пользователь больше всего нравится на основе их предыдущих ответов на чатбот.

var msg = '';
    if(result == 'a') {
        msg = `You're like Programmable SMS.\n\nYou're popular, reliable, and a bit more traditional, but versatile and not boring. You may not always like change. \n\nYou are a solid teammate🧗‍♀️ and worker and get the job done✊. \n\nYou're a control freak and may not always lead, but still sometimes end up representing your group. Keep doing you and being a rock. You're solid❤`;
    }
    else if(result == 'b') {
        msg = `You're like Programmable Voice.\n\nYou're the OG, a pioneer, a leader🎤. You may sometimes hesitate to take risks and innovate, but that's because you've done all of it before📅. \n\nYou have experience, mentor others, and also lead the way for others to follow🧗. \n\nYou prefer to keep things short, sweet, and succinct, and don't waste time💃. You work hard🖥️ but also know how to have fun🐬.`;
    }
    else if(result == 'c') {
        msg=`You're like Twilio Autopilot.\n\nYou follow buzzy trends🐝 like machine learning, kubernetes, and dalgona coffee☕. \n\nYou often try to improve yourself💪 and may be a bit flighty🛫 but that's okay, you're fun🤪, creative🎨, and innovative🤖. The downside to being flexible😅 is that you may be gullible sometimes.\n\n You say "yes"👍 a lot and should probably take up yoga🧘 because though you have a lot on your plate🍽️, you aren't always the best at focusing on what's important📝.\n\n Even though you like comedies🤣, you also watch Die Hard🔫 every holiday season🎄 because you are nuanced.`;
    }
    else if(result == 'd') {
        msg=`You're like Twilio Functions.\n\nYou like to make life easier for your friends and family🙋. You're the type of person who bakes🎂for birthdays🎁. \n\nYou're constantly trying to improve those around you📚 and are always in beta. If you ordered a grilled chicken sandwich🥪 at a restaurant🥡 and it was uncooked, you wouldn't say anything because you wouldn't want to be a bother. \n\nIf someone has a question❓ you don't know the answer to, you look it up for them.💻 You know how to juggle 🤹multiple things at once but also how to prioritize what's important.`;
    }
    else {
        msg=`You're like Twilio Studio.\n\nYou are able to connect with a lot of people, regardless of their backgrounds🙋. You're a free-spirit, the type of person who has friends across different groups. You're included in lots of birthdays🎁. \n\nYou're a reader📚 of both literature and fun, less-serious things like comics, and are always in beta. At a restaurant🥡, you want everything! So many choices! \n\nYou question❓ everything around you, you inquisitive soul. Keep it up with your wide eyes and keep your eyes wide open. There's a whole world to explore for you!` ;
    }
    respObj= {"actions":[
        { "say": msg
        }
    ]};
        callback(null, respObj);
};

В настоящее время Текстройте свой номер Twilio, чтобы принять участие в своем викторине!

Что дальше

Вы можете добавить больше вопросов, больше вариантов ответов, более вариантов для ответов, более эмохис или более сложной системы подразделения ответов. С людьми, укрывающимися дома, сейчас самое прекрасное время для создания развлекательных викторин для личного или профессионального использования. Twilio AutoPilot позволяет вам легко получить творчество с чатами и викторинами, чтобы участвовать с клиентами, фанатами, друзьями и семьей, или просто повеселиться!

Оригинал: “https://dev.to/twilio/build-a-punchy-chatbot-in-eight-minutes-4jn5”