Ответ 1
Это происходит очень поздно, возможно, слишком поздно, но...
Вам не нужно выполнять какой-либо транспорт, но вам может потребоваться создать некоторые из шлюзов, и вам, скорее всего, потребуется собрать приложение, которое будет разговаривать с каждым из шлюзов. Вы вряд ли найдете для этого одну услугу.
Вы уже определили стратегию. У вас в основном есть эти штуки:
- транспорты
- Шлюзы
- Приложение
Каждый из транспортов доступен через какого-либо клиента через API или CLI, поэтому вам нужно выяснить, что такое ваша среда. Java, вероятно, является хорошим выбором, но, вероятно, будут работать и другие межплатформенные среды. Существующая инфраструктура, такая как Apache ServiceMix, поддерживает некоторые из этих транспортов:
https://cwiki.apache.org/confluence/display/SM/Components+list
и может быть другое среднее изделие с похожими, отличными транспортными средствами.
Вероятно, вам понадобится шлюз для каждого провайдера для каждого типа транспорта. Возможно, вам удастся найти поставщика, который обслуживает несколько транспортных средств, например. Twilio SMS и голос, но это, скорее всего, будет исключением. Вы также можете обнаружить, что из-за различий в транспорте (и, следовательно, с функциональностью), более удобно создавать шлюз для каждого типа транспорта. Таким образом, у вас могут быть два настроенных провайдера на вашем шлюзе SMS, один для Twilio и один для Kannel, и у вас может быть ваша учетная запись Twilio, используемая в шлюзе SMS и в шлюзе SIP.
Последний шаг - собрать ваше приложение во что-то значимое. Это может быть что-то вроде:
sent.......: "Thanks for your purchase, ${username}!"
отправленный на каналы (то есть, транспортная пара провайдеров), настроенная, возможно, пользователем и возможность собирать ответ от пользователя:
response...: "It was a pleasure! --Bob"
Вам нужно будет сохранить основы каждой конечной точки транспорта, например, номер телефона для SMS, имя пользователя для чата и т.д., поэтому, если у вас есть проблемы с защитой PII, вам нужно подумать об этом. Один из вариантов может заключаться в том, чтобы превратить все PII в каждого провайдера, но вам все равно нужно сохранять каждую учетную запись для своих пользователей в каждом провайдере, и вам, вероятно, нужно будет что-то узнать о пользователе, например "$ {username}" выше, чтобы персонализировать ваше уведомление надлежащим образом в вашей заявке. Таким образом, удаление всего PII из вашего приложения кажется маловероятным.
Я не уверен, насколько эта помощь, но, возможно, дает вам некоторые идеи.