As you can confirm by reading the 3.4 spec (Appendix B), the format is far from an established standard:
*Delivery Receipt Format* SMPP provides for return of an SMSC delivery receipt via the *deliver_sm* or *data_sm* PDU, which indicates the delivery status of the message. The informational content of an SMSC Delivery Receipt may be inserted into the *short_message* parameter of the *deliver_sm *operation. *The format for this Delivery Receipt** **message is SMSC vendor specific but following is a typical example of Delivery Receipt report.** * “*id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done* *date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . .”* Kannel expects that format, a missing field will definitely confuse sscanf. Regards, Alejandro 2009/10/19 Nikos Balkanas <n...@amdtelecom.net> > Hi, > > You seem to have the spec. Just read which fields are mandatory from there. > Kannel requires mandatory fields. Kannel will use optional fields, if they > exist, but it doesn't reuire them. Optional fields are: sub, dlvrd & err. > Read the spec. > > Nikos > > ----- Original Message ----- > *From:* Latitude Test <latitude...@googlemail.com> > *To:* users <users@kannel.org> ; Nikos Balkanas <nbalka...@gmail.com> > *Sent:* Monday, October 19, 2009 4:59 PM > *Subject:* Fwd: getting delivery report: delivery failure > > I will contact my SMSC but I need to know exactly which fields are really > being used by Kannel to return the DLR status?. Seems to me that Kannel is > using *optional fields* like "sub" and "dlvrd". If thats true, then isn't > is a bug? > > > Quoting Nokos > > >> Hi, >> >> It seems that your SMSc is sending out the wrong DLR format. According to >> SMPP 3.4 specs: >> >> >> “ >> *id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done* >> >> *date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . .”* >> >> Several optional fields (sub, dlvrd, err) are missing, but also a required >> field: "Text". Without it kannel cannot understand the DLR. >> >> Contact your SMSc about it. They should comply to the SMPP spec. >> >> >> >> BR, >> >> Nikos >> > ---------- Forwarded message ---------- > From: Latitude Test <latitude...@googlemail.com> > Date: Mon, Oct 19, 2009 at 3:29 PM > Subject: Re: getting delivery report: delivery failure > To: Nikos Balkanas <n...@amdtelecom.net> > Cc: users <users@kannel.org> > > > Are you saying "dlvrd" and "sub" are mandatory for Kannel? > > > 2009/10/19 Nikos Balkanas <n...@amdtelecom.net> > >> Yes, but it is required to be there. I am not making the spec. >> >> Nikos >> >> ----- Original Message ----- >> *From:* Latitude Test <latitude...@googlemail.com> >> *To:* users <users@kannel.org> ; Nikos Balkanas <nbalka...@gmail.com> >> *Sent:* Monday, October 19, 2009 2:49 PM >> *Subject:* Fwd: getting delivery report: delivery failure >> >> Adding to it, I saw Kannel sending me correct DLRs with another SMSC and >> in the logs I saw the following: >> >> dlvrd:001 >> sub:001 >> Text:. >> >> The mendatory field Text does not contain any useful info here. How kannel >> knows the status of the message then? Seems it uses the optional fields >> which are "sub" and "dlvrd". >> >> Please confirm. >> >> Thanks. >> ---------- Forwarded message ---------- >> From: Latitude Test <latitude.de@ <latitude...@googlemail.com> >> googlemail.com> >> Date: Mon, Oct 19, 2009 at 1:31 PM >> Subject: Re: getting delivery report: delivery failure >> To: users <users@kannel.org>, Nikos Balkanas <nbalka...@gmail.com> >> >> >> >> Thanks Nikos. But I do get "stat" field which contains some useful info. >> Also I felt that the format is vendor specific and the missing fields are >> not mandatory. >> >> Quote from >> http://www.nowsms.com/discus/messages/1/SMPP_v3_4_Issue1_2-24857.pdf: >> >> The informational content of an SMSC Delivery Receipt may be inserted into >> the >> short_message parameter of the deliver_sm operation. The format for this >> Delivery Receipt >> message is SMSC* vendor specific* but following is a typical example of >> Delivery Receipt report. >> “id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done >> date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . .” >> >> Regards. >> >> 2009/10/19 Nikos Balkanas <n...@amdtelecom.net> >> >> Hi, >>> >>> It seems that your SMSc is sending out the wrong DLR format. According to >>> SMPP 3.4 specs: >>> >>> >>> “ >>> *id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done* >>> >>> *date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . .”* >>> >>> Several optional fields (sub, dlvrd, err) are missing, but also a >>> required field: "Text". Without it kannel cannot understand the DLR. >>> >>> Contact your SMSc about it. They should comply to the SMPP spec. >>> >>> >>> >>> BR, >>> >>> Nikos >>> >>> ----- Original Message ----- >>> >>> *From:* Latitude Test <latitude...@googlemail.com> >>> *To:* users <users@kannel.org> ; Nikos Balkanas <nbalka...@gmail.com> >>> *Sent:* Monday, October 19, 2009 12:26 PM >>> *Subject:* Re: getting delivery report: delivery failure >>> >>> Apologies for not sending the complete PDU before. Kindly review the >>> complete PDU and guide. >>> >>> Thanks. >>> >>> ... >>> [7] DEBUG: SMPP[abc1]: Got PDU: >>> [7] DEBUG: SMPP PDU 8174bc0 dump: >>> [7] DEBUG: type_name: enquire_link_resp >>> [7] DEBUG: command_id: 2147483669 = 0x80000015 >>> [7] DEBUG: command_status: 0 = 0x00000000 >>> [7] DEBUG: sequence_number: 201551 = 0x0003134f >>> [7] DEBUG: SMPP PDU dump ends. >>> [11] DEBUG: SMPP[abc3]: Sending enquire link: >>> [11] DEBUG: SMPP PDU 8174bc0 dump: >>> [11] DEBUG: type_name: enquire_link >>> [11] DEBUG: command_id: 21 = 0x00000015 >>> [11] DEBUG: command_status: 0 = 0x00000000 >>> [11] DEBUG: sequence_number: 201628 = 0x0003139c >>> [11] DEBUG: SMPP PDU dump ends. >>> [11] DEBUG: SMPP[abc3]: Got PDU: >>> [11] DEBUG: SMPP PDU 8174bc0 dump: >>> [11] DEBUG: type_name: enquire_link_resp >>> [11] DEBUG: command_id: 2147483669 = 0x80000015 >>> [11] DEBUG: command_status: 0 = 0x00000000 >>> [11] DEBUG: sequence_number: 201628 = 0x0003139c >>> [11] DEBUG: SMPP PDU dump ends. >>> [11] DEBUG: SMPP[abc3]: Got PDU: >>> [11] DEBUG: SMPP PDU 8174bc0 dump: >>> [11] DEBUG: type_name: deliver_sm >>> [11] DEBUG: command_id: 5 = 0x00000005 >>> [11] DEBUG: command_status: 0 = 0x00000000 >>> [11] DEBUG: sequence_number: 2453831019 = 0x92427d6b >>> [11] DEBUG: service_type: NULL >>> [11] DEBUG: source_addr_ton: 1 = 0x00000001 >>> [11] DEBUG: source_addr_npi: 1 = 0x00000001 >>> [11] DEBUG: source_addr: "989352034309" >>> [11] DEBUG: dest_addr_ton: 0 = 0x00000000 >>> [11] DEBUG: dest_addr_npi: 1 = 0x00000001 >>> [11] DEBUG: destination_addr: "8601001" >>> [11] DEBUG: esm_class: 4 = 0x00000004 >>> [11] DEBUG: protocol_id: 0 = 0x00000000 >>> [11] DEBUG: priority_flag: 0 = 0x00000000 >>> [11] DEBUG: schedule_delivery_time: NULL >>> [11] DEBUG: validity_period: NULL >>> [11] DEBUG: registered_delivery: 0 = 0x00000000 >>> [11] DEBUG: replace_if_present_flag: 0 = 0x00000000 >>> [11] DEBUG: data_coding: 0 = 0x00000000 >>> [11] DEBUG: sm_default_msg_id: 0 = 0x00000000 >>> [11] DEBUG: sm_length: 70 = 0x00000046 >>> [11] DEBUG: short_message: >>> [11] DEBUG: Octet string at 8129850: >>> [11] DEBUG: len: 70 >>> [11] DEBUG: size: 71 >>> [11] DEBUG: immutable: 0 >>> [11] DEBUG: data: 69 64 3a 32 34 35 31 37 33 33 31 33 34 20 73 75 >>> id:2451733134 su >>> [11] DEBUG: data: 62 6d 69 74 20 64 61 74 65 3a 30 39 31 30 31 33 >>> bmit date:091013 >>> [11] DEBUG: data: 30 37 30 34 20 64 6f 6e 65 20 64 61 74 65 3a 30 >>> 0704 done date:0 >>> [11] DEBUG: data: 39 31 30 31 33 30 39 35 31 20 73 74 61 74 3a 44 >>> 910130951 stat:D >>> [11] DEBUG: data: 45 4c 49 56 52 44 >>> ELIVRD >>> [11] DEBUG: Octet string dump ends. >>> [11] DEBUG: SMPP PDU dump ends. >>> [11] DEBUG: SMPP[abc3] handle_pdu, got DLR >>> [11] DEBUG: SMPP[abc3]: Couldnot parse DLR string sscanf way,fallback to >>> old way. Please report! >>> [11] DEBUG: DLR[internal]: Looking for DLR smsc=abc3, ts=2451733134, >>> dst=491733114042, type=2 >>> [11] DEBUG: DLR[internal]: created DLR message for URL < >>> http://192.xxx.xxx.xxx:80/DServlet?dlrStatus=%d&dlrData=%A> >>> [11] DEBUG: SMPP[abc3]: Sending PDU: >>> [11] DEBUG: SMPP PDU 81772b8 dump: >>> [11] DEBUG: type_name: deliver_sm_resp >>> [11] DEBUG: command_id: 2147483653 = 0x80000005 >>> [11] DEBUG: command_status: 0 = 0x00000000 >>> [11] DEBUG: sequence_number: 2453831019 = 0x92427d6b >>> [11] DEBUG: message_id: NULL >>> [11] DEBUG: SMPP PDU dump ends. >>> ... >>> >>> 2009/10/16 Nikos Balkanas <nbalka...@gmail.com> >>> >>>> Hmm. Interesting. I misspelled "DLR" to "DKR" and I think this caused >>>> the problem. When asking for detailed DLR excerpt from bb logs, I didn't >>>> have half a PDU in mind! Are you trying to save lines on copy and paste? >>>> Please resubmit the whole PDU entry from bb logs. >>>> >>>> Nikos >>>> >>>> ----- Original Message ----- >>>> *From:* Latitude Test <latitude...@googlemail.com> >>>> *To:* users <users@kannel.org> >>>> *Sent:* Friday, October 16, 2009 11:21 AM >>>> *Subject:* getting delivery report: delivery failure >>>> >>>> >>>> >>>> >>>> This is what I see in the log: >>>> >>>> DEBUG: data: 69 64 3a 32 34 35 31 37 33 33 31 33 34 20 73 75 >>>> id:2451733134 su >>>> DEBUG: data: 62 6d 69 74 20 64 61 74 65 3a 30 39 31 30 31 33 bmit >>>> date:091013 >>>> DEBUG: data: 30 37 30 34 20 64 6f 6e 65 20 64 61 74 65 3a 30 0704 done >>>> date:0 >>>> DEBUG: data: 39 31 30 31 33 30 39 35 31 20 73 74 61 74 3a 44 910130951 >>>> stat:D >>>> DEBUG: data: 45 4c 49 56 52 44 ELIVRD >>>> DEBUG: Octet string dump ends. >>>> DEBUG: SMPP PDU dump ends. >>>> DEBUG: SMPP[abc3] handle_pdu, got DLR >>>> DEBUG: SMPP[abc3]: Couldnot parse DLR string sscanf way,fallback to old >>>> way. Please report! >>>> DEBUG: DLR[internal]: Looking for DLR smsc=abc3, ts=2451733134, >>>> dst=491733114042, type=2 >>>> DEBUG: DLR[internal]: created DLR message for URL < >>>> http://192.xxx.xxx.xxx:80/DServlet?dlrStatus=%d&dlrData=%A> >>>> >>>> >>>> 2009/10/13 Nikos Balkanas <nbalka...@gmail.com> >>>> >>>> Hi, >>>>> >>>>> Please post detailed bb logs with the respond_sm PDU from your SMSc. I >>>>> suspect that your SMSc is sending the wrong DKR. >>>>> >>>>> BR, >>>>> Nikos >>>>> >>>>> ----- Original Message ----- >>>>> *From:* Latitude Test <latitude...@googlemail.com> >>>>> *To:* users <users@kannel.org> >>>>> *Sent:* Tuesday, October 13, 2009 2:15 PM >>>>> *Subject:* getting delivery report: delivery failure >>>>> >>>>> Hi all, >>>>> >>>>> My kannel is configured to send me delivery reports for the SMS >>>>> messages: >>>>> >>>>> ?dlrStatus=%d&dlrData=%A&dlr-mask=7 >>>>> >>>>> From Kannel docs: >>>>> 1: delivery success >>>>> 2: delivery failure >>>>> 4: message buffered >>>>> 8: smsc submit >>>>> 16: smsc reject >>>>> >>>>> I was getting the correct response codes from Kannel but as soon as I >>>>> switched to another SMSC (SMPP), I am always getting status 2 (failure) >>>>> ?dlrStatus=2... even though the message gets delivered to the device. >>>>> >>>>> What could be the problem here? How Kannel maps the return codes from >>>>> SMSC to the standard codes? >>>>> >>>>> Thanks a lot. >>>>> >>>>> >>>> >>>> >>> >> >> > >