Hmm, the whole thing sounds strange, because a normal SMSC can't
provide (nor forward) ccq informations.
Let me give you an example from real life:
Let's say you want to show a wappage with a GIF file on an unkown device.
The device does only support JPG, but the Wapgateway has a gif2jpg
converter. Then the ccq request would return, that the device supports
jpg and gif, because the Wapgateway thinks "Ha! I can handle that!".
So the ccq is in reality a mixture of device and gateway function. And
I have never ever seen a SMSC that knows the functions of a
Wapgateway.
So, whatever the MNO wants you to do is a special solution and not
compatible with GSM specifications.
Regards
Falko
2008/8/20 Calle Kabo <[EMAIL PROTECTED]>:
> 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
>>>>
>>>>
>>
>>
>
>
>