Official LoopBack 4 connector for sending SMS, placing text-to-speech calls and dispatching RCS messages via the seven gateway.
Supports the following seven REST API endpoints:
- LoopBack 4 project
- A seven account with API key (How to get your API key)
npm i @seven.io/loopback
# or
yarn add @seven.io/loopbackimport { 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)
}
}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) }
}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) }
}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.
| Operation | Fields |
|---|---|
sms |
from?, text, to |
voice |
from?, text (or XML), to |
rcs |
from? (agent ID), text, to |
Need help? Feel free to contact us or open an issue.