Attualmente sto cercando di capire come le classi sms sono correttamente rappresentate in SMPP. Comunque sono ormai completamente confuso dallo standard e dalla sua documentazione.Come rappresentare correttamente la classe messaggio in SMPP
In sms normale abbiamo
- class0: sms Flash, che vengono mostrati sul display
- Class1: normale SMS essere memorizzati sulla SIM o internamente nel dispositivo
Osservando le specifiche SMPP, per prima cosa trovo il parametro data_coding
nell'operazione , che viene utilizzato per impostare il DCS inviato tramite MAP. Per quanto ne so, se vogliamo impostare in modo esplicito la classe del messaggio, dobbiamo impostare i primi quattro bit di questo parametro su quelli, quindi due bit che indicano la codifica e quindi altri due bit che indicano la classe del messaggio. Quindi per Class1 Sms, impostare 1111xx01
. È corretto finora?
Se proviamo a impostare questo DCS, tuttavia attualmente impostiamo anche la codifica dei dati su "Dati a 8 bit". Sembra che diversi telefoni non siano in grado di capirlo. Questo è specificato ovunque, e possiamo semplicemente cambiarlo, oppure è una codifica speciale necessaria quando si inviano altre classi di messaggi.
Si verifica ulteriore confusione quando si tenta di utilizzare il modo consigliato SMPPv3.4 di impostare la classe Messaggio. Dal 3.4 esiste un parametro opzionale nell'operazione submit_sm
, chiamato dest_addr_subunit
. Secondo lo standard questo parametro dovrebbe essere impostato su 0 per sconosciuto, 1 per MS-Display, 2 per dispositivi mobili, ecc. Se guardo questo, sembra che i parametri siano spostati di uno rispetto alle classi di messaggi GSM. Class0 è codificato come 1, Class1 è codificato come 2 e così via. È corretto o c'è qualche mappatura più complicata dietro a questo?
Inoltre, se impostiamo dest_addr_subunit
, dobbiamo ancora impostare DCS, oppure possiamo lasciare questo parametro al suo valore predefinito?
Quindi, se ho capito questa pagina correttamente la confusione principale deriva dal fatto che la classe messaggio può sia essere indicato dal schema '1111xxyy' dove' xx' è la codifica e 'yy' è la classe del messaggio o dallo schema' 00c10xyy' dove 'c' indica la compressione' x' indica la codifica e 'yy' indica la classe del messaggio. Ciò che mi confonde qui, è che entrambi i metodi sembrano assolutamente gli stessi, e uno non sembra funzionare con tutti i dispositivi nel nostro caso. – LiKao
Di solito uso la seguente rappresentazione: '' 0001ccmm'' dove '' cc'' è una codifica ('' 00'' per default GSM) e '' mm'' è una rappresentazione message_class'' ('' 00'' per flash SMS), per cui l'esempio sarà "00010000'' per gli SMS con 7 bit flash. L'opzione '' 11110cmm'' è possibile ma non l'ho mai vista in pratica. –
Ho testato '0001cc00' e non funziona per i messaggi di classe 0 (messaggi" flash ") su Android; '1111cc00' funziona come previsto. –