Sms 在短消息中嵌入GSM手机

Sms 在短消息中嵌入GSM手机,sms,gsm,wml,kannel,Sms,Gsm,Wml,Kannel,我正在使用WML功能“providelocalinfo”将位置信息放入通过GSM手机上的WIB菜单发送的短消息中 我正在使用SmartTrust的WIG WML v.4规范。相关章节为“9.4 providelocalinfo元素” 我使用示例中的代码,然后通过SMS传输变量,并使用Kannel从SMSC检索消息 以下是我正在使用的代码,除了[MyServiceCenter]是我的实际服务中心外: <?xml version="1.0" encoding="UTF-8" ?> <

我正在使用WML功能“providelocalinfo”将位置信息放入通过GSM手机上的WIB菜单发送的短消息中

我正在使用SmartTrust的WIG WML v.4规范。相关章节为“9.4 providelocalinfo元素”

我使用示例中的代码,然后通过SMS传输变量,并使用Kannel从SMSC检索消息

以下是我正在使用的代码,除了[MyServiceCenter]是我的实际服务中心外:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.0//EN"
  "http://www.smarttrust.com/DTD/WIG-WML4.0.dtd">
<wml wibletenc="UCS2">  

  <card id="s">
    <p>
      <providelocalinfo cmdqualifier="location" destvar="LOC"/>
      <setvar name="X" value="loc=" class="binary"/>
      <sendsm>
          <destaddress value="367"/>
          <userdata docudenc="hex-binary" dcs="245">
              $(X)$(LOC)
          </userdata>
          <servicecentreaddress value="[myservicecentre]"/>
      </sendsm>
    </p>
  </card>
</wml>


$(X)$(LOC)

我在收到的消息中看到的是“loc=”后跟7字节(八位字节)或二进制数据。我试图找到解释如何解码这些数据的文档,但没有发现任何东西能清楚地解释这一点

在解码的7个八位组中, 前三个八位组总是一样的, 接下来的两个八位字节往往在三个唯一值之间变化, 最后两个八位组似乎是细胞

因此,我对接收器进行了编码,以提取最后两个八位字节并构造一个16位GSM蜂窝ID。大多数情况下,它与网络上已知的细胞相匹配。但通常情况下,该值不匹配

因此,我试图找到以下方面的信息:

  • 如何以安全的方式正确传输位置信息(编码、强制转换等)
  • 如何正确解码信息
  • 如何配置Kannel以支持二进制位置数据
  • 我在徒劳的搜索中检查了以下文档,但没有找到相关数据: GSM 03.38、GSM 04.07、GSM 04.08、GSM 11.15以及WIG WML规范V.4


    任何对我可能做错的事情的洞察都将不胜感激

    在这个问题上不要太多批评!我想总结一下我的发现,以防其他人发现它们有用:

  • 需要发送dcs设置不等于0的消息。dcs=“0”发送数据压缩(尊重每个八位字节的低7位;当最大消息大小实际上为140个八位字节时,允许发送160个字符的SMS消息)

  • 需要以二进制安全的方式解析数据:遇到0x0A时停止搜索的regex表达式将在二进制数据本身可能是该值时失败

  • 我发现没有必要更改Kannel的默认配置

  • 干杯


    免责声明:安全传输16位GSM手机ID需要处理一些设置,我理解这些设置只是因为它们不是默认配置的。我可能还依赖其他默认值,但我不知道它们可能会有所不同

    要解码位置信息,您需要查看GSM 11.14第48页

    1.19位置信息

              Byte(s)    Description                                           Length
                1         Location Information tag                               1
                2         Length (X) of bytes following                          1
               3-5        Mobile Country & Network Codes (MCC & MNC)             3
               6-7        Location Area Code (LAC)                               2
               8-9        Cell Identity Value (Cell ID)                          2
    
    移动国家代码(MCC)、移动网络代码(MNC)、位置区号(LAC)和 小区ID的编码如TS GSM 04.08[8]所示


    根据个人经验,这里提到的第一个八位字节通常被省略,所以前三个不变的字节是长度和国家。接下来的两个是网络运营商代码。

    这对我很有帮助:天真地抓取最后两个八位字节会丢失相同或附近单元格的不同LAC值。不同WIB平台发送的信息似乎与本规范略有不同(至少SmartTrust是这样),但这是朝着正确方向迈出的一步,表明了我们所看到的一些问题的解决方案。