npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@brvhprince/termii-js

v2.0.0

Published

JavaScript SDK for Termii Provider

Downloads

10

Readme

npm (scoped) npm

NPM GitHub last commit GitHub top language GitHub repo size

GitHub forks GitHub Repo stars GitHub watchers

Twitter Follow

Termii NodeJs Library

A Node client library for consuming the Termii API

Prerequisites

This project requires NodeJS (version 14 or later) and Yarn. Node and Yarn are really easy to install. To make sure you have them available on your machine, try running the following command.

$ yarn -v && node -v
1.22.19
v16.19.1

Table of contents

Getting Started

You need to create a Termii account if you don't have one already, to get your API Key, Sender ID and Secret key.

Termii-js was made for the browser, but works in any JavaScript runtime.

Installation

BEFORE YOU INSTALL: please read the prerequisites

To install and set up the library, run:

$ npm install @brvhprince/termii-js

Or if you prefer using Yarn:

$ yarn add @brvhprince/termii-js

Usage

Import and Initialize the library

// using ES6 modules
import { Termii } from '@brvhprince/termii-js'

// using CommonJS modules
const { Termii } = require("@brvhprince/termii-js");

// Initialize

const provider = new Termii("api_key_here", "sender_id");

Set a new Sender Id

provider.set_sender_id("new_sender_id")

Resources

Resources available on the API

| Name | Description | |---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Messaging | Messaging allows you to send messages across SMS and WhatsApp Channels Learn More | | Token | Generate, send and verify one-time-passwords Learn More | | Insights | Retrieve real-time delivery report of messages sent to customers as well as the status of their contacts Learn More | | Middleware | Express Middleware to handle webhook requests |

Messaging Documentation

Send messages to any country in the world across SMS and WhatsApp channel

Sender ID Documentation

A Sender ID is the name or number that identifies the sender of an SMS message

  • List Sender IDs

        
    // returns paginated results of 15 items per page
    const senderIds = await provider.messaging.list_sender_ids();
        
    // get page
    const nextSenderIds = await provider.messaging.list_sender_ids(2); 
  • Request a new sender Id

        
    const payload = {
      // between 3 and 11 characters
      sender_id: "Penny",
      usecase: "Send promotional messages",
      company: "Pennycodes"
    }
        
    const response = await provider.messaging.request_sender_id(payload);
        
    console.log(response.code) // ok 

Messages Documentation

This API allows businesses send text messages to their customers across different messaging channels

  • Send Message
        
    const payload = {
      to: "233552345567",
      sms: "Hello there, welcome to Termii"
    }
        
    const response = await provider.messaging.send(payload);
        
    console.log(response.code) // ok 
  • Send Bulk Message
        
    const payload = {
      to: ["23490555546", "23423490126999","23490555546"],
      sms: "Hello there, welcome to Termii"
    }
        
    const response = await provider.messaging.send_bulk(payload);
        
    console.log(response.code) // ok 

Send Message Without Sender ID Documentation

This API allows businesses send messages to customers using Termii's auto-generated messaging numbers that adapt to customers location.


const payload = {
  to: "233552345567",
  sms: "Hello there, welcome to Termii"
}

const response = await provider.messaging.send_without_sender_id(payload);

console.log(response.code) // ok 

Send Message With Template Documentation

Templates API helps businesses set a template for the one-time-passwords (pins) sent to their customers via whatsapp


const payload = {
  phone_number: "233552345567",
  device_id: "device_one",
  template_id: "template_one",
  data: {
    product_name: "Termii",
    otp : 120435,
    expiry_time: "10 minutes"
  }
}

const response = await provider.messaging.send_with_template(payload);

console.log(response.code) // ok 

Phonebooks Documentation

Create, view & manage phonebooks using these APIs. Each phonebook can be identified by a unique ID, which makes it easier to edit or delete a phonebook.

  • List Phonebooks

      
    // returns paginated results of 15 items per page
    const phonebooks = await provider.messaging.list_phonebooks();
    
     // get page
    const nextPhonebooks = await provider.messaging.list_phonebooks(2);
  • Create Phonebook

      
    const payload =  {
      phonebook_name: "Royals",
      description: "My royal leads"  
    }
    
    const response = await provider.messaging.create_phonebook(payload);
    
    console.log(response.message) // Phonebook added successfully
  • Update Phonebook

      
    const payload =  {
      phonebook_name: "Premium" 
    }
    
    const response = await provider.messaging.update_phonebook("phonebook_id",payload);
    
    console.log(response.message) // Phonebook updated successfully
  • Delete Phonebook

      
    const response = await provider.messaging.delete_phonebook("phonebook_id");
    
    console.log(response.message) // Phonebook deleted successfully

Contacts Documentation

Contacts API allows you manage (i.e. edit, update, & delete) contacts in your phonebook.

  • List Contacts of Phonebook

      
    // returns paginated results of 15 items per page
    const contacts = await provider.messaging.list_contacts("phonebook_id");
    
     // get page
    const nextContacts = await provider.messaging.list_contacts("phonebook_id", 2);
  • Create Contact

      
    const payload =  {
      phone_number: "556789909",
      country_code: "233"
    }
    
    const response = await provider.messaging.create_contact("phonebook_id",payload);
    
    console.log(response.data.id) // 3647982
  • Delete Contact

      
    const response = await provider.messaging.delete_contact("contact_id");
    
    console.log(response.message) // Contact deleted successfully

Campaigns Documentation

Campaign API allows you to view, manage and send a campaign to a phonebook.

  • List Campaigns

      
    // returns paginated results of 15 items per page
    const campaigns = await provider.messaging.list_campaigns();
    
     // get page
    const nextCampaigns = await provider.messaging.list_campaigns(2);
  • Fetch Campaign History

      
    // returns paginated results of 15 items per page
    const history = await provider.messaging.get_campaign_history("campaign_id");
    
     // get page
    const nextHistory = await provider.messaging.get_campaign_history("campaign_id", 2);
  • Send Campaign

      
    const payload =  {
      phone_number: "556789909",
      country_code: "233",
      message: "Hello, Welcome to Termii",
      phonebook_id: "phonebook_id",
      campaign_type: "personalized"
    }
    
    const response = await provider.messaging.send_campaign(payload);
    
    console.log(response.message) // Your campaign has been scheduled

Token Documentation

Token allows businesses generate, send and verify one-time-passwords.

Send Token Documentation

The send token API allows businesses trigger one-time-passwords (OTP) across any available messaging channel on Termii.


const payload = {
  to: "23490126727",
  pin_length: 6,
  message_text: "Your pin is"
}

const response = await provider.token.send_token(payload);

console.log(response.pinId) // 29ae67c2-c8e1-4165-8a51-8d3d7c298081

Email Token Documentation

The email token API enables you to send one-time-passwords to an email address


const payload = {
  email_address: "[email protected]",
  code: "092471",
  email_configuration_id: "email_configuration_id_from_dashboard"
}

const response = await provider.token.email_token(payload);

console.log(response.code) // ok

Send Voice Token Documentation

The voice token API enables you to generate and trigger one-time passwords (OTP) through the voice channel to a phone number


const payload = {
  phone_number: "23490126727"
}

const response = await provider.token.send_voice_token(payload);

console.log(response.pinId) // 29ae67c2-c8e1-4165-8a51-8d3d7c298081

Make Voice Call Documentation

The voice call API enables you to send messages from your application through our voice channel to a phone number


const payload = {
  phone_number: "23490126727",
  code: 1223
}

const response = await provider.token.make_voice_call(payload);

console.log(response.pinId) // 29ae67c2-c8e1-4165-8a51-8d3d7c298081

Send In App Token Documentation

This API returns OTP codes in JSON format which can be used within any web or mobile app.


const payload = {
  phone_number: "23490126727",
  pin_length: 6
}

const response = await provider.token.send_in_app_token(payload);

console.log(response.status) // success
console.log(response.data.otp) // 522726

Verify Token Documentation

Verify token API, checks tokens sent to customers and returns a response confirming the status of the token.


const payload = {
  pin_id: "pin_id",
  pin: 123456
}

const response = await provider.token.verify_token(payload);

console.log(response.verified) // True

Insights Documentation

Retrieve real-time delivery report of messages sent to customers as well as the status of their contacts

Balance Documentation

The Balance API returns your total balance and balance information from your wallet, such as currency.

    
const balance = await provider.insights.balance();

console.log(balance.balance) // 19.85

Search Documentation

The search API allows businesses verify phone numbers and automatically detect their status as well as current network


const response = await provider.insights.search_phone_number("phone_number");

console.log(response.status) // DND blacklisted

Status Documentation

The status API allows businesses to detect if a number is fake or has ported to a new network.


const payload = {
  phone_number: "523353245594",
  country_code: "GH"
}
const response = await provider.insights.status_phone_number(payload);

console.log(response.result) // {@returns typeof array}

History Documentation

This Inbox API returns reports for messages sent across the sms, voice & whatsapp channels.


const inbox = await provider.insights.history();

console.log(inbox) // {@returns typeof array}

Middleware

Express Middleware to handle Webhook Events

Add your webhook url in your Termii Developer Console

// using ES6 modules
import { Webhook } from '@brvhprince/termii-js'

// using CommonJS modules
const { Webhook } = require("@brvhprince/termii-js");

// Initialize

const provider = new Webhook("secret_key");

//Inbound-Message Received

provider.on("inbound", data => {
  // Act
  console.log("Here We are!");
});


//Outbound Message (Delivery Report)

provider.on("outbound", data => {
  // Act
  console.log("Here We are!");
});


//Device offline Notification

provider.on("device_status", data => {
  // Act
  console.log("Here We are!");
});


// Hooks with Express
app.post("/my/webhook/url", provider.middleware);

Contributing

Please do :heart:

Built With

Versioning

I use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

ISC License © Prince Takyi Akomea