【问题标题】:Twilio Autopilot Conversation Flow?Twilio Autopilot 对话流程?
【发布时间】:2020-02-25 13:35:02
【问题描述】:

我目前正在撰写关于聊天机器人调查的论文(通过代码创建,并且能够通过 facebook/slack 上的对话收集信息)。目前我在 Twilio 中遇到了关于对话流的问题。
为了简化对话:

  • Chatbot:嘿,你介意回答几个问题吗?
  • 客户:如果是,请继续提问/如果不是,那么感谢客户并停止对话。

    我在 Twilio Autopilot 上使用了示例调查机器人,但它并没有真正的“if/else”场景。如果 Twilio 没有,那么还有其他适合此的聊天机器人吗?

【问题讨论】:

    标签: twilio twilio-programmable-chat


    【解决方案1】:

    这里是 Twilio 开发人员宣传员。

    您可以使用 Autopilot 和我们的无服务器环境工具 Twilio Functions 来完成 if/else

    这个Node.js quickstart 提供了使用 Autopilot 制作语音机器人所需的前几个步骤。

    您可以有一个 Autopilot 任务,然后在任务重定向到的 Twilio 函数中使用条件来检查用户所说的内容。 Twilio Autopilot 任务可以包含这个 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
        }
    };
    

    如果这有帮助,请告诉我!

    【讨论】:

      【解决方案2】:

      其实做起来很简单。

      正如@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);
          };
      

      这样做的好处在于,您可以让函数响应任务中出现的任何内容。只要有效负载与 Autopilot 任务的形式相同,您就可以让该函数响应问题、操作、重定向等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多