0

I'm trying to add a contextOut array to the response given by my firebase webhook for api.ai as documented here.

My simplified firebase code is as follows:

exports.myEndPoint = functions.https.onRequest((req, res) => {

  const assistant = new Assistant({ request: req, response: res });

  function firstHandler(assistant) {
    const i = Math.floor(Math.random() * 200);

    // I want to append contextOut to the response for api.ai here 

    assistant.ask(message generated using i);
  }

  function secondHandler(assistant) {

    // I want to retrieve i from the request from api.ai here

    assistant.tell(a different message generated using i from earlier);
  }

  const actionMap = new Map();
  actionMap.set('first', firstHandler);
  actionMap.set('second', secondHandler);
  assistant.handleRequest(actionMap);

});

I have tried res.contextOut, res.data before creating an instance of assistant as well as assistant.contextOut and assistant.data after the instance is made. I can't see the variable in the json response in the api.ai console.

Can anyone tell me what I'm missing? Thanks!

Nick Ramsbottom
  • 583
  • 1
  • 6
  • 17

1 Answers1

0

I managed a work around for my question.

Here is the simplified code:

exports.myEndPoint = functions.https.onRequest((req, res) => {

  const assistant = new Assistant({ request: req, response: res });

  function firstHandler(assistant) {
    const i = Math.floor(Math.random() * 200);
    const obj = {
      "index": i,
    }

    // I create my own context here.         

    assistant.setContext('index', 2, obj);

    assistant.ask(message generated using i);
  }

  function secondHandler(assistant) {

    // Use the created context here.

    const context = assistant.getContext('index');
    const i = context.parameters.index;

    assistant.tell(a different message generated using i from earlier);
  }

  const actionMap = new Map();
  actionMap.set('first', firstHandler);
  actionMap.set('second', secondHandler);
  assistant.handleRequest(actionMap);

});

Solution uses documentation found here.

I'm fairly sure that I could also use the existing context I have with api.ai to do this but I haven't tested it yet.

Nick Ramsbottom
  • 583
  • 1
  • 6
  • 17