Injectable Twilio client for Nestjs.
Implementing the TwilioModule
from this package you gain access to Twilio client through dependency injection with minimal setup.
The Twilio SDK 4.0.0 introduces breaking changes to the SDK - Please refer to here for upgrade guide.
$ 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.