有没有一种方法可以从实现Webhook发送回快速答复?

时间:2018-09-20 03:59:28

标签: javascript bots dialogflow

我一直在玩DialogFlow和Fulfillment,但直到现在,我总是像这样从Webhook将FulfillmentText返回到我的机器人:

response = {
    fulfillmentText: "Some message!"
};

有没有办法在这里返回一组选项(快速回复)?基本上我想返回3个按钮,每个选项a,b和c一次。这可能吗?

谢谢!

编辑:

我可以使用以下代码将卡片发回,但找不到能快速回复而不是卡片的样本。

"fulfillmentMessages": [
    {
      "card": {
        "title": "card title",
        "subtitle": "card text",
        "imageUri": "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
        "buttons": [
          {
            "text": "button text",
            "postback": "https://assistant.google.com/"
          }
        ]
      }
    }
  ],

4 个答案:

答案 0 :(得分:1)

从Dialogflow中检查Rich UI Messages。根据您所开发的平台,您可以显示快速答复或卡片或其他Rich UI消息。

在Web和移动应用程序(本机)上,您需要通过传递所需标志(按钮,复选框等)并处理文本响应来自行处理它们。

更新
如果使用的是Google Assistant,则可以点击以下链接https://developers.google.com/actions/assistant/responses
最好使用客户端库来开发Webhooks

Action-On-Google NodeJS Client
Dialogflow NodeJS Fulfillment Client

答案 1 :(得分:1)

已经有一段时间了,但是如果有人仍在寻找,这个小捷径在Facebook Messenger Platform上对我有用。

const {Suggestion} = require('dialogflow-fulfillment');
agent.add(new Suggestion('Suggestion'));

答案 2 :(得分:0)

这里是一个示例:

#include <iostream>
using namespace std;
int a = 0;
int dondur(a){
    return a;
}

int main(int argc, char **argv)
{
    int b=20;
    cout << dondur(b);
    return 0;
}

还有,这就是招数:) https://miningbusinessdata.com/how-to-send-any-facebook-messenger-rich-response-from-dialogflow-webhook/

答案 3 :(得分:0)

我自己遇到了这个问题。通常,问题在于card-response.js的创建者并没有预料到会有人想作为卡按钮来进行快速回复。用下面的代码替换dialogflow-fulfillment / src / rich-response / card-response.js中的代码。我刚刚添加了一些支持缺少buttonUrl的异常。

$(document).ready(function(){
        var xx = document.getElementById("status");
        var xy = document.getElementById("hapus");

        var $checkboxes = $('#example td input[type="checkbox"]');

        $checkboxes.change(function(){
            var countCheckedCheckboxes = $checkboxes.filter(':checked').length;

            if (countCheckedCheckboxes == 1){
                xx.style.display = "block";
                xy.style.display = "block";
            } else if (countCheckedCheckboxes >= 2) {
                xx.style.display = "none";
                xy.style.display = "block";
            } else {
                xx.style.display = "none";
                xy.style.display = "none";
            }
        }); 
    });