От Дэвид Браун
Эта запись первоначально появилась в Блоге Notif.me.
Это может (надеюсь) быть случайным, но это случается. Я видел, что провайдеры не отвечают, потому что:
- Делали плановые ремонты
- Аккаунт заблокировали из-за всплеска накануне или из-за того, что кредитная карта была отклонена, а напоминания никто не читал.
- Они были просто вниз
Что ж, сохраняйте спокойствие и пользуйтесь Notif.me!
Что такое Notif.me?
Notif.me — это библиотека Node.js с открытым исходным кодом для отправки всех видов уведомлений о транзакциях. Он позволяет использовать несколько поставщиков и резервную стратегию по умолчанию.
Не разрабатываете Node.js? Вы по-прежнему можете запустить его в микрослужбе (см. notifme-sdk-queue-rabbitmq, чтобы получить пример).
Используйте запасной провайдер
Если вы используете только одного провайдера, самое время открыть вторую учетную запись и использовать ее в случае сбоя первой. Мы хотели упростить это с помощью notifme-sdk:
$ yarn add notifme-sdk
------------------------------------------------------------import NotifmeSdk from 'notifme-sdk'
new NotifmeSdk({ channels: { sms: { // Use Nexmo and fallback to Twilio in case of failure multiProviderStrategy: 'fallback', providers: [{ type: 'nexmo', apiKey: 'xxxxx', apiSecret: 'xxxxx' }, { type: 'twilio', accountSid: 'xxxxx', authToken: 'xxxxx' }] } } })
notifmeSdk.send({ sms: { from: 'Notifme', to: '+15000000001', text: 'Hello, how are you?' } })
Это должно охватывать практически любой случай, с которым вы столкнетесь.
Идем еще дальше
Если все ваши уведомления имеют решающее значение для вашего бизнеса, вот еще две вещи, которые вам нужно учитывать:
1. Обработка аварийного отказа
Это связано с небольшой вероятностью отказа всех ваших провайдеров:
const request = { sms: {from: 'Notifme', to: '+15000000001', text: 'Hello'} }
notifmeSdk.send(request).then((result) => { if (result.status === 'error') { /* * Here is a (non-exhaustive) list of what you can do: * 1. Try another channel: * notifmeSdk.send({email: {...}}) * 2. Construct the new request with the failing channels * and enqueue it to a delayed queue to retry it later. */ } })
2. Интеграция веб-хуков ваших провайдеров
Вы также должны обрабатывать события ошибок, происходящие после того, как провайдер принял ваш запрос. Например, если вы отправляете электронное письмо и получаете мягкий отказ, потому что почтовый ящик вашего пользователя заполнен, вы можете вместо этого попробовать отправить веб-push-уведомление или SMS.
Это пока невозможно с Notif.me SDK, но мы определенно хотели бы над этим поработать.
Вывод
Если вам нравится этот проект, вы можете отметить наш репозиторий GitHub и следить за обновлениями для следующего эпизода :)