Códigos de error de SMS (mpbx-sms)
Los genera las rutas de SMS y el endpoint de webhooks (W3-SMS-01). Los mensajes nunca contienen credenciales del proveedor, firmas ni el texto de un mensaje; como máximo nombran ids y nombres de campos. Los códigos que inician la vida de un mensaje como fallo (MPBX-SMS-PROVIDER-REJECTED, MPBX-SMS-PROVIDER-UNAVAILABLE y los códigos cortos propios del proveedor) se guardan como error_code del mensaje y se incluyen en el evento sms.failed. Guía: SMS.
| Código | Tipo | Significado | Qué hacer |
|---|---|---|---|
MPBX-SMS-PROVIDER-NOT-FOUND | not_found | No existe esa configuración de proveedor en esta empresa (el proveedor de otra empresa no es visible). | Verifique el id. |
MPBX-SMS-NUMBER-NOT-FOUND | not_found | No existe ese número en esta empresa. | Verifique el id. |
MPBX-SMS-CONVERSATION-NOT-FOUND | not_found | No existe esa conversación en esta empresa. | Verifique el id. |
MPBX-SMS-MESSAGE-NOT-FOUND | not_found | No existe ese mensaje en esta empresa. | Verifique el id. |
MPBX-SMS-KIND-UNSUPPORTED | invalid_argument | Esta instalación no ofrece el kind del proveedor (los adaptadores se agregan en cada versión). | Use uno de los kinds que GET /api/v1/sms/providers lista en available_kinds. |
MPBX-SMS-CONFIG-INVALID | invalid_argument | El nombre, la configuración o las credenciales del proveedor no son válidas para su kind (forma incorrecta, un secreto faltante o demasiado corto). | Corrija el campo indicado; las credenciales son de solo escritura y reemplazan todas las almacenadas. |
MPBX-SMS-NUMBER-INVALID | invalid_argument | Un número de teléfono no está en formato internacional (+, seguido de 7 a 15 dígitos, sin cero inicial). | Envíe +15550100; los espacios, guiones, puntos y corchetes se eliminan. |
MPBX-SMS-NUMBER-TAKEN | conflict | La empresa ya tiene este número. | Actualice el número existente. |
MPBX-SMS-PROVIDER-NAME-TAKEN | conflict | Otro proveedor de la empresa tiene este nombre. | Elija otro nombre. |
MPBX-SMS-FROM-NOT-OWNED | invalid_argument | El número de envío no es uno de los números de SMS de la empresa. | Primero agregue el número a un proveedor (POST /api/v1/sms/numbers). |
MPBX-SMS-NUMBER-DISABLED | conflict | El número de envío está desactivado. | Actívelo o envíe desde otro número. |
MPBX-SMS-PROVIDER-DISABLED | conflict | El proveedor del número está desactivado. Un mensaje en cola cuyo proveedor se desactivó antes de enviarse falla con este código. | Active el proveedor. |
MPBX-SMS-BODY-INVALID | invalid_argument | El texto está vacío, tiene más de 1600 caracteres o contiene caracteres de control distintos de saltos de línea y tabuladores. | Acorte o limpie el texto. |
MPBX-SMS-ROUTE-INVALID | invalid_argument | El destino de enrutamiento es inconsistente (un kind sin id, o un id con kind none), o el usuario o la extensión no existe en la empresa. | Use {"kind":"none"} o un kind con un target_id existente. Las colas y los grupos de timbrado se aceptan como ids hasta que existan sus objetos. |
MPBX-SMS-PROVIDER-IN-USE | conflict | El proveedor todavía tiene números o mensajes, así que no puede eliminarse (el historial se conserva). | Desactívelo en su lugar (enabled: false). |
MPBX-SMS-NUMBER-IN-USE | conflict | El número todavía tiene conversaciones, así que no puede eliminarse. | Desactívelo en su lugar. |
MPBX-SMS-CHANGED | conflict | El objeto cambió entre su lectura y su escritura (If-Match obsoleto). | Vuelva a leerlo y reintente con el nuevo ETag. |
MPBX-SMS-CREDENTIALS-UNREADABLE | config | No se pueden abrir las credenciales selladas de un proveedor (se reemplazó la clave maestra sin volver a cifrarlas, o el registro está dañado). Los mensajes que usan este proveedor fallan y sus webhooks se rechazan. | Guarde de nuevo las credenciales del proveedor. |
MPBX-SMS-PROVIDER-REJECTED | n/a (error_code del mensaje) | El proveedor rechazó el mensaje de forma definitiva (destino inválido, bloqueado, no permitido). No se reintenta. | Lea el motivo que indica el proveedor en su consola; corrija el número o el contenido. |
MPBX-SMS-PROVIDER-UNAVAILABLE | n/a (error_code del mensaje) | No se pudo contactar al proveedor o siguió fallando; se agotaron todos los intentos (5, con retrasos que se duplican desde 30 segundos). | Revise el estado del proveedor y las credenciales, y luego envíe de nuevo. |
MPBX-SMS-SEND-OUTCOME-UNKNOWN | n/a (error_code del mensaje) | Una caída perdió el resultado de un envío, y el proveedor (Telnyx, Plivo, Vonage, SMPP) no puede indicar si envió el mensaje o si descarta una repetición, así que no se volvió a enviar. Puede que se haya entregado o no. | Revise el registro del proveedor para este mensaje; envíelo de nuevo si no aparece allí. |
MPBX-SMS-WEBHOOK-UNAUTHORIZED | unauthenticated | Una llamada de webhook no tiene una firma válida para este proveedor (falta, el secreto es incorrecto, el cuerpo fue alterado o la marca de tiempo tiene más de 5 minutos de diferencia). La respuesta no incluye detalles. | Revise el secreto de firma del proveedor y que su reloj esté bien configurado. |
MPBX-SMS-WEBHOOK-MALFORMED | invalid_argument | La firma es válida, pero el cuerpo no es lo que espera el adaptador del proveedor. | Revise la configuración del formato de webhook del proveedor. |
MPBX-SMS-WEBHOOK-TOO-LARGE | invalid_argument | El cuerpo del webhook es mayor de 64 KiB. | Reduzca el tamaño del lote en el proveedor. |
MPBX-SMS-WEBHOOK-NOT-FOUND | not_found | La dirección del webhook no corresponde a ningún proveedor activo (desconocida, desactivada o la dirección fue rotada). | Copie la dirección vigente desde la página del proveedor. |
MPBX-SMS-WEBHOOK-RATE-LIMITED | unavailable | Más de 600 llamadas en un minuto a una misma dirección de webhook. El proveedor debe reintentar más tarde. | Reduzca la velocidad del proveedor; los reintentos son idempotentes. |
MPBX-SMS-EGRESS-BLOCKED | n/a (error_code del mensaje, envío de prueba) | El proveedor HTTP genérico se negó a llamar a la dirección configurada: dirección privada, de loopback, link-local o de metadatos, http sin allow_http, o un nombre que resuelve a una de estas direcciones. No se reintenta. | Use una dirección pública https; vea proveedor HTTP genérico. |
MPBX-SMS-CREDENTIALS-REQUIRED | invalid_argument | Un cambio en la configuración de un proveedor HTTP genérico enviaría sus credenciales almacenadas a otro destino (otra URL, método o conjunto de encabezados, o una credencial colocada en otra parte de la solicitud), o las credenciales almacenadas no tienen un campo que la nueva configuración necesita. Las credenciales almacenadas son de solo escritura y solo siguen al destino para el que se ingresaron. | Envíe las credenciales de nuevo en la misma actualización; vea proveedor HTTP genérico. |
MPBX-SMS-TEST-RATE-LIMITED | rate limited (429) | La consola de pruebas envió más de 10 mensajes en un minuto para la empresa, o más de 3 a un mismo destinatario. Envía mensajes reales, por eso tiene límite (FU-SMS03-2). | Espere un minuto (Retry-After: 60). |
MPBX-SMS-RECIPIENT-OPTED-OUT | conflict (409) | El destinatario envió STOP (o se agregó a mano) para el número de envío, así que no se envió nada. También es el error_code de un mensaje en cola que un STOP detuvo antes de salir. Cada rechazo se registra (acción de auditoría sms.send_blocked). | No envíe mensajes a esta persona desde este número. Si quiere volver a recibir mensajes, responda START, o un administrador elimina la entrada en SMS > Bajas; vea la lista de cumplimiento. |
MPBX-SMS-OPT-OUT-NOT-FOUND | not_found | No existe esa entrada de baja en esta empresa. | Vuelva a listar las entradas. |
MPBX-SMS-CAP-REACHED | conflict (409) | Se agotó un límite de envío de la empresa, del número de envío o del usuario, por día o por mes (UTC). No se envió nada. El primer rechazo de cada periodo genera el evento sms.cap_reached y un registro de auditoría. | Espere al siguiente periodo, aumente el límite en SMS > Uso, o envíe desde otro número. |
MPBX-SMS-CAP-INVALID | invalid_argument | Un límite no es aceptable: un límite number necesita number_id, un límite user necesita user_id, un límite company o recipient no necesita ninguno; un límite inbound es para la empresa o para un número; el valor va de 0 a 1000000000; el número o el usuario deben pertenecer a la empresa; como máximo 500 límites. | Corrija el límite. |
MPBX-SMS-CAP-NOT-FOUND | not_found | No existe ese límite en esta empresa. | Vuelva a listar los límites. |
MPBX-SMS-PRICING-INVALID | invalid_argument | La lista de precios tiene una moneda que no es un código ISO de tres letras en mayúsculas, o un precio fuera del rango de 0 a 100000000 millonésimas; también una regla de destino incorrecta (prefijo de 1 a 8 dígitos, listado una sola vez) o una factura incorrecta (fechas, moneda, tipo de cambio). | Corrija la lista de precios, la regla o la factura. |
MPBX-SMS-INVOICE-NOT-FOUND | not_found | No existe esa factura de operador en esta empresa. | Vuelva a listar las facturas. |
MPBX-SMS-MMS-UNSUPPORTED | invalid_argument | El proveedor del número de envío no puede enviar MMS (hoy solo Twilio). | Envíe desde un número de un proveedor que admita MMS, o envíe solo texto. |
MPBX-SMS-MEDIA-INVALID | invalid_argument | Los archivos multimedia del MMS no son aceptables: de 1 a 10 direcciones públicas https sin credenciales. | Corrija los media_urls. |
MPBX-SMS-MEDIA-NOT-FOUND | not_found | El archivo multimedia del MMS no existe, o su dirección pública es incorrecta. | Vuelva a subir el archivo. |
MPBX-SMS-MEDIA-TOO-LARGE | invalid_argument | El archivo multimedia subido para el MMS está vacío o pesa más de 5 MB. | Envíe un archivo más pequeño. |
MPBX-SMS-MEDIA-TYPE-UNSUPPORTED | invalid_argument | El MMS admite archivos JPEG, PNG, GIF, MP4, MP3, AMR y PDF; el archivo subido tiene otro tipo. | Convierta el archivo. |
MPBX-SMS-MEDIA-STORE-OFF | unavailable | Esta instalación no tiene un almacén de objetos [files], así que no se pueden conservar los archivos multimedia del MMS. | Configure [files]. |