SMPP Send Message получил другой результат в PDU - Confuse In Results - PullRequest
0 голосов
/ 25 сентября 2019

Реализовано в Nodejs с использованием библиотеки node-smpp и Selenium SMPPSim Simulator

const smpp = require('smpp');
const session = new smpp.Session({host: 'localhost', port: 1234});

session.on('connect', () => {
    isConnected = true;
    session.bind_transceiver({
        system_id: "SYSTEMID",
        password: "PASSWORD",
    }, (pdu) => {
        if (pdu.command_status == 0) {
            console.log('smpp connected !')
        }
    })
})


//**all pdu listener**
session.on('pdu', (pdu)=>{
    console.log(pdu)
})


function sendMessage(from, to, text){

    from = `+${from}`
    to = `+${to}`

    session.submit_sm({
        source_addr:      from,
        destination_addr: to,
        short_message:    text
    }, function(pdu) {
        console.log(pdu)
        if (pdu.command_status == 0) {
            console.log(pdu.message_id);
        }
    });
}

sendMessage("1111", "2222", "Hello World!")

Вывод при sendMessage () вызов метода:

PDU {
  command_length: 18,
  command_id: 2147483652,
  command_status: 0,
  sequence_number: 2,
  command: 'submit_sm_resp',
  message_id: '3' }

Здесь я использую SMPPSim Вывод формы инъекции MO: когда сообщение отправлено симулятором селена :

PDU {
  command_length: 63,
  command_id: 5,
  command_status: 0,
  sequence_number: 8,
  command: 'deliver_sm',
  service_type: '',
  source_addr_ton: 1,
  source_addr_npi: 1,
  source_addr: '111111',
  dest_addr_ton: 1,
  dest_addr_npi: 1,
  destination_addr: '222222',
  esm_class: 0,
  protocol_id: 0,
  priority_flag: 0,
  schedule_delivery_time: '',
  validity_period: '',
  registered_delivery: 0,
  replace_if_present_flag: 0,
  data_coding: 0,
  sm_default_msg_id: 0,
  short_message: { message: 'Hello from SMPPSim' } }

перепутано между обоимирезультат, если сообщение отправлено с использованием метода sendMessage (), то почему оно возвращает только submit_sm_resp , это из-за локальной машины ??или что-то другое ??нужна помощь, чтобы понять это поведение.

1 Ответ

1 голос
/ 26 сентября 2019

Я не знаком с node-smpp или Selenium SMPPSim Simulator, но они все еще используют протокол SMPP.

Ваш первый вывод из sendMessage () - это submit_sm_resp, который ожидается при вызове submit_sm.

Однако второй ответ, который вы предоставили, кажется необычным.Согласно протоколу SMPP, найденному здесь Я не вижу типов ответов, которые бы изначально возвращали все перечисленные вами поля.

Возможно, что Selenium отправляет некоторые параметры в виде TLV(Tagged Length Value) или они просто возвращают вам расширенный набор данных, созданный на их стороне.Их документация или исходный код могут пролить больше света, если таковые имеются.

С другой стороны, не ожидайте согласованности протокола SMPP сторонними поставщиками (ESME) или Центром обслуживания коротких сообщений (SMSC).Даже когда я напрямую интегрировался в 4-х провайдеров сотовой связи, между ними были небольшие расхождения, которые требовали разработки на заказ.

...