1

I am trying to create a DialogFlow chatbot setting up my fullfilment with rich message but the payload that carry it never show up.

Here is the inline code I'm using:

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion, Payload} = require('dialogflow-fulfillment');
var answers = [];

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function fallback(agent) {
    agent.add(`I didn't understand FULLFILMENT`);
    agent.add(`I'm sorry, can you try again? FULLFILMENT`);
  }

  function answer1Handler(agent){
    agent.add(`Intent answer1 called`);
    const answer = agent.parameters.number;
    answers.push(answer);

    const payload = {
        "text": "Trucmuche"/*,
        "attachments": []*/
    };

    agent.add(new Payload(agent.SLACK, payload));
    /*agent.add(
        new Payload(agent.SLACK, payload, {rawPayload: true, sendAsMessage: true})
    );*/
  }

  // Run the proper function handler based on the matched Dialogflow intent name
  let intentMap = new Map();
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('answer1', answer1Handler);

  agent.handleRequest(intentMap);
});

This is called when reaching "answer1" intent. It works well when my answer1Handler is only:

  function answer1Handler(agent){
    agent.add(`Intent answer1 called`);
  }

I don't know what I missed I tried both to follow the official documentation on rich message as well as this response but none helped me create my rich responses.

However, when I add a the custom payload you can see above, it doesn't answer anymore and I get an error message in raw api response. Indeed, it wither gives an error:

{
  "responseId": "49e306dc-c2a9-4667-ac67-60eb3692ce98-e15c53b8",
  "queryResult": {
    "queryText": "1",
    "parameters": {
      "number": 1
    },
    "allRequiredParamsPresent": true,
    "outputContexts": [
      {
        "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer2",
        "lifespanCount": 5,
        "parameters": {
          "number.original": "1",
          "number": 1
        }
      },
      {
        "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer1",
        "lifespanCount": 4,
        "parameters": {
          "number.original": "1",
          "number": 1
        }
      }
    ],
    "intent": {
      "name": "projects/pollingagent-jnscpa/agent/intents/bea1536a-dede-4faf-ab44-2ba4f80e9c0f",
      "displayName": "answer1"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {
      "webhook_latency_ms": 4993
    },
    "languageCode": "en"
  },
  "webhookStatus": {
    "code": 4,
    "message": "Webhook call failed. Error: DEADLINE_EXCEEDED."
  },
  "alternativeQueryResults": [
    {
      "queryText": "1",
      "outputContexts": [
        {
          "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer1",
          "lifespanCount": 4,
          "parameters": {
            "number.original": "1",
            "number": 1
          }
        },
        {
          "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer2",
          "lifespanCount": 3,
          "parameters": {
            "number.original": "1",
            "number": 1
          }
        }
      ],
      "languageCode": "en"
    }
  ]
}

Or only gives back the first message as you can see in the raw API response:

{
  "responseId": "b6bc8807-eca9-45e5-b25e-30e1b4142da7-e15c53b8",
  "queryResult": {
    "queryText": "1",
    "parameters": {
      "number": 1
    },
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "Intent answer1 called"
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer2",
        "lifespanCount": 5,
        "parameters": {
          "number.original": "1",
          "number": 1
        }
      },
      {
        "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer1",
        "lifespanCount": 4,
        "parameters": {
          "number.original": "1",
          "number": 1
        }
      }
    ],
    "intent": {
      "name": "projects/pollingagent-jnscpa/agent/intents/bea1536a-dede-4faf-ab44-2ba4f80e9c0f",
      "displayName": "answer1"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {
      "webhook_latency_ms": 217
    },
    "languageCode": "en"
  },
  "webhookStatus": {
    "message": "Webhook execution successful"
  },
  "alternativeQueryResults": [
    {
      "queryText": "1",
      "outputContexts": [
        {
          "name": "projects/pollingagent-jnscpa/agent/sessions/b6a5e9be-dd3e-7b54-3c4f-d942de297036/contexts/await_answer1",
          "lifespanCount": 4
        }
      ],
      "languageCode": "en"
    }
  ]
}

Consequently how can I send rich message within dialogflow fullfilment?

Revolucion for Monica
  • 2,848
  • 8
  • 39
  • 78

0 Answers0