Skip to main content
Una base de datos migrada está vacía, y una vacía no arranca. Este es el camino más corto de ahí a un mensaje saliendo.

bootstrap

Escribe lo mínimo que una base de datos recién creada necesita:
  • una tabla de enrutamiento default
  • una tabla MESSAGE vacía para que entre un proveedor
  • un listener en 27777
  • un login SMPP, cuya contraseña genera e imprime una vez
La contraseña generada se imprime una vez y nunca más. Captúrala antes de cerrar la terminal.

Lo que deliberadamente no escribe

Ambas ausencias se nombran en su salida final, así que no las omite meramente en silencio.
bootstrap se niega en el momento en que encuentra una tabla de enrutamiento, un worker o un login, así que no puede sobrescribir un despliegue en marcha. No hay flag que lo haga.Para traer una configuración de archivo existente en su lugar, usa import.

Luego, en este orden

El orden importa: cada paso es lo que hace que el siguiente tenga sentido.
1

Un producto

Una tarifa con nombre bajo la que se tarifica un mensaje. Sin uno, la tarificación no tiene por qué guiarse y una regla de tarifa con alcance de producto nunca puede coincidir.
2

Una tarifa para ese producto

Ambos lados: lo que pagas a un proveedor (coste) y lo que una cuenta te paga a ti (precio). Un mensaje que no coincida con ninguna regla del lado venta se registra UNKNOWN, no gratis. Entregado y sin facturar a nadie. Consulta rates.conf.
3

Un proveedor

Host, puerto, system id, contraseña, y los contadores de bind. Nada sale del edificio hasta que exista uno. Consulta Proveedores.
4

Una regla de enrutamiento que lo nombre

bootstrap deja [MESSAGE] vacío a propósito. Un catch-all que envía todo a tu único proveedor es el mínimo:
5

Un login de cliente

Un id de cuenta, un producto, y o bien un systemId/password SMPP o un par HTTP. La cuenta es la clave de facturación. Consulta credentials.yml.
6

Crédito, si lo estás aplicando

Con smsg.balance.enabled activado, una cuenta sin fila de saldo no envía nada. El crédito entra a través de la base de datos como una entrada de libro mayor. El panel escribe filas RECHARGE y nunca la columna de saldo directamente.

Compruébalo antes de creerlo

Exit 4 es la respuesta esperada a mitad de esta lista: el despliegue es sano, sus propios datos no lo son. Aún no hay nada a lo que enrutar. Se convierte en 0 una vez existen un proveedor y una regla.
Luego envía uno, como haría un cliente:
Un 200 significa aceptado, cobrado y encolado. No entregado. Observa el call record para el resultado.

Las dos cosas más probables de estar mal

Ninguna regla de tarifa del lado venta coincidió. El call record muestra el mensaje sin tarificar. O la cuenta no tiene alcance de tarifa, o cada regla en su alcance lleva un producto que el mensaje no tiene. Un mensaje sin producto solo ve reglas sin producto.
O bien [MESSAGE] sigue vacío, o el catch-all está por encima de tus reglas específicas y son inalcanzables, o el proveedor no está conectado. scripts/fireflo health distingue las tres.