Kannel - 从 POST_URL 获取简码

Kannel - Getting shortcode from POST_URL

目前我们使用 Kannel 连接到 SMSC 并接收任何传入的短信。

安装程序已成功将消息定向到我们的 CGI Perl 脚本。但是,目标地址(在本例中为简码)为空。我们在 SMSC 上配置了多个短代码,因此我们需要能够知道消息是通过哪个短代码发送的。

当前配置如下:

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

参数SC接收空字符串。

检查 SMSC 日志文件,发现简码实际上是 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"

知道为什么会这样吗?我们如何才能将短代码作为参数?

谢谢

检查Kannel源后发现问题。原来 Kannel 会读取一系列用于发送 SMS 的配置,这些设置将在 MO 进来时替换目标号码。我找到的设置是:

  1. my-number
  2. global-sender
  3. faked-sender

每级设置都会覆盖前一级,即如果所有 3 级设置都已设置,则 faked-sender 将生效。通过注释掉上面的 3 个,我们可以从 post-url 请求中的参数 %P 中获得正确的简码值。

只是张贴这个以防对某人有所帮助。