node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

courtbot-engine

courtbot-engine Build Status npm npm Coverage Status

This repository is the meat of the courtbot functionality, intended to be require'd by a project that wants to implement courtbot.

Registration Source

In order to store and retreive registrations and sent-messages a registration source must be configured. The easiest way to do that is to use https://github.com/codefortulsa/courtbot-engine-pg to fill this role.

Example code to fulfill this requirement:

var courtbot = require("courtbot-engine");
 
courtbot.setRegistrationSource(function(connectionString) {
  return {
    getRegistrationById: function (id) {
      /* return the registration with the id provided */
      return Promise.resolve(regs);
    },
    getRegistrationsByContact: function(contact, communicationType) {
      /* return all registrations that are for the contact and type provided */
      return Promise.resolve(regs);
    },
    getRegistrationsByState: function (state) {
      /* return all registrations in the given state */
      return Promise.resolve(regs);
    },
    createRegistration: function (registration) {
      /* create a new registration and return its id */
      return Promise.resolve(1);
    },
    updateRegistrationName: function (id, name) {
      /* update the registration to the name provided */
      return Promise.resolve();
    },
    updateRegistrationState: function (id, state) {
      /* update the registration to state provided */
      return Promise.resolve();
    },
 
    getSentMessage: function (contact, communication_type, date, description) {
      /* get a matching sent message if it exists */
      return Promise.resolve(msg);
    },
    createSentMessage: function (contact, communication_type, date, description) {
      /* create a record of the sent message */
      return Promise.resolve();
    },
    migrate: function() {
      /* migrate to the most recent schema */
      return Promise.resolve();
    }
  };
});

Communication

For courtbot to talk to someone via a communication method, you have to add that method. The following methods exist:

Usage

Express

The following example adds the necessary routes to your express app:

app.use("/", courtbot.routes({ dbUrl: process.env.DATABASE_URL });

Console test prompt

To enable the console prompt in a local courbot instance, set the environment variable USE_CONSOLE=1. This will allow you to communicate with courtbot without using twilio.

Background Tasks

The following functions should be run on a regular basis, at least once per day:

  • sendDueReminders(options) - Sends reminders for cases that are within the reminder period.
  • checkMissingCases(options) - Looks for cases that were not initially found.