我已经在 Ubuntu Server 14.04.3 LTS 中配置了 Kannel。我现在可以推送消息,但我还没有弄清楚如何实现发送报告。为此,我有以下 kannel 配置,我在其中定义了存储类型和 mysql 连接组以及 mysql 的连接属性。
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
现在我的问题是:
- 如何写入数据库表dlr?是通过 kannel 完成还是我们必须通过脚本完成?
我尝试在 sendsms url 中传递 dlr-mask 和 dlr-url 但没有任何反应。
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”是如何处理的。根据我的理解,我觉得kannel应该将每条发送信息都插入到数据库中,然后根据数据库中的id返回消息的状态。但是表中没有id这样的字段。
由于用户指南没有详尽的说明,而且 kannel 论坛也没有关于此的任何好的帖子,我在这个问题上被困了几天。请赐教实现交付报告的详细程序。
最佳答案
您必须编写自己的脚本 (dlr.php) 来处理 DLR 应答并保存状态,关于您可以使用时间戳或自动增量生成的 ID。 最后你的发送短信请求应该是这样的
$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);
问候 高尔基
关于php - 在 Kannel 中实现交付报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010774/