1

I'm trying to send custom payload from inline editor, to be displayed at DialogFlow Messenger integration. Here's my code:

 // See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// for Dialogflow fulfillment library docs, samples, and to report issues
'use strict';
 
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
const {Payload} = require('dialogflow-fulfillment');
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 test_accordion  (agent) {
    const payload ={"messages": [{"richContent": [
                        [
                          {
                            "text": "Text to be displayed at accordion",
                            "type": "accordion",
                            "title": "Detalles:",
                            "image": {
                              "src": {
                                "rawUrl": "https://img2.freepng.es/20180621/ewt/kisspng-trello-logo-slack-atlassian-trello-5b2bcdc85e4d36.2783338815295973843863.jpg"
                              }
                            }
                          }
                        ]
                      ]
                    }]};

    agent.add(new Payload(agent.UNSPECIFIED , payload, {rawPayload: true, sendAsMessage: true}));
 }
  
  let intentMap = new Map();
  intentMap.set('test_accordion',  test_accordion);
  agent.handleRequest(intentMap);
});

And here is my packages file:

{
  "name": "dialogflowFirebaseFulfillment",
  "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "10"
  },
  "scripts": {
    "start": "firebase serve --only functions:dialogflowFirebaseFulfillment",
    "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment"
  },
  "dependencies": {
    "actions-on-google": "^2.2.0",
    "firebase-admin": "^6.0.0",
    "firebase-functions": "^2.0.2",
    "dialogflow": "^0.6.0",
    "dialogflow-fulfillment": "^0.5.0",
    "@google-cloud/common":"^0.25.3",
    "@google-cloud/projectify":"^0.3.1",
    "@google-cloud/promisify":"^0.3.1",
    "@google-cloud/translate":"^2.1.2",
    "@google-cloud/firestore": "^0.16.1"
  }
}

I'm not able to make this work. I've been searching the net for hours and I can't find any solution. I've also tried some solutions from stackoverflow, but they seem to be outdated, as Dialogflow keeps changing their environment. Any help would be really appreciated.

Thanks in advance!

1 Answers1

0

for me, change "dialogflow-fulfillment": "^0.5.0", to "dialogflow-fulfillment": "^0.6.1" in package.json.

And in your test_accordion function need to return agent:

return agent;

Tyler2P
  • 2,324
  • 26
  • 22
  • 31
KZP
  • 1
  • 2