Skip to content

seven-io/loopback

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

seven logo

seven Connector for LoopBack 4

Official LoopBack 4 connector for sending SMS, placing text-to-speech calls and dispatching RCS messages via the seven gateway.

MIT License npm LoopBack 4 Node.js 14+


Features

Supports the following seven REST API endpoints:

Prerequisites

Installation

npm i @seven.io/loopback
# or
yarn add @seven.io/loopback

Setup

1. Create a data source

import { inject, lifeCycleObserver, LifeCycleObserver } from '@loopback/core'
import { juggler } from '@loopback/repository'
import { SevenConnector } from '@seven.io/loopback'

const config = {
    apiKey:    process.env.SEVEN_API_KEY,
    connector: SevenConnector,
    name:      'seven',
}

@lifeCycleObserver('datasource')
export class SevenDataSource extends juggler.DataSource implements LifeCycleObserver {
    static dataSourceName = 'seven'
    static readonly defaultConfig = config

    constructor(
        @inject('datasources.config.seven', { optional: true })
        dsConfig: object = config,
    ) {
        super('seven', dsConfig)
    }
}

2. Create a model

import { Model, model, property } from '@loopback/repository'

@model()
export class SevenMessage extends Model {
    @property({ id: true, required: true, type: 'string' })
    operation: 'voice' | 'sms' | 'rcs'

    @property({ required: true,  type: 'string' }) to:   string
    @property({ required: false, type: 'string' }) from: string
    @property({ required: true,  type: 'string' }) text: string

    constructor(data?: Partial<SevenMessage>) { super(data) }
}

3. Create a service provider

import { injectable, BindingScope, Provider, inject } from '@loopback/core'
import { GenericService, getService } from '@loopback/service-proxy'
import { SevenDataSource } from '../datasources'
import { SevenMessage } from '../models'

export interface Seven extends GenericService {
    send(data: SevenMessage): Promise<unknown>
}

@injectable({ scope: BindingScope.TRANSIENT })
export class SevenProvider implements Provider<Seven> {
    constructor(
        @inject('datasources.seven')
        protected dataSource: SevenDataSource = new SevenDataSource(),
    ) {}

    value(): Promise<Seven> { return getService(this.dataSource) }
}

Usage

const msg = new SevenMessage({
    from:      'Acme',
    operation: 'sms',
    text:      'Hello from LoopBack',
    to:        '+491234567890',
})
await sevenProvider.send(msg)

Switch operation to voice for text-to-speech, or rcs for RCS messages.

Payload schemas

Operation Fields
sms from?, text, to
voice from?, text (or XML), to
rcs from? (agent ID), text, to

Support

Need help? Feel free to contact us or open an issue.

License

MIT

About

Official LoopBack component for seven

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors