Descrizione del connettore SMPP smpp-connector-desc
Flusso di dati del connettore SMS sms-data-flow
Questa sezione descrive come il processo SMS gestisce i dati.
Di seguito è riportato un diagramma a blocchi di alto livello che riepiloga il modo in cui il processo SMS interagisce con il relativo ambiente.
Il processo SMS ospita 2 componenti importanti: il connettore SMPP che gestisce le comunicazioni con il provider SMPP e un’attività in background per la riconciliazione SR.
Flusso di dati per gli account SMPP sms-data-flow-smpp-accounts
Il processo SMS esegue il polling di nms:extAccount e genera nuove connessioni nel connettore SMPP, passando le impostazioni di ogni account. La frequenza di polling può essere regolata in serverConf nell'impostazione configRefreshMillis.
Per ogni account SMPP attivo, il connettore SMPP cerca di mantenere sempre attive le connessioni. Si riconnette se la connessione viene persa.
Flusso di dati durante l’invio di messaggi sms-data-flow-sending-msg
-
Il processo SMS seleziona le consegne attive eseguendo la scansione di nms:delivery. Una consegna è attiva quando:
- Il suo stato implica che i messaggi possono essere inviati
- Il suo periodo di validità non è scaduto
- In realtà è una consegna (ad esempio non è un modello, non viene eliminato)
- Il connettore SMPP poteva aprire almeno una connessione per l’account esterno collegato alla consegna
-
Per ogni consegna, il processo SMS carica le parti di consegna. Se la parte di consegna è stata inviata parzialmente, il processo SMS controlla quali messaggi sono già stati inviati controllando il registro ampio.
-
Il processo SMS espande il modello con i dati di personalizzazione della parte di consegna.
-
Il connettore SMPP genera una PDU MT (SUBMIT_SM PDU) che corrisponde al contenuto e ad altre impostazioni.
-
Il connettore SMPP invia il messaggio MT tramite una connessione del trasmettitore (o ricetrasmettitore).
-
Il provider restituisce un ID per questo messaggio MT. È inserito in nms:providerMsgId.
-
Il processo SMS aggiorna l’ampio registro allo stato inviato.
-
In caso di errore finale, il processo SMS aggiorna di conseguenza l'ampio registro e potrebbe creare un nuovo tipo di errore in nms:broadLogMsg.
Flusso di dati durante la ricezione di messaggi SR sms-data-flow-sr
- Il connettore SMPP riceve e decodifica l’SR (DELIVER_SM PDU). Utilizza i regex definiti nell’account esterno per ottenere l’ID e lo stato del messaggio.
- ID messaggio e stato inseriti in nms:providerMsgStatus
- Dopo essere stato inserito, il connettore SMPP risponde con una PDU DELIVER_SM_RESP.
- Se si è verificato un errore durante il processo, il connettore SMPP invia una PDU DELIVER_SM_RESP negativa e registra un messaggio.
Flusso di dati durante la ricezione di un messaggio MO sms-data-flow-mo
- Il connettore SMPP riceve e decodifica il MO (DELIVER_SM PDU).
- La parola chiave viene estratta dal messaggio. Se corrisponde a una qualsiasi parola chiave dichiarata, vengono eseguite le azioni corrispondenti. È possibile scrivere in nms:address per aggiornare la quarantena.
- Se vengono dichiarati valori TLV personalizzati, vengono decodificati in base alle rispettive impostazioni.
- Il MO completamente decodificato ed elaborato viene inserito nella tabella nms:inSms.
- Il connettore SMPP risponde con una PDU DELIVER_SM_RESP. Se viene rilevato un errore, verrà restituito un codice di errore al provider.
Flusso di dati durante la riconciliazione di MT e SR sms-reconciling-mt-sr
- Il componente di riconciliazione SR legge periodicamente nms:providerMsgId e nms:providerMsgStatus. I dati di entrambe le tabelle sono collegati in join.
- Per tutti i messaggi che hanno una voce in entrambe le tabelle, la voce corrispondente nms:broadLog viene aggiornata.
- È possibile aggiornare la tabella nms:broadLogMsg nel processo se viene rilevato un nuovo tipo di errore o per aggiornare i contatori per gli errori non qualificati manualmente.
Voci MT, SR e broadlog corrispondenti sms-matching-entries
Ecco un diagramma che descrive l’intero processo:
Fase 1
- Il messaggio viene scansionato, formattato e quindi trasmesso al connettore SMPP.
- Il connettore SMPP lo formatta come PDU MT SUBMIT_SM.
- Il messaggio MT viene inviato al provider SMPP.
- Il provider risponde con SUBMIT_SM_RESP. SUBMIT_SM e SUBMIT_SM_RESP corrispondono al rispettivo sequence_number.
- SUBMIT_SM_RESP fornisce un ID proveniente dal provider. Questo ID viene inserito insieme all'ID di registro generale nella tabella nms:providerMsgId.
Fase 2
- Il provider invia una PDU DELIVER_SM SR.
- L’SR viene analizzato per estrarre l’ID del provider, lo stato e il codice di errore. Questo passaggio utilizza i regex di estrazione.
- L'ID provider e lo stato corrispondente vengono inseriti in nms:providerMsgStatus.
- Quando tutti i dati vengono inseriti nel database in modo sicuro, il connettore SMPP risponde con DELIVER_SM_RESP. DELIVER_SM e DELIVER_SM_RESP hanno una corrispondenza con il loro sequence_number.
Fase 3
- Il componente di riconciliazione SR del processo SMS analizza periodicamente le tabelle nms:providerMsgId e nms:providerMsgStatus.
- Se una riga presenta ID provider corrispondenti in entrambe le tabelle, le due voci vengono unite insieme. Questo consente di associare l’ID di registro ampio (memorizzato in providerMsgId) allo stato (memorizzato in providerMsgStatus)
- Il registro esteso viene aggiornato con lo stato corrispondente.
Affinità e connettore di processo dedicato sms-affinities
Le affinità vengono ignorate dal connettore di processo dedicato e vengono eseguite all’interno del processo SMS.
opzioni serverConf sms-serverconf-options
Alcune impostazioni possono essere regolate in serverConf.xml. Come qualsiasi altra impostazione in questo file, deve essere specificato nel file config-instance.xml. Tutte le impostazioni si trovano nell'elemento < mta2 >.
In questa tabella vengono riepilogate tutte le impostazioni. I valori sensibili min/max forniscono un’idea approssimativa dell’intervallo da considerare nella maggior parte dei casi. Il valore di debug è il valore da scegliere quando si tenta di individuare problemi non correlati alle prestazioni.