Injectable Twilio client for Nestjs.
Implementing the TwilioModule
from this package you gain access to Twilio client through dependency injection with minimal setup.
$ npm install --save nestjs-twilio
$ yarn add nestjs-twilio
To use Twilio client we need to register module for example in app.module.ts
import { TwilioModule } from 'nestjs-twilio';
@Module({
imports: [
TwilioModule.forRoot({
accountSid: process.env.TWILIO_ACCOUNT_SID,
authToken: process.env.TWILIO_AUTH_TOKEN,
}),
],
})
export class AppModule {}
If you are using the @nestjs/config package
from nest, you can use the ConfigModule
using the registerAsync()
function to inject your environment variables like this in your custom module:
import { TwilioModule } from 'nestjs-twilio';
@Module({
imports: [
TwilioModule.forRootAsync({
imports: [ConfigModule],
useFactory: (cfg: ConfigService) => ({
accountSid: cfg.get('TWILIO_ACCOUNT_SID'),
authToken: cfg.get('TWILIO_AUTH_TOKEN'),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}
Example usage in service.
import { InjectTwilio, TwilioService } from 'nestjs-twilio';
@Injectable()
export class AppService {
public constructor(private readonly twilioService: TwilioService) {}
async sendSMS() {
return this.twilioService.client.messages.create({
body: 'SMS Body, sent to the phone!',
from: TWILIO_PHONE_NUMBER,
to: TARGET_PHONE_NUMBER,
});
}
}
For full Client API see Twilio Node SDK reference here
Example of testing can be found here.