Hi,

This is POTS (legacy phone) standard, which is used by SMS for transmission. CCITT set these calling standards, now maintained by ITU. In the ITU-T E.164 the general recommendation is for 00 prefix, but several countries have their own. SMPP just reuses the international format, since it has to transmit the SMS over SS7.

BR,
Nikos
----- Original Message ----- From: Ivan Kurnosov
To: Singularnet
Cc: users@kannel.org
Sent: Monday, April 18, 2011 2:43 AM
Subject: Re: Specification of destination_addr


Yep, I've googled that too, but it is strange for me that there is no any explicit reference to that document in SMPP specs.


On Mon, Apr 18, 2011 at 10:37 AM, Singularnet <singular...@gmail.com> wrote:

I belive that the international number format is define in the
recomendation ITU e.164, that should be the definition of that code

2011/4/17, Ivan Kurnosov <zer...@zerkms.ru>:

Hello

For now International (addr = 0x1) numbers are validated with this code:

    case GSM_ADDR_TON_INTERNATIONAL:
        /*
         * Checks to perform:
         *   1) assume international number has at least 7 chars
         *   2) the whole source addr consist of digits, exception '+' in
front
         */
        if (octstr_len(addr) < 7) {
/* We consider this as a "non-hard" condition, since there "may" * be international numbers routable that are < 7 digits. Think
             * of 2 digit country code + 3 digit emergency code. */
            warning(0, "SMPP[%s]: Mallformed addr `%s', generally expected
at least 7 digits. ",
                     octstr_get_cstr(id),
                     octstr_get_cstr(addr));
        } else if (octstr_get_char(addr, 0) == '+' &&
                   !octstr_check_range(addr, 1, 256, gw_isdigit)) {
            error(0, "SMPP[%s]: Mallformed addr `%s', expected all digits.
",
                     octstr_get_cstr(id),
                     octstr_get_cstr(addr));
            reason = SMPP_ESME_RINVSRCADR;
            goto error;
        } else if (octstr_get_char(addr, 0) != '+' &&
                   !octstr_check_range(addr, 0, 256, gw_isdigit)) {
            error(0, "SMPP[%s]: Mallformed addr `%s', expected all digits.
",
                     octstr_get_cstr(id),
                     octstr_get_cstr(addr));
            reason = SMPP_ESME_RINVSRCADR;
            goto error;
        }
        /* check if we received leading '00', then remove it*/
        if (octstr_search(addr, octstr_imm("00"), 0) == 0)
            octstr_delete(addr, 0, 2);

        /* international, insert '+' if not already here */
        if (octstr_get_char(addr, 0) != '+')
            octstr_insert_char(addr, 0, '+');

        break;


Could any one give a reference for the international format, which has been
used while this code was written. There is no any in SMPP 3.4 specs.

Thanks.

--
With best regards, Ivan Kurnosov



--
Enviado desde mi dispositivo mσvil





--
With best regards, Ivan Kurnosov

Reply via email to