В этой заметке я хочу рассказать о возможностях, которые предоставляет встроенный в Kannel эмулятор SMSC fakesmsc.
fakesmsc - это консольное приложение, с помощью которого можно:
Внимание! С помошью fakesmsc не получится проверить корректность работы через SMPP или другой реальный протокол для связи с SMSC. Данный инструмент предназначен больше для проверки приложений бизнес-логики или настроек маршрутизации в Kannel.
Для начала нам нужно в файле конфигурации Kannel создать группу настроек SMSC примерно такого вида.
group = smsc smsc = fake smsc-id = fake-smsc port = 10000 connect-allow-ip = 127.0.0.1
Соответственно, нужно прописать MO и MT маршрутизацию для данного smsc-id так же, как это делается для реальных подключений.
После перезапуска Kannel в списке SMSC, выдаваемом в HTTP API, появится соответствующая запись.
# lynx -dump http://127.0.0.1:13000/status.txt | grep fake-smsc
fake-smsc[fake-smsc] FAKE:10000 (connecting, rcvd: sms 0 (0.00,0.00,0.00) / dlr 0 (0.00,0.00,0.00), sent: sms 0 (0.00,0.00,0.00) / dlr 0 (0.00,0.00,0.00), failed 0, queued 0 msgs)
Теперь запустим приложение:
# fakesmsc 2012-01-27 17:00:54 [30347] [0] INFO: Debug_lvl = -1, log_file = <none>, log_lvl = 0 2012-01-27 17:00:54 [30347] [0] INFO: Entering interactive mode. Type your message on the command line 2012-01-27 17:00:54 [30347] [0] INFO: fakesmsc starting 2012-01-27 17:00:54 [30347] [0] DEBUG: Connecting to <127.0.0.1>
Для это просто делаем HTTP запрос на sendsms API:
GET -e 'http://127.0.0.1:13013/cgi-bin/sendsms?user=local&password=local&from=123&to=380672206770&text=hello+there&smsc=fake-smsc'
При этом, в консоли fakesmsc мы увидим такую запись:
2012-01-27 17:10:53 [30454] [0] DEBUG: Got message 1: <123 380672206770 text hello there>
Чтобы эмулировать отправку текстового SMS сообщения, в консоли fakesmsc введем такой текст:
380672206770 123 text who is there?
В ответ нам должны подтвердить сообщение:
2012-01-27 17:14:04 [30454] [0] DEBUG: fakesmsc: sent message 1
Теперь, если мы посмотрим в CDR-файл Kannel, то увидим такую запись:
2012-01-27 17:14:04 Receive SMS [SMSC:fake-smsc] [SVC:] [ACT:] [BINF:] [FID:] [META:] [from:380672206770] [to:123] [flags:-1:-1:-1:-1:-1] [msg:13:who is there?] [udh:0:]
Так что сообщение успешно было полученно Kannel.
Иногда нам нужно проверить, как будет система работать при получении сообщений от разных абонентов и на разные сервисные номера.
Для этих целей мы запустим fakesmsc с параметрами:
fakesmsc -i 1 -z 7 "38063 3456 text test here"
В результате в консоли мы увидим такие записи:
2012-01-27 17:23:16 [30608] [0] DEBUG: fakesmsc: sent message 1
2012-01-27 17:23:16 [30608] [0] DEBUG: Got message 1: <34561348568990 38063243509451 text Welcome to the Kannel system! Send HELP to get help message.>
2012-01-27 17:23:17 [30608] [0] DEBUG: fakesmsc: sent message 2
2012-01-27 17:23:17 [30608] [0] DEBUG: Got message 2: <34561692994552 38063869260298 text Welcome to the Kannel system! Send HELP to get help message.>
.....................................
.....................................
2012-01-27 17:23:26 [30608] [0] DEBUG: fakesmsc: sent message 11
2012-01-27 17:23:26 [30608] [0] DEBUG: Got message 11: <3456740359792 380631961114638 text Welcome to the Kannel system! Send HELP to get help message.>
^C2012-01-27 17:23:27 [30608] [0] INFO: fakesmsc: 11 messages sent and 11 received
2012-01-27 17:23:27 [30608] [0] INFO: fakesmsc: total running time 10.8 seconds
2012-01-27 17:23:27 [30608] [0] INFO: fakesmsc: from first to last sent message 10.0 s, 1.0 msgs/s
2012-01-27 17:23:27 [30608] [0] INFO: fakesmsc: from first to last received message 10.0 s, 1.0 msgs/s
2012-01-27 17:23:27 [30608] [0] INFO: fakesmsc: terminating