Skip to main content

Configuration

Before starting the project, there are a few things that need to be configured, such as session storage backend, USSD gateway, and pagination.

Session storage​

Ananse supports several backends for storing user sessions - in memory, Redis, MySQL and Postgres. In-memory session storage is used by default but can be changed to another backend. The session storage can be configured using the session option in the configure method.

import { Ananse } from "ananse";

const ananse = new Ananse().configure({
session: { type: "redis" }, // Database to store session data. Eg. mysql, postgres and redis
...
});

export default ananse;

Below is a list of supported session storage backends:

  • memory - In-memory session storage
  • redis - Redis session storage
  • mysql - MySQL session storage
  • postgres - Postgres session storage

Refer to session storage guide on how to create a custom session storage.

USSD Gateway​

Ananse can be configured to support any USSD gateway. The USSD gateway to use can be configured using the gateway option in the configure method.

const ananse = new Ananse().configure({
gateway: "hubtel", // USSD gateway to use, eg. hubtel, africas_talking.
...
});

Below is a list of supported USSD gateways:

GatewayKeySupported
Wigal USSD v1wigal✅
Wigal USSD v2❌
Emergent Technology USSDemergent_technology✅
AfricasTalking USSD❌

Is your USSD gateway not supported? Feel free to open an issue or create a pull request to add support for it.

Middlewares​

Ananse supports middleware, which are custom classes, that can access the request and response object in the application’s request-response cycle. The USSD gateways are implemented as middleware classes. Middleware can perform the following tasks:

  • Execute any code.
  • Make changes to the request and the response objects.
  • End the request-response cycle.

Middleware can be added to the application using the middlewares option in the configure method.

const ananse = new Ananse().configure({
middlewares: [MyCustomGateway, MyOtherMiddleware],
...
});
danger

The order in which middleware are added is important. Middleware are executed in the order they are added.

Pagination​

Pagination is enabled by default, it is triggered if the menu content exceeds the *182 character limit. Set the enabled option to false to disable pagination. The navigation options can be configured using the pagination option in the configure method.

const ananse = new Ananse().configure({
pagination: {
enabled: true,
nextPage: {
display: "*. More",
choice: "*",
},
previousPage: {
display: "#. Back",
choice: "#",
},
},
...
});