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






Reply via email to