[PlaySMS+SMStools] Incoming messages are not complete

Hi guys,

I’ve got a Maestro M100 3G as GSM modem and I’m trying to configure playSMS with SMStools to send SMS.

I’ve succeded in sending SMS but for the incoming, it seems it’s not working good for multi-part messages.

Here are my smstools config:

#
# /etc/smsd.conf
#
# Description: Main configuration file for the smsd
#

devices = GSM1
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
incoming = /var/spool/sms/incoming
logfile = /var/log/smstools/smsd.log
infofile = /var/run/smstools/smsd.working
pidfile = /var/run/smstools/smsd.pid
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent
stats = /var/log/smstools/smsd_stats
loglevel = 7
receive_before_send = no
autosplit = 3
incoming_utf8 = yes

#[queues]
# Commented lines are examples for germany
# D1 = /var/spool/sms/D1
# D2 = /var/spool/sms/D2
# O2 = /var/spool/sms/O2
# EPLUS = /var/spool/sms/EPLUS
# QUAM = /var/sppol/sms/QUAM
# MOBILCOM = /var/spool/sms/MOBILCOM
#OTHER = /var/spool/sms/OTHER

#[provider]
# Commented lines are examples for germany
# D1 = 49160, 49170, 49171, 49175, 49151
# D2 = 491520, 49162, 49172, 49173, 49174
# O2 = 49176, 49179, 49159
# EPLUS = 49163, 49177, 49178, 49157
# QUAM = 49150
# MOBILCOM = 49156
#OTHER = 0,1,2,3,4,5,6,7,8,9

[GSM1]
init = ATE0;+CPMS="SM","SM";+CMMS=2
device = /dev/ttyUSB2
incoming = yes
mode = new
baudrate = 115200
smsc = 33660003000
pin = ignore
report = yes
sending_disabled = no
memory_start = 1
pre_init = yes
primary_memory = SM
secondary_memory = SM
secondary_memory_max = 40
check_memory_method = 5

`
and here is a sample of my smstools log (I did a lot of try before, so it may be different from the 1st error logs):

2016-08-12 11:30:45,7, GSM1: -> AT+CREG?
2016-08-12 11:30:45,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:45,7, GSM1: <- +CREG: 2,1,"4F89","00EC014D",2 OK
2016-08-12 11:30:45,6, GSM1: Modem is registered to the network
2016-08-12 11:30:45,6, GSM1: Selecting PDU mode
2016-08-12 11:30:45,7, GSM1: -> AT+CMGF=0
2016-08-12 11:30:45,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:46,7, GSM1: <- OK
2016-08-12 11:30:46,6, GSM1: Changing SMSC
2016-08-12 11:30:46,7, GSM1: -> AT+CSCA="+33660003000"
2016-08-12 11:30:46,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:46,7, GSM1: <- ERROR
2016-08-12 11:30:57,7, GSM1: -> AT+CSCA="+33660003000"
2016-08-12 11:30:57,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:57,7, GSM1: <- OK
2016-08-12 11:30:57,6, GSM1: Checking memory size
2016-08-12 11:30:57,7, GSM1: -> AT+CMGL=4
2016-08-12 11:30:57,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:57,7, GSM1: <- ERROR
2016-08-12 11:30:57,6, GSM1: Used memory is 0
2016-08-12 11:30:57,6, GSM1: Changing memory
2016-08-12 11:30:58,7, GSM1: -> AT+CPMS="SM"
2016-08-12 11:30:58,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:58,7, GSM1: <- +CPMS: 10,40,10,40,10,40 OK
2016-08-12 11:30:58,6, GSM1: Checking memory size
2016-08-12 11:30:58,7, GSM1: -> AT+CMGL=4
2016-08-12 11:30:58,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:58,7, GSM1: <- ERROR
2016-08-12 11:30:58,6, GSM1: Used memory is 0
2016-08-12 11:30:58,6, GSM1: Changing memory
2016-08-12 11:30:59,7, GSM1: -> AT+CPMS="SM"
2016-08-12 11:30:59,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:30:59,7, GSM1: <- +CPMS: 10,40,10,40,10,40 OK
2016-08-12 11:30:59,6, GSM1: No SMS received
2016-08-12 11:30:59,6, GSM1: Checking if concatenation storage has expired message parts
root@Debian-sms:/var/spool/sms/incoming# tail -n 200 /var/log/smstools/smsd.log
+CMGL: 6,1,,159
07913366003000F0400B913396494709F7000061802111038180A0050003270A06E67539A805529741F3B23C9C9E83C67579BA5CC783C87590BC30AFB3E961BACBE502B5C3E93928CD06B5CBA079B92D669741F1FAA9EE2E83E46576794CAFCBCB2074BD1D4EBBCB207219447FD7E965D07B5C96A7E7617AFAED0695E774D09C2E4F8FE9E576D94D07A5DDE4F41C5E76CFC36276D9A5500CDFEE7159EE0EBBE92076790EA297C7
+CMGL: 7,1,,159
07913366003000F0400B913396494709F7000061802111039180A0050003270A07D0EEF79C05529FC2F6707A0E12CBD3047BB95D76D341757A9A9D9E1740D4F27C5E9687C7F4D673286581EA6E10FB7D4E8FD36536E8092FBB41D3775A3E2E83C6E830BC1CAED30B2078580E3ABEDF677699058AD7D3A0F9A94E4FB3D3F3709A0E2ABB41ECF4D95D0691CBA0F1BBDD0EBBC96517882A27CC41E3FA9CFE6EA7E76131BBCC02B5C3
+CMGL: 8,1,,159
07913366003000F0400B913396494709F7000061802111030280A0050003270A08D27350583C7FB3EBEDB29B0E8287E7A0FABC2C6F99E5E9B29BCCCEBB400A6519D43E15E8E1F41C5476CFEB697A19240F8BC3747A1D34AFCB4141B1380F9296C3E4B29C05AABB41ECF7393D4E97D920B8FC0D97A70BF4705A5E0695E92078381F76D359A0B0BD3C06D5DD6590FACD4E97416937BD2C3787C76550990E8AD7CB20F5296C0FA7E7
+CMGL: 9,1,,159
07913366003000F0400B913396494709F7000061802111031280A0050003270A0940F03A481E86A7C9E576D94D07C1E56537595E0695DDA07638ED762914D6779AFD07C1DF7539A8FD768344653CBC2CA7A7E76511881C76CF41EC3288FC6E87D3EEB20BA43C95E77082BC0C8AD7CBA071991D06D14FE134B90C2AD341EE32685E068DDF6E7AD94D2F83E0E139885C06D1CB2072799E66D7E7E9B7DB5D9683E86F7A985D6E97DD
+CMGL: 10,1,,31
07913366003000F0440B913396494709F70000618021110322800D050003270A0AE8A00D654301
OK
2016-08-12 11:32:13,6, GSM1: Skipping message 039 from 3369947XXXX, all parts not found
2016-08-12 11:32:13,7, GSM1: Message 039 from 3369947XXXX will be read partially after 359 minutes unless remaining parts are received
2016-08-12 11:32:13,6, GSM1: Used memory is 0
2016-08-12 11:32:13,6, GSM1: Changing memory
2016-08-12 11:32:13,7, GSM1: -> AT+CPMS="SM"
2016-08-12 11:32:13,7, GSM1: Command is sent, waiting for the answer
2016-08-12 11:32:13,7, GSM1: <- +CPMS: 9,40,9,40,9,40 OK

From my point of view, it seems that 1st part of the message is saved in /var/spool/sms/incoming, but it’s immediately deleted cause playSMS as read it.

So I got the 1st part of the message in the MySQL DB, but not the full message and this 1st part does not appear in the web interface.

Thank you,

Ok, I did some new tests, it seems it’s not the multipart but the content that can block the message, because with simple text without special caracters (#@ç&… or emojis) it seems to work (I got this multipart message in the playsms_tblRecvSMS table)…

I don’t really know what blocks those messages for now, I continue my tests to know…

you can try by doing several tests, from only use alphanumeric, to combine it with some gsm chars ( https://en.wikipedia.org/wiki/GSM_03.38 ) and last combine it with unicodes (probably some emojis)

anton

I made tests, it seems that the problem come from unicode.

Message with alphanum or GSM chars (€^Ç…) are concatenated well (up to 8 SMS), but it’s broken if I had some unicode (emojis) in that.

Also, I’m still not sure, but if it’s an MMS (more than 8 SMS) it’s not concatenated (and I receive it very lately in the DB, like one day later…).
At least, from thoses MMS, even splited, I received it well, not like the unicode ones that are kinda lost (I don’t receive all part and even parts that I got can sometimes have just a few of the 1st chars)
I think it’s related to thoses smstools log lines:

    2016-08-16 11:58:15,6, GSM1: Skipping message 188 from 33668217130, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 188 from 33668217130 will be read partially after 256 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 227 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 227 from 33699552387 will be read partially after 319 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 228 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 228 from 33699552387 will be read partially after 324 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 229 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 229 from 33699552387 will be read partially after 327 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 230 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 230 from 33699552387 will be read partially after 329 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 231 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 231 from 33699552387 will be read partially after 331 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 232 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 232 from 33699552387 will be read partially after 334 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 233 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 233 from 33699552387 will be read partially after 336 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 234 from 33699552387, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 234 from 33699552387 will be read partially after 337 minutes unless remaining parts are received
    2016-08-16 11:58:15,6, GSM1: Skipping message 053 from 33699474907, all parts not found
    2016-08-16 11:58:15,7, GSM1: Message 053 from 33699474907 will be read partially after 360 minutes unless remaining parts are received

I’m not sure yet as I have no smstools3 installation so I can’t test it now.

But looking at my example:
https://raw.githubusercontent.com/antonraharja/playSMS/master/contrib/smstools/smsd.conf

probably remove the incoming_utf8, or add/remove some other options perhaps. and keep googling see if anyone experience the same.

playSMS will simply read a file as an SMS. multiple SMS will need to combined by smstools then playSMS will read it as a single SMS.

anton

Thank you Anton for your help and this sample.

So I’ll continue my tests to find out how to make it work.

I have just few last questions before we close this thread:

What’s the recommended GSM Gateway to use with PlaySMS ? I used SMStools recently because Gammu was not compatible with my modem, I still can change it if it doesn’t work well in my context.

Also, how can I handle an external web API call everytime I got an incoming SMS (and also a delivery status) ? I want to tranfert all the incoming messages (and delivery status) to an other server, I know I can make a php plugin, but maybe there is an other way ?