私は、WML 関数「providelocalinfo」を使用して、GSM ハンドセットの WIB メニューを介して送信されるショート メッセージに位置情報を挿入しています。
SmartTrust の WIG WML v.4 Spec を使用しています。関連するセクションは「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 オクテットは 3 つの一意の値の間で変化する傾向があり、最後の 2 オクテットは cellid のように見えます。
そこで、最後の 2 オクテットを取り出して 16 ビットの GSM cellid を構築するように受信機をコーディングしました。ほとんどの場合、ネットワークの既知の cellid と一致します。しかし、多くの場合、値は一致しません。
そこで、以下の情報を探しています。
- 安全な方法で位置情報を適切に送信する方法 (エンコーディング、キャストなど)
- 情報を正しくデコードする方法
- バイナリ位置データを尊重するように Kannel を構成する方法
無駄な検索で次のドキュメントを調べましたが、関連するデータが見つかりませんでした: GSM 03.38、GSM 04.07、GSM 04.08、GSM 11.15、および WIG WML Spec V .4
私が間違っているかもしれないことについての洞察をいただければ幸いです!