node.jsdialogflow-eschatbotfacebook-messengerfacebook-chatbot

dialogflow quick reply for Facebook client


When I'm trying to send a response from Node app to Dialogflow using webhook for Facebook messenger client.

Trying to send a quick reply to the Facebook client, however, it is not working and getting the bellow error.

Error: Reply string required by Suggestion constructor

Any help will be appreciated.

const {Suggestion} = require('dialogflow-fulfillment');
agent.add(new Suggestion().setReply('test reply from NodeApp'));

Solution

  • First, you need to update the version of dialogflow-fulfillment package in the package.json file in the inline editor to ^0.6.1 which is the latest one.

    Then, I think you can just send quick replies using the statement:

    agent.add(new Suggestion(`sample reply`));
    

    Please remember there should have a text response before the replies for Facebook to accept the response object.

    Below is a snippet that may help you better.

    const {Suggestion} = require('dialogflow-fulfillment');
    agent.add(`This is quick reply.`);
    agent.add(new Suggestion(`option 1`));
    agent.add(new Suggestion(`option 2`));
    

    The above way will work if you are using the Dialogflow Inline Editor as the fulfillment.

    If not (i.e, opt to have your own deployment/development environment), you have to send the quick replies as custom payloads within the fulfillment code. (Here also, you have to upgrade the dialogflow-fulfillment package first)

    Here is a sample code snippet:

    const {Payload} = require("dialogflow-fulfillment")
    var payload = {
      "facebook": {
        "text": "Welcome to my agent!",
        "quick_replies": [
          {
            "content_type": "text",
            "payload": "reply1",
            "title": "reply 1"
          }
        ]
      }
    }
    agent.add(new Payload(agent.UNSPECIFIED, payload, {rawPayload: true, sendAsMessage: true}))
    

    Hope these will work for you.