Yeay, I poked at a few things and now actually got it working with the
Service Indication.
Now on to next question: how do I send a ccq-message?
How is the XML formatted? Here's something I found in the code
(wap_push_pap_mime.c):
--------------------------------
/*
* PAP, Chapter 8 states that PAP multipart message MUST have at
least two
* parts, control entity (containing the pap control message) and
content
* entity (containing the push message). So we must have at least one
body
* part here, and at most two (MIME grammar in rfc 2046, appendix A
sets no
* limitations here).
* Input: mime content, part boundary
* Output: Push content, rdf content if present, content headers. In
addi-
* tion, modified mime content (without parsed parts).
* Returns 1, if rdf content was present
* 0, if it was absent
* -1, when error
*/
static int parse_encapsulation(Octstr **mime_content, Octstr *boundary,
Octstr **push_data, List
**content_headers,
Octstr **rdf_content)
{
--------------------------------
But I can't find a DTD for how the ccq should be formatted! I can only
find SI and SL DTDs. This leads me to believe that there should be no
second part containing the ccq, and the PPG should act only on the
information in the PAP and do a ccq from that.
Is this right or can anybody show how the XML should be formatted? :)
Thanks!
Best Regards,
Calle Kabo
20 aug 2008 kl. 08.29 skrev Calle Kabo:
Thanks for the answer!
That put me on the right track :)
However the operator does not provide public access to their PPG.
They told me to set up my own PPG and that PPG can then talk SMPP
with their SMSC.
Here is what I'm POSTing to my PPG (http://myhost/wappush)
-----------------------------------
<?php
require_once "HTTP/Request.php"; // PEAR package
$req =& new HTTP_Request("http://myhost/wappush");
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader('Content-Type', 'multipart/related;
type="application/xml"; boundary="myBoundary"');
$xml = '--myBoundary
Content-Type: application/xml
<?xml version="1.0"?>
<!DOCTYPE pap PUBLIC "-//WAPFORUM//DTD PAP 1.0//EN" "http://www.wapforum.org/DTD/pap_1.0.dtd
">
<pap>
<push-message push-id="2e4a21">
<address address-value="WAPPUSH=+4670XXXXX/TYPE=PLMN"/>
</push-message>
</pap>
--myBoundary
Content-Type: text/vnd.wap.si
<?xml version="1.0"?>
<!DOCTYPE si PUBLIC "-//WAPFORUM//DTD SI 1.0//EN" "http://www.wapforum.org/DTD/si.dtd
">
<si>
<indication si-id="si2e4a21" href="http://m.myhost.se/">
test
</indication>
</si>
--myBoundary--';
$req->addRawPostData($xml);
$req->sendRequest();
?>
------------------------------------
Here's what I get back:
-----------------------------------
<?xml version="1.0"?>
<!DOCTYPE pap PUBLIC "-//WAPFORUM//DTD PAP 1.0//EN" "http://www.wapforum.org/DTD/pap_1.0.dtd
">
<pap>
<push-response push-id="2e4a21" sender-name="lost02.linksys; WAP/1.3
(Kannel/1.4.1)" reply-time="2008-08-20T06:06:49Z" sender-address="/
wappush">
<response-result code ="1001" desc="The request has been accepted
for processing"></response-result>
</push-response>
</pap>
----------------------------------
Here's what I see in my wapbox-log:
-----------------------------------
2008-08-20 08:06:49 [2291] [11] DEBUG: HTTP: Creating HTTPClient for
`195.24.XXX.XXX'.
2008-08-20 08:06:49 [2291] [11] DEBUG: HTTP: Created HTTPClient area
0x8193e70.
2008-08-20 08:06:49 [2291] [14] INFO: PPG: Accept request </wappush>
from <195.24.XXX.XXX >
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: http_read_thread: pap
multipart accepted
2008-08-20 08:06:49 [2291] [14] INFO: client address was <
+4670XXXXXX>, accepted
2008-08-20 08:06:49 [2291] [14] DEBUG: PAP COMPILER: doing semantic
analysis for address type a phone number
2008-08-20 08:06:49 [2291] [14] DEBUG: PAP COMPILER: network
orbearer missing, reverting to GSM+SMS
2008-08-20 08:06:49 [2291] [14] INFO: reverting to default bearer
and network
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: http_read_thread: pap
control entity compiled ok
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: transform_message: push
message content and headers valid
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: push machine 0 created
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: store_push_data: push
machine 0 appended to unit push list
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: send_push_response:
telling pi
2008-08-20 08:06:49 [2291] [14] DEBUG: HTTP: Destroying HTTPClient
area 0x8193e70.
2008-08-20 08:06:49 [2291] [14] DEBUG: HTTP: Destroying HTTPClient
for `195.24.XXX.XXX'.
2008-08-20 08:06:49 [2291] [14] INFO: PPG: handle_push_message: push
message accepted for processing
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: OTA request for unit push
2008-08-20 08:06:49 [2291] [14] INFO: PPG: unconfirmed push
delivered to OTA
2008-08-20 08:06:49 [2291] [14] DEBUG: PPG: destroying push machine 0
2008-08-20 08:06:49 [2291] [9] DEBUG: OTA: event arrived
2008-08-20 08:06:49 [2291] [9] DEBUG: OTA: made connectionless
session service request
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP (UNIT): event arrived
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP_UNIT: Connectionless push
accepted
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `application/
vnd.wap.sic', WSP 1.2 to 0x002e.
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `User-Agent', WSP
1.3 to 0x0029.
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `Accept-
Encoding', WSP 1.3 to 0x003c.
2008-08-20 08:06:49 [2291] [2] ERROR: WSP: Do not know how to encode
header type 60
2008-08-20 08:06:49 [2291] [2] WARNING: Skipping header: Accept-
Encoding: gzip
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `Content-Length',
WSP 1.3 to 0x000d.
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `Content-Type',
WSP 1.3 to 0x0011.
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP: Mapping `Encoding-
Version', WSP 1.3 to 0x0043.
2008-08-20 08:06:49 [2291] [2] DEBUG: WDP (wapbox): delivering 1
segments to bearerbox
2008-08-20 08:06:49 [2291] [2] DEBUG: WSP (UNIT): delivering to wdp
2008-08-20 08:06:49 [2291] [0] WARNING: Received other message than
wdp/admin, ignoring!
---------------------------------------
And I don't see any Service Indications popping up on my phone :/
Suggestions? :)
Best Regards,
Calle Kabo
19 aug 2008 kl. 10.00 skrev Falko Ziemann:
No, that's not the way.
The message is not handled by an SMSC but it is a Wapgateway
internal function.
You send the query and the Wap-Gateway tells you, what it has stored
about the device. So you can only use this form of query if the
device
is provisioned at your Wapgateway (mind: a PPG is meant to be one
part
of a Wapgateway an should - in theory - only handle messages for
"his"
devices, but the most "misuse" it to generate Pushmessages for
external applications). So you have to generate a PAP message and
send
it to the MNOs PPG (don't worry it's simple XML, but you need access
to the PPG).
Regards
Falko
2008/8/19 Calle Kabo <[EMAIL PROTECTED]>:
Hi,
I'm trying to make a "client capabilities query". But I can't find
any info
on how to do it. :/
Is this how the communication should be?
* POST a PAP formatted document to http://myKannel/wappush
containing my
ccq-element
* That url fires up my PPG which sends the message to the operator
via the
operators SMSC
* Operator performs the ccq and replies with the capabilites
* A PAP formatted document containing the capabilities of the
phone is
returned as a response to the initial POST.
If this is not the correct flow, please tell me the correct one.
Also, please tell me if there is anything I should know on how to
format the
ccq-message. I can't seem to find the info. Or does Kannel
generate that
xml?
The documentation is really not very complete on this :/
Best Regards,
Calle Kabo