- Shipped
- 6 сентября 2026 г. в 17:05 UTC
- Author
- Kamo
- Commit
- de96099
На уровне абстракции SMS было пять провайдеров, не согласных с тем, как потерпеть неудачу. Входящий путь, который отбрасывал реальные сообщения клиентов в тишине. отправка SmsSendOutcome: машинный код для ветвления (SmsFailureCode) и законченное предложение, чтобы показать члену без изменений. Рукоятка Outbound читать Статус старого типа и УПРАВЛЕННАЯ ошибкаСообщение, так что команды тщательно написаны "добавить Объяснение «поставщика SMS» ни разу не дошло до члена. Новый SmsGateway - это единственный способ, которым текст покидает этот сервис. Отказывается от a Поставщик, чьи ProviderCapabilities.sms являются ложными - флаг всех пяти объявлен и ничего не читает - и нормализует все, что поставщик бросает, возвращает нуль или время от времени. - FreePBX бросил **************** (500 со следом стопки) где команды вернули предложение; оба теперь отвечают НЕ ПОДОБРЕЖДАЕМЫМ Смс по-прежнему принадлежит провайдеру через smsUnavailableReason(). У KamoPBX не было никаких попыток / ловушек вообще, один из пяти: тайм-аут ускользнул. 500, где все остальные поставщики возвратились недействительными. - RingCentral dereferenced response.getBody().get("id") дважды без охраны Путь успеха, сообщая о принятом сообщении как о сбое, и утечка сырого Исключительный текст в виде обращенной к члену формулировки. - GET/sms/capability, чтобы браузер мог закрывать текстовый интерфейс спереди Позволить группе команд печатать сообщение и нажимать отправлять в ничто. прием - ingest() разрешает член-владелец с точным соответствием строк на **************************** RingCentral поставляет +19495551212; администратор, который набрал (949) 555-1212, ничего не соответствовал, и текст был отброшен на log.warn. Новый VoIP NUMBER OWNERSHIP Каноническое решение, отказ Угадайте, когда две организации или два члена претендуют на одно число. DDL является ручным. InitializerService не используется. Возвращается к старому виду, так что Откат падает со стола. - KamoPBX объявил sms(true) и мог отправлять, но ничто в этой службе не могло При этом они не получили ни одного ответа. Новая железная дорога ON PREMISE и /internal/voip/sms-inbound, родственник существующего /кольцевого шва. Беседы - upsertConversation соответствует EXTERNAL PHONE NUMBER точно, поэтому каждое написание Одно число росло своей нитью со своей историей. Теперь канонический для чтения E.164 в письменной форме, оставляя нетронутыми действительно международные номера. Кроме того: неудавшаяся отправка больше не ссылается на ведущую временную шкалу, как если бы она ушла. Никогда не передаваемое вложение больше не хранится в виде данных: URL и HELP. Автоответ провайдера отказывает регистрируется как отказ, а не как ответ. 440 тестов, +20 новых.