2011-10-14 21 views
7

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?

risposta

9

Si consiglia di leggere la specifica 3GPP TS 23.038 con la descrizione dettagliata DCS (Schema di codifica dati).

In caso di bit DCS 7654 sono 00xx, è necessario verificare DCS per il valore bit 4.

  • bit 4 == 0 - nessuna classe di messaggio per il messaggio (bit 1 e 0 sono riservati)
  • po '4 == 1 - bit 1 e 0 contiene classe di segnalazione

Così si imposta il parametro data_coding SMPP in base alla specifica 3GPP TS 23.038 per gestire correttamente message_class.

Per messaggio SMS GSM di default non ha MESSAGE_CLASS e questo non è lo stesso di MESSAGE_CLASS = 1.

+0

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

+0

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. –

+0

Ho testato '0001cc00' e non funziona per i messaggi di classe 0 (messaggi" flash ") su Android; '1111cc00' funziona come previsto. –

Problemi correlati