我正在使用 WML 功能“providelocalinfo”将位置信息放入通过 GSM 手机上的 WIB 菜单发送的短消息中。
我正在使用 SmartTrust 的 WIG WML v.4 规范。相关部分是“9.4 providelocalinfo 元素”
我使用示例中的代码,然后通过 SMS 传输变量,并使用 Kannel 从 SMSC 中检索消息。
这是我正在使用的代码,除了 [myservicecentre] 是我的实际服务中心:
<?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>
我在收到的消息中看到的是“loc=”,后跟 7 个字节(八位字节)或二进制数据。我试图找到解释如何解码这些数据的文档,但没有找到清楚地解释这一点的文件。
在解码的 7 个八位字节中,前 3 个八位位组始终相同,接下来的 2 个八位位组往往在三个唯一值之间变化,最后两个八位位组似乎是 cellid。
所以我已经对接收器进行了编码,以提取最后两个八位字节并构造一个 16 位 GSM cellid。大多数情况下,它匹配来自网络的已知 cellid。但很多时候,值不匹配。
因此,我正在尝试查找有关以下内容的信息:
- 如何以安全的方式正确传输位置信息(编码、转换等)
- 如何正确解码信息
- 如何配置 Kannel 以尊重二进制位置数据
我在徒劳的搜索中检查了以下文档,但没有找到相关数据:GSM 03.38、GSM 04.07、GSM 04.08、GSM 11.15 以及 WIG WML Spec V .4
任何对我可能做错的事情的见解将不胜感激!