1.0.23 • Published 3 months ago

qranswers v1.0.23

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

qranswers_module

QR-Answers API module

This module allows you to use nodejs to access the QR-Answers API.

Webhooks

To use a webhook, create an endpoint (e.g. https://mydomain.com/qrhook) In the app, go to Home -> Manage Plan -> Developer to retrieve your API key and Secret Key as well as input your endpoint.
For the webhook, you need to select which events you would like to receive from the Events to send section. Choose events from the dropdown and you will see them appear in a list below. You may remove any events you no longer want to receive by clicking the trash can next to the event and choosing Update Webhook.

To use this module:

npm install qranswers

Your webhook will need to collect the raw Body (a Buffer) of the request received. If you use express, you may add this to your file:

npm install body-parser

Then, in your nodejs app:

const bodyParser = require('body-parser')

app.use(
  bodyParser.json({
    verify: function(req, res, buf) {
      req.rawBody = buf;
    }
  })
);

Then when you receive the event via a post, you will need to retrieve the x-qr-signature header and verify the event with the qranswers.webhook.constructEvent() method. The method will throw an error if the signature does not match or if the period between the request and the decoding is too long. You should return a json response to the QR-Answers server like below.

app.post('/qrhook', function(req, res) {
  const sig = req.headers['x-qr-signature'];
  let event
  try {
    event = qranswers.webhooks.constructEvent(req.rawBody, sig, endpointSecret)
  } catch (err) {
    console.log('Error', err);
    res.json({error: `Webhook Error: ${err.message}`});
    return;
  }

  switch (event.type) {
    case 'vote.evResponseVote':
      const data = event.data.object;
      console.log('Received event:', event);
      break;
  }

  res.json({success: 'post call succeed!', url: req.url, body: req.body})
});

The QR-Answers server(s) will only try 3 times with backoff to deliver your event. The server determines whether to retry sending the event by examining the {success: "xxx"} field in the returned JSON.

API

1.0.22

3 months ago

1.0.21

3 months ago

1.0.23

3 months ago

1.0.20

4 months ago

1.0.19

5 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.12

7 months ago

1.0.11

7 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago