Skip to content

Commit

Permalink
Merge pull request #5067 from nohira/feature/add-brevo-sms-provider
Browse files Browse the repository at this point in the history
feat(provider): add brevo-sms provider
  • Loading branch information
BiswaViraj authored Jan 30, 2024
2 parents 1723848 + 30e0085 commit e5128e1
Show file tree
Hide file tree
Showing 26 changed files with 608 additions and 20 deletions.
1 change: 1 addition & 0 deletions apps/web/public/static/images/providers/dark/brevo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions apps/web/public/static/images/providers/light/brevo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ const providers: Record<ChannelTypeEnum, ProvidersIdEnum[]> = {
SmsProviderIdEnum.AzureSms,
SmsProviderIdEnum.Bandwidth,
SmsProviderIdEnum.Simpletexting,
SmsProviderIdEnum.BrevoSms,
].sort(),
],
};
Expand Down
9 changes: 9 additions & 0 deletions libs/shared/src/consts/providers/channels/sms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
azureSmsConfig,
bulkSmsConfig,
iSendSmsConfig,
brevoSmsConfig,
} from '../credentials';
import { SmsProviderIdEnum } from '../provider.enum';

Expand Down Expand Up @@ -252,4 +253,12 @@ export const smsProviders: IProviderConfig[] = [
docReference: 'https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/sms/receive-sms',
logoFileName: { light: 'azure-sms.png', dark: 'azure-sms.png' },
},
{
id: SmsProviderIdEnum.BrevoSms,
displayName: `Brevo`,
channel: ChannelTypeEnum.SMS,
credentials: brevoSmsConfig,
docReference: 'https://developers.brevo.com/reference/sendtransacsms',
logoFileName: { light: 'brevo.svg', dark: 'brevo.svg' },
},
];
Original file line number Diff line number Diff line change
Expand Up @@ -1063,3 +1063,13 @@ export const rocketChatConfig: IConfigCredentials[] = [
required: true,
},
];

export const brevoSmsConfig: IConfigCredentials[] = [
{
key: CredentialsKeyEnum.ApiKey,
displayName: 'API Key',
type: 'string',
required: true,
},
...smsConfigBase,
];
1 change: 1 addition & 0 deletions libs/shared/src/consts/providers/provider.enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ export enum SmsProviderIdEnum {
MessageBird = 'messagebird',
Simpletexting = 'simpletexting',
AzureSms = 'azure-sms',
BrevoSms = 'brevo-sms',
}

export enum ChatProviderIdEnum {
Expand Down
1 change: 1 addition & 0 deletions packages/application-generic/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@
"@novu/twilio": "^0.22.0",
"@novu/zulip": "^0.22.0",
"@novu/nexmo": "^0.22.0",
"@novu/brevo-sms": "^0.22.0",
"@novu/rocket-chat": "^0.22.0",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/auto-instrumentations-node": "^0.40.2",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ChannelTypeEnum, ICredentials } from '@novu/shared';
import { BaseSmsHandler } from './base.handler';
import { BrevoSmsProvider } from '@novu/brevo-sms';

export class BrevoSmsHandler extends BaseSmsHandler {
constructor() {
super('brevo-sms', ChannelTypeEnum.SMS);
}
buildProvider(credentials: ICredentials) {
if (!credentials.apiKey || !credentials.from) {
throw Error('Invalid credentials');
}

const config = {
apiKey: credentials.apiKey,
from: credentials.from,
};

this.provider = new BrevoSmsProvider(config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ export * from './azure-sms.handler';
export * from './bulk-sms.handler';
export * from './nexmo.handler';
export * from './isend-sms.handler';
export * from './brevo-sms.handler';
2 changes: 2 additions & 0 deletions packages/application-generic/src/factories/sms/sms.factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
NovuSmsHandler,
NexmoHandler,
ISendSmsHandler,
BrevoSmsHandler,
} from './handlers';

export class SmsFactory implements ISmsFactory {
Expand Down Expand Up @@ -57,6 +58,7 @@ export class SmsFactory implements ISmsFactory {
new NovuSmsHandler(),
new NexmoHandler(),
new ISendSmsHandler(),
new BrevoSmsHandler(),
];

getHandler(integration: IntegrationEntity) {
Expand Down
99 changes: 79 additions & 20 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions providers/brevo-sms/.czrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"path": "cz-conventional-changelog"
}
3 changes: 3 additions & 0 deletions providers/brevo-sms/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "../../.eslintrc.js"
}
9 changes: 9 additions & 0 deletions providers/brevo-sms/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.idea/*
.nyc_output
build
node_modules
test
src/**.js
coverage
*.log
package-lock.json
19 changes: 19 additions & 0 deletions providers/brevo-sms/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Novu BrevoSms Provider

A BrevoSms sms provider library for [@novu/stateless](https://github.com/novuhq/novu)

## Usage

```javascript
import { BrevoSmsProvider } from '@novu/brevo-sms';

const provider = new BrevoSmsProvider({
apiKey: process.env.BREVO_API_KEY,
from: process.env.BREVO_FROM, // Sender displayed to the recipient
});

await provider.sendMessage({
to: 'My Company',
content: 'Message to send',
});
```
5 changes: 5 additions & 0 deletions providers/brevo-sms/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
Loading

0 comments on commit e5128e1

Please sign in to comment.