Peter,
It would be great to have such a feature. However, IMHO the configuration parameters are a little cumbersome and could lead to problems in the future.
The first thing I'd change is the ability to choose the %X (X = Letter of choice). It would be way to easy for people to overload an already used parameter (%s, %a, you know... nobody reads the docs! ;) ). Furthermore, it could cause problems if future versions of Kannel use that letters for anything else (imagine you start using %M and then Kannel developers choose to use %M for anything else... it would require reconfiguration of the whole system).
So, I'd suggest a more generic approach to variable replacement, maybe a two-letter or letter-number, kind of %x1, %x2... %xN, being "x" one unique letter specially reserved for parameter passing and 1, 2, N a number defined on the config.
I'd also propose to include an structure for the "dictionary" you've mentioned. It would generalise the ID:Length combination under a generic word. It could even be managed as a special "group".
In short my (rather heavily inspired by your insights) dream config would look like this:
group = smpp-optional
opt-id = 1
parameter-id = billerr_msg
parameter-tag = 0x1404
parameter-length = 22
group = smpp-option
opt-id = 2
parameter-id = secret_codeparameter-tag = 0x1533
parameter-length = 90
So this setup would map to %x1 and %x2.
IMHO is more generic and more readable. The "parameter-id" could be also get rid of and use some consctruct as
....¶m1=xxxx¶m2=yyyy"
to avoid clashing with the system if I'm stupid enough as to set parameter-id to "from", "to" or any other reserved words.
In fact, this could be used to abstract the whole SMPP structure, but that's another story ;)
Regards,
On 7/31/05, Peter Beckman <[EMAIL PROTECTED]> wrote:
Sorry to open the can of worms again...
Stipe proposed some way of passing optional parameters between the smsbox
and bearerboxes. It doesn't seem there is currently a way to pass
parameters (offset, length, value) back and forth between the bearerbox and
smsbox for those pesky SMSC's that want to pass interesting information
outside of the normal, base SMPP spec.
Any suggestions? Not many replied back in February, and since kannel
doubles in power every 6 months (Beckman's Law), maybe since then someone
has figured out how (or submitted a patch) to handle this. Anyone?
Beckman
On Wed, 2 Feb 2005, Stipe Tolj wrote:
> Peter Beckman wrote:
>
>> Dear Kannel Developers:
>>
>> I've written about this before, but I thought I would bring it up again
>> because I hate patching.
>>
>> Many SMSC's are starting to use the optional SMPP parameters for
>> information like billing issues, carrier failures, etc. Kannel really
>> doesn't allow for this -- it detects the parameters, but is unable to
>> actually turn them into some sort of passable escape code(s) via
>> sms-service.
>>
>> Take for example this log dump:
>>
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x0427)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 1
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x001e)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 29
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1402)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 1
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1404)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 22
>> 2005-01-27 16:46:56 [30186] [7] ERROR: SMPP: Unknown
>> TLV(0x1404,0x0016,4154265420576972656c657373205365727669636573) for PDU
>> type (deliver_sm) received!
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1530)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 3
>> 2005-01-27 16:46:56 [30186] [7] ERROR: SMPP: Unknown
>> TLV(0x1530,0x0003,504244) for PDU type (deliver_sm) received!
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1531)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 90
>> 2005-01-27 16:46:56 [30186] [7] ERROR: SMPP: Unknown
>> TLV(0x1531,0x005a,4e6f2050686f6e65204e756d6265723a20537562736372696265722070686f6e65206e756d62657220776173206e6f74206d617463686
>> 56420696e2074686520515073732073797374656d206f722041575320506f7274616c20)
>> for PDU type (deliver_sm) received!
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1532)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 6
>> 2005-01-27 16:46:56 [30186] [7] ERROR: SMPP: Unknown
>> TLV(0x1532,0x0006,2d3230313030) for PDU type (deliver_sm) received!
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter tag (0x1533)
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: Optional parameter length read as 90
>> 2005-01-27 16:46:56 [30186] [7] ERROR: SMPP: Unknown
>> TLV(0x1533,0x005a,4e6f2050686f6e65204e756d6265723a20537562736372696265722070686f6e65206e756d62657220776173206e6f74206d617463686
>> 56420696e2074686520515073732073797374656d206f722041575320506f7274616c20)
>> for PDU type (deliver_sm) received!
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: SMPP[mysmsc]: Got PDU:
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: SMPP PDU 0xb5c9a5e0 dump:
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: type_name: deliver_sm
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: command_id: 5 = 0x00000005
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: command_status: 0 = 0x00000000
>> 2005-01-27 16:46:56 [30186] [7] DEBUG: sequence_number: 877 = 0x0000036d
>> [...]
>>
>> My dream for the config file:
>>
>> group = smsbox
>> smsc-id = mysmsc
>> [...]
>> optparam = 0x1404:22:N:billerr_msg
>> optparam = 0x1530:3:M:happy_tag
>> optparam = 0x1531:90:K:secret_code
>> optparam = 0x1532:6:J:test_msg_id
>> optparam = 0x1533:90:L:secret_code2
>>
>> Now the following takes place:
>>
>> When an SMS arrives, it can be passed to sms-service, using %N, %M, %K,
>> %J and %L (assuming those are available), so I can grab them with a PHP
>> script and do something with them.
>>
>> When submitting an SMS to kannel, I can set the URL to:
>>
>> http://localhost:13013/cgi-bin/sendsms?user=[...]&billerr_msg=you+spent+too+much&happy_tag=fun&text_msg_id=123FFF
>>
>> And kannel will modify the PDU to include the data passed and send that
>> to the SMSC.
>
> now, this approach does not "handle" on how you pass the SMPP specific
> optional parameters in the Kannel internal msg structure to smsbox.
>
> I see (and I agree) that we may have a generic way in passing SMSC specific
> optional parameters up to the application layer and vice versa. But it should
> be as clean as possible and transparently configurable for all SMSC
> protocols.
>
> Therefore we need a sort of Dict that contains key:value pairs within the msg
> structure. Any ideas on how we could handle this? Alex?
>
> Stipe
>
> mailto:stolj_{at}_wapme.de
> -------------------------------------------------------------------
> Wapme Systems AG
>
> Vogelsanger Weg 80
> 40470 Düsseldorf, NRW, Germany
>
> phone: +49.211.74845.0
> fax: +49.211.74845.299
>
> mailto: info_{at}_wapme-systems.de
> http://www.wapme-systems.de/
> -------------------------------------------------------------------
>
---------------------------------------------------------------------------
Peter Beckman Internet Guy
[EMAIL PROTECTED] http://www.purplecow.com/
---------------------------------------------------------------------------
--
Alejandro Guerrieri
Magicom
http://www.magicom-bcn.net/