Беседа с автопилотом Twilio? - PullRequest
0 голосов
/ 25 февраля 2020

В настоящее время я делаю тезис об опросе чат-ботов (создан с помощью кода и способен собирать информацию с помощью диалога на Facebook / Slack). В настоящее время у меня проблема с потоком разговоров в Twilio. Чтобы упростить разговор:

  • Chatbot: Эй, вы не против ответить на пару вопросов?
  • Заказчик: Если да, переходите к вопросу / Если нет, поблагодарите клиента и прекратите разговор. Я использовал пример опроса бота на Twilio Autopilot, но у него нет сценария «если / еще». Если у Twilio его нет, есть ли другой чатбот, подходящий для этого?

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Это на самом деле довольно просто сделать.

Как уже упоминалось @lizziepika, вы должны использовать функции.

Во-первых, скажем, вы хотите собрать данные из вопроса примерно так: Пример ЗАДАЧ

        {
        "actions": [
            {
                "collect": {
                    "name": "contact",
                    "questions": [
                        {
                            "question": "Are you a human?",
                            "name": "contact_human",
                            "type": "Twilio.YES_NO"
                        }
                    ],
                    "on_complete": {
                        "redirect": {
                            "method": "POST",
                            "uri": "https://Your_Twilio_Function_Domain.twil.io/Function_Name"
                        }
                    }
                }
            }
        ]
    }

По завершении автопилот перенаправит на функцию Twilio.

Здесь можно найти отличный пример функции Twilio для автопилота. https://github.com/twilio/autopilot-templates/blob/master/Functions/simple_response.js

Я настроил это для нашего примера.

    exports.handler = function(context, event, callback) {
        //we get the Memory from the answered questions.
        let memory = JSON.parse(event.Memory);
        //set up an array of object "actions" for the autopilot to continue.
        let actions = [];
        let responseItem;

        //get the answer from Memory
        let human = Memory.twilio.collected_data.contact.answers.contact_human.answer; //Yes or No

        if(human === "Yes"){
            responseItem = {
                "say": "ANSWER YES - You are human"
            };

            actions.push(responseItem);


        }else{
            responseItem = {
                "say": "ANSWER No - You are NOT human"
            };

            actions.push(responseItem);
        }

        responseItem = {
            "redirect": {
                "method": "POST",
                "uri": "task://next_task"
            }
        };

        actions.push(responseItem);

        let respObj = {
            "actions": actions
        };
        callback(null, respObj);
    };

Прелесть этого в том, что вы можете заставить функцию отвечать всем, что будет присутствовать в задании. Вы можете заставить функцию отвечать вопросами, действиями, перенаправлениями и т. Д. c, если полезная нагрузка имеет ту же форму, что и задачи автопилота.

0 голосов
/ 25 февраля 2020

Twilio разработчик евангелист здесь.

Вы можете сделать if/else с помощью автопилота с Twilio Functions , нашим инструментом для работы с сервером.

Этот Node.js быстрый запуск имеет первые несколько шаги, которые вам понадобятся, чтобы создать голосового бота с помощью автопилота.

Вы можете выполнить одну задачу автопилота, а затем использовать условную функцию в функции Twilio, на которую перенаправляется задача, чтобы проверить, что сказал пользователь. Задача «Автопилот Twilio» может включать следующее: JSON:

{
    "actions": [
        {
            "redirect": {
                  "uri": "https://YOUR-TWILIO-FUNCTION-URL.twil.io/actions",
                  "method": "POST"
            }
        }
    ]
}

А затем функция может включать

exports.handler = function(context, event, callback) {
    let responseObject = {};
    let memory = JSON.parse(event.Memory);
    console.log(memory.twilio.collected_data);
    let userInput = memory.twilio.collected_data.your_collect_function_name.answers.your_question_name.answer;
    console.log(num); //collected data from memory
    if(userInput == "pie") {
        //do whatever
    }
    else if (userInput == "cake") {
        // do something else
    }
    else {
        //do something else
    }
};

Дайте мне знать, если это вообще поможет!

...