This article is about how to use Kannel for testing playSMS. Assumed you have a box of VPS, a droplet, a physical server, or a VM running and playSMS is installed and work properly. Follow manuals here to add Kannel to the playSMS server box, configure both playSMS and Kannel to make them work together.
Once you get a working playSMS connected to a well configured Kannel for testing, you can then send bulk SMS (fake non-delivered to the real cellphone of course) and see the performace of both software handling thousands of SMS.
Let\’s start the manual.
1. Install
How to install Kannel for playSMS in Ubuntu:
sudo apt install kannel kannel-extras sudo mkdir -p /var/log/kannel /var/run/kannel /var/spool/kannel/store sudo chown -R kannel /var/log/kannel /var/run/kannel /var/spool/kannel/store sudo usermod -a -G dialout kannel
Edit /etc/default/kannel
to activate smsbox, smsbox is part of Kannel, the daemon that handles SMS in Kannel:
sudo sed -i \'s/#START_SMSBOX/START_SMSBOX/\' /etc/default/kannel
I don\’t need wapbox so I disable it:
sudo sed -i \'s/START_WAPBOX/#START_WAPBOX/\' /etc/default/kannel
Backup original kannel.conf
:
sudo cp /etc/kannel/kannel.conf /etc/kannel/kannel.conf.dist
Download example kannel.conf
for testing purposes (for this article):
wget -c https://raw.githubusercontent.com/playsms/playsms/master/contrib/kannel/kannel.conf sudo cp kannel.conf /etc/kannel/ ls -l /etc/kannel/
Edit new /etc/kannel/kannel.conf
and change passwords, parts with CHANGE_THIS on the line.
Restart Kannel:
/etc/init.d/kannel stop /etc/init.d/kannel start
Note, I\’ll wait about 2-3 seconds after stop
before start
, and I don\’t use restart
.
New example kannel.conf
for testing purposes pushed in github, here:
- https://raw.githubusercontent.com/playsms/playsms/master/contrib/kannel/kannel.conf
You can download and use it as your base and then modify it.
Using example kannel.conf
above as-is for your Kannel will provide 2 SMSC, smpp1 and smpp2. Both test SMSC are using fake SMSC. For this to work you need another tools from Kannel, included in kannel-extras
package (you already install this with apt above).
2. Connection Configuration
Next, configure Kannel gateway plugin in playSMS.
Go to Settings -> Manage gateway and SMSC and click Manage (the folder icon) on Gateway Kannel. Fill in with data form kannel.conf
:
See above on Bearerbox hostname or IP, its an IP public, not 127.0.0.1
or localhost
, this is because my playSMS is using HTTPS and a domain name, and its not accessible through http://localhost
. Therefore I need to fill server\’s IP address instead, where requests from Kannel to playSMS logged as access from outside/Internet.
If you can access playSMS with http://localhost
then Bearerbox hostname or IP should be 127.0.0.1
or localhost
.
On Operational tab, fill in the correct admin password or status password, sets in kannel.conf
:
You should see SMSC smpp1 and smpp2 are both online.
Note:
- Above screenshot shown
LOOPBACK
type SMSC, this is because the screenshot was taken during my tests using Kannel SMSC type loopback. The latest test configuration here is using Kannel SMSC type fake. - Both are fake SMSC types, you can use either for tests, the different is the loopback type will return received SMS as incoming SMS immediately to playSMS. I prefer to use fake as it seems more real.
3. Test Configuration
To route SMS to Kannel and those SMSC\’s above you will need to add SMSC to playSMS, click the plus sign in Gateway Kannel in Settings -> Manage gateway and SMSC.
Add 2 SMSC to playSMS, first give name smpp1 and then the second give it name smpp2, example here:
Now we can route SMS for testing, go to Settings -> Route outgoing SMS:
Last, activate fake SMSC by running 2 fakesmsc
instances from console. You will need to install screen
before starting fakesmsc
:
apt install screen
Let\’s run the first fake SMSC application is receiving on port 10001 (as configured on kannel.conf
):
screen -dmS smpp1 /usr/lib/kannel/test/fakesmsc -r 10001
Second fake SMSC application is receiving on port 10002:
screen -dmS smpp2 /usr/lib/kannel/test/fakesmsc -r 10002
4. Send & Receive
Send SMS and Delivery Reports
By now you should be able to access playSMS and send some SMS. You can try sending to more destination by using Send from file feature, or add a group and send to the group.
Use this file to import dummy contacts to playSMS\’s phonebook. Create phonebook group with group code TESTGROUP
and then import this phonebook CSV file. You can then compose message to the group #TESTGROUP
.
Use this file to send SMS using Send from file menu. Download this CSV file and upload it in Send from file menu.
Receive SMS
Run another instance of fakesmsc
in this format:
/usr/lib/kannel/test/fakesmsc -r <port> -i <interval> -m <number_of_sms> \"<from> <to> <message>\"
Example of sending to Kannel from smpp1
, that is the fakesmsc
running on port 10001
according to kannel.conf
configuration:
/usr/lib/kannel/test/fakesmsc -r 10001 -i 0.01 -m 10 \"0100001 1234 This is test message\"
Notes:
- Above example command will get
fakesmsc
to push 10 SMS to Kannel at the interval of 0.01s - Those SMS will be recognized by Kannel as coming from SMSC
smpp1
and from 0100001 with destination number 1234 - Kannel will get them and deliver them to playSMS, playSMS will read and parse, and process them according to playSMS configuration
5. References
See this article to give you understanding on how playSMS handles gateway and SMSC:
Original article, more kannel.conf
examples, ask questions, visit: