2015-08-14 3 views
2

Я настроил Kannel на сервере Ubuntu 14.04.3 LTS. На данный момент я могу продвигать сообщения, но мне еще предстоит выяснить, как реализовать отчет о доставке. Для этого у меня есть следующая конфигурация kannel, где я определил тип хранилища и группу mysql-connection и свойства соединения для mysql.Реализация отчета о доставке в Kannel

include = "/etc/kannel/modems.conf" 

group = core 
admin-port = 13000 
smsbox-port = 13001 
admin-password = 12345 
admin-deny-ip = “*.*.*.*” 
admin-allow-ip = “127.0.0.1″ 
box-deny-ip = “*.*.*.*” 
box-allow-ip = “127.0.0.1″ 
log-file = /var/log/kannel/bearerbox.log 
log-level = 0 
dlr-storage = mysql 

group = smsc 
smsc = at 
smsc-id = GSM 
my-number = xxxxxxxxxxxx 
modemtype = auto 
device = /dev/ttyUSB0 

group = smsbox 
bearerbox-host = 127.0.0.1 
sendsms-port = 13013 
global-sender =13013 
log-file = /var/log/kannel/smsbox.log 
log-level = 0 

group = smsbox-route 
smsbox-id = smsbox 
smsc-id = GSM 

group = sendsms-user 
username = user 
password = user 
concatenation= true 
max-messages = 10 
user-deny-ip = “*.*.*.*” 
user-allow-ip = “127.0.0.1;” 
dlr-url = "http://127.0.0.1/dlr.php" 

group = sms-service 
keyword = default 
catch-all = yes 
accepted-smsc = usb1-modem 
max-messages = 0 
get-url = http://localhost/sms?phone=%p&text=%a 

group = mysql-connection 
id = mydlr 
host = localhost 
port = 3306 
username = root 
password = 00000 
database = dlr 
max-connections = 1 

group = dlr-db 
id = mydlr 
table = dlr 
field-smsc = smsc 
field-timestamp = ts 
field-destination = destination 
field-source = source 
field-service = service 
field-url = url 
field-mask = mask 
field-status = status 
field-boxc-id = boxc 

Теперь мой вопрос:

  1. Как написать в таблицу базы данных DLR? Это делается с помощью kannel, или мы должны сделать это через скрипт?

Я пробовал передавать маску dlr и dlr-url в URL-адресах sendms, но ничего не происходит.

http://127.0.0.1:13013/cgi-bin/sendsms?username=user&password=user&to=xxxxxxxx&text=hello&dlr-mask=31&dlr-url=http%3A%2F%2F127.0.0.1%2Fdlr.php%3FmyId%3D123456%26type%3D%25d 

Прежде всего, я не понимаю, как «идентификатор» сообщения обрабатывается. По моему мнению, я чувствую, что канал должен вставлять каждую отправку информации в базу данных, а затем статус сообщения должен быть возвращен в соответствии с идентификатором в базе данных. Но в таблице нет такого поля, как id.

Я застрял в течение пары дней с этой проблемой, так как у Userguide нет исчерпывающих указаний, и у форумов kannel нет хороших потоков на этом. Пожалуйста, просветите меня с подробной процедурой, чтобы выполнить отчет о доставке.

+0

вы будете создавать таблицы DLR вручную. kannel только автоматически создает send_sms и sent_sms –

ответ

0

Вы должны написать свой собственный сценарий (dlr.php), чтобы обрабатывать ответ DLR и сохранять статус, об идентификаторе, который вы можете сгенерировать, используя отметку времени или автоинкремент. Наконец ваш запрос отправить смс должен выглядеть примерно так

$dlrURL="http://www.xxxxx.com:/dlr.php?dlr=%d&answer=%A&to=%p&ts=%T&smsID=$yourOwnID"; 

    /* Build Kannel Request */ 
    $request = "http://localhost:13013/cgi-bin/sendsms?"; 
    $request .= "smsc="  ."smppgw1"; 
    $request .= "&username=" ."someuser"; 
    $request .= "&password=" ."somepass"; 
    $request .= "&from="  .$fromNumber; 
    $request .= "&to="  .trim($somenumber); 
    $request .= "&text="  .urlencode($in_msg); 
    $request .= "&dlr-mask=31&dlr-url="  .urlencode($dlrURL); 

С уважением Горках