Concatinating Long SMS using kannel - kannel

Kannel 1.4.4
I need to receive "long" sms (length > 160 ) by Kannel. If sms length less than 160 - all is ok. But if it is long sms kannel splits sms to 2 or more sms and not send sms. I get this error from smsc log
SMSC returned error code 0x000000ff (Unknown Error) in response to submit_sm PDU
What can cause this error ?

Use concatenation option for resolving this issue
max-messages = 3
concatenation = true

Related

How to retrieve the parts of the same long SMS received from the AT+CMGL command

I have an application interfaced with a GSM Modem where I receive many SMS and display them in a user interface using AT+CMGL command in text mode.
When I have short messages, everything is fine. I can retrieve all messages.
AT+CMGL="ALL"
+CMGL: 0,"REC UNREAD","+111111","","23/01/03,16:57:38+04"
This is message 1
+CMGL: 2,"REC UNREAD","+111111","","23/01/03,16:58:03+04"
This is message 2
+CMGL: 1,"REC UNREAD","+111111","","23/01/03,16:58:04+04"
This is message 3
OK
When I have long messages divided in many parts, because an SMS has a limited number of characters, I see them like many short messages.
AT+CMGL="ALL"
+CMGL: 0,"REC UNREAD","+111111","","23/01/03,18:16:20+04"
This is message 1 : message 1 message 1 message 1 message 1 message 1 message 1 message 1 message 1
+CMGL: 1,"REC UNREAD","+111111","","23/01/03,18:16:21+04"
This is second part of message 1
+CMGL: 2,"REC UNREAD","+111111","","23/01/03,18:19:04+04"
This is message 2
OK
Is there an indication (a parameter in AT+CMGL command) that show me all parts of the same message.
How can I retrieve all parts of the same Message so I can regroup them and display it in my user interface.
Thank You in advance for your time and your help :)
Best regards!
The AT+CMGL command has two modes, text mode and PDU mode. The technical name for splitting up long messages into several "normal" length sms messages is multi-part. AT+CMGL only supports multi-part in PDU mode.
For more details see the 3GPP 27.005 specification.

Unable to receive URC for an incoming SMS from a modem

I have an issue in being unable to recive the URC message from the modem whenever it receives an SMS.
I know that it receives them since i can find and read them if I use AT+CMGL but, i don't receive any notification when the modem gets them. I played around with the URC related commands but I've been unable to get it to work (other URCs work fine).
The modem is a BG600L M3 from Quectel and following is the sequence of commands i'm sending ("AT" is always omitted and the first command is literally "AT\r", basically an empty one).
//general config
AT\r
CFUN=1,0
E1
+QCFG=\"urc/ri/other\",\"pulse\",8,1
H0
&F
V1
+CMEE=1
&D0
E1
+CREG=2
+CGREG=2
+CEREG=2
//sms config
+CPMS=\"ME\",\"ME\",\"ME\"
+QINDCFG=\"smsincoming\",1
+CMGF=1
+CSDH=0
+CSCS=\"GSM\"
+CNMI=2,2,0,2,0
//doing some deleting and reading
+CMGD=1,3
+CPMS?
//getting the gps fix
+QGPS=1
+QGPSCFG=\"gnssconfig\",3
+QGPSLOC=1
+QGPSEND
//resetting the gms connection
+CFUN=0
+CFUN=1,0
//setting up the gsm connection
+QICFG=\"dataformat\",0,0
+QICFG=\"viewmode\",0
+QICFG=\"recvind\",1
+QICFG=\"tcp/retranscfg\",3,600
+QISDE=0
+QCFG=\"band\",0xf,0x80085,0x80085,1
+QCFG=\"nwscanmode\",1,1
+QCFG=\"nwscanseq\",010101,1
+QCFG=\"iotopmode\",2,1
// checking if it's connected
+CREG?
+QNWINFO
+COPS?
//Getting the time
+CTZU=3
+CTZR=0
+QLTS
+CCLK?
You can set AT+CNMI=2,1,2,0,0 , that should do the trick.
According to specification ETSI TS 127 005 V11.0.0 (2012-10)
+CNMI: <mode>,<mt>,<bm>,<ds>,<bfr>
by keeping <mt> value to 1 we should get indication when message is stored in ME/TA
<mt>: integer type (the rules for storing received SMs depend on its
data coding scheme
0 No SMS-DELIVER indications are routed to the TE.
1 If SMS-DELIVER is stored into ME/TA, indication of the memory location is routed to the TE using unsolicited result code:
+CMTI: <mem>,<index>

How can I get socket.io statistics

How can I monitor the following socket.io statistics on both client and server?
byte sent/s
byte received/s
total message sent
total message received

Kannel - Getting shortcode from POST_URL

currently we uses Kannel to connect to SMSC and receive any incoming SMS.
The setup successfully direct the message to our CGI Perl script. However, the destination address (in this case it's the shortcode) is empty. We have several shortcode configured at the SMSC therefore we need to be able to know the message is sent via which shortcode.
The current configuration is as follow:
group = sms-service
keyword =default
accept-x-kannel-headers=true
post-url= "http://127.0.0.1:8990/cgi-bin/test_shortcode.cgi?MSISDN=%p&MSG=%a&SC=%P"
max-messages =1
catch-all=yes
concatenation = 1
omit-empty = true
send-sender=true
The param SC receive empty string.
A check in the SMSC log files and the shortcode is actually found as the destination_addr:
2016-04-20 14:48:56 [20307] [6] DEBUG: dest_addr_ton: 0 = 0x00000000
2016-04-20 14:48:56 [20307] [6] DEBUG: dest_addr_npi: 1 = 0x00000001
2016-04-20 14:48:56 [20307] [6] DEBUG: destination_addr: "27626"
Any idea on why this is happening and how can we get the shortcode as the param?
Thank you
Found the issue after checking the Kannel source. Turns out Kannel will read a sequence of configuration for sending out SMS, and these setting will replace the destination number when MO is coming in. The settings i found are:
my-number
global-sender
faked-sender
Each level of setting will override the previous one, i.e. if all 3 are set, faked-sender will be in effect. By commenting off the above 3, we are able to get the correct shortcode value from the parameter %P in the post-url request.
Just posting this in case it will help somebody.

Error: Invalid number format while sending SMS with SIM800L

I'm using a SIM800L GSM module connected over USB-Serial to my computer.
When I try to send a SMS I got an error:
AT+CMGS="+4915xxxxxxxxx"
> Test (Ctrl+Z)
+CMS ERROR: Invalid number format (incomplete number)
I’m obviously connected to the network because pin is entered +CREG an +COPS seems good.
AT+CPIN?
+CPIN: READY
OK
AT+CREG?
+CREG: 0,1
OK
AT+COPS?
+COPS: 0,0,"O2 (Germany)"
OK
As well I can receive SMS and see incoming calls.
I set the module in sms text mode and use the coding GSM
AT+CMGF?
+CMGF: 1
OK
AT+CSCS?
+CSCS: "GSM"
OK
I try different number formats like "015xxxxxxxxx" or "004915xxxxxxxxx". Also I try different values for the optional parameter from +CMGS
Could anybody advise me what to do?
To send SMS it was necessary for me to change the SMSC adress with the command AT+CSCA.
AT+CSCA="+491760000443",145
The SMSC you can found at your mobile operator. In my case Netzclub at O2 Germany.

Resources