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 进来时替换目标号码。我找到的设置是:
- my-number
- global-sender
- faked-sender
每级设置都会覆盖前一级,即如果所有 3 级设置都已设置,则 faked-sender
将生效。通过注释掉上面的 3 个,我们可以从 post-url
请求中的参数 %P
中获得正确的简码值。
只是张贴这个以防对某人有所帮助。
目前我们使用 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 进来时替换目标号码。我找到的设置是:
- my-number
- global-sender
- faked-sender
每级设置都会覆盖前一级,即如果所有 3 级设置都已设置,则 faked-sender
将生效。通过注释掉上面的 3 个,我们可以从 post-url
请求中的参数 %P
中获得正确的简码值。
只是张贴这个以防对某人有所帮助。