我使用kannel通过smpp链接向移动运营商交换消息。 对于MO消息,我设置了一个kannel SMS-SERVICE并设置如下的get-url:
group = sms-service
keyword = default
get-url = "http://xx.xx.xx.xx:8080/mo-messages/get?coding=%c&charset=%C&from=%p&to=%P&content=%a"
concatenation = true
forced-smsc = telecom
catch-all = true
max-messages = 0
当我发送" UCS2"消息到我的短信用手机,kannel向我的获取网址发送一个请求,其中包含正确的编码文本:
sent text in mobile : سلام@
and url requested by kannel :
http://xx.xx.xx.xx:8080/mo-messages/get?coding=0&charset=UTF-8&from=xxxx&to=xxxx&content=%D8%B3%D9%84%D8%A7%D9%85%40
this is correct encoded @ in content : %40
但是当我发送" GSM ascci 7bit"消息,@在文本中没有正确的url编码。如下所示:
sent text in mobile : Hello@
and url requested by kannel :
http://xx.xx.xx.xx:8080/mo-messages/get?coding=0&charset=UTF-8&from=xxxx&to=xxxx&content=Hello%C2%A1
this is incorrect url encoded @ in content : %C2%A1
我通过wireshark捕获所有要求的Kannel URL。 我不能将这个urlencoded字符串转换为@与任何字符集。 kannel MO-RECODE功能对此没有影响,我测试了真假MO-RECODE。
我在Kannel 1.5.0上测试了它,在Centos x64 6.7上测试了Kannel 1.4.4
我找不到任何解决办法。
三江源