K2InformaticsGmbH / smpp_parser

A parser for SMPP protocol PDUs
Apache License 2.0
3 stars 1 forks source link

Unsupported encode `network_error_code` for JSON #20

Closed c-bik closed 6 years ago

c-bik commented 6 years ago

When encoding from JSON (binary)

{
    "command_id": "deliver_sm",
    "command_length": 40,
    "command_status": "ESME_ROK",
    "data_coding": "MC Specific",
    "dest_addr_npi": "Unknown",
    "dest_addr_ton": "Unknown",
    "destination_addr": "",
    "esm_class": 0,
    "network_error_code": {
        "error": 6,
        "type": 3
    },
    "priority_flag": 0,
    "protocol_id": 0,
    "registered_delivery": 0,
    "replace_if_present_flag": 0,
    "schedule_delivery_time": "",
    "sequence_number": 1,
    "service_type": "",
    "short_message": "",
    "sm_default_msg_id": 0,
    "source_addr": "",
    "source_addr_npi": "Unknown",
    "source_addr_ton": "Unknown",
    "validity_period": ""
}
[error] [_EMTT_] {emtt_codec,17} smpp encode : function_clause
[{smpp,b2a,[<<"network_error_code">>],[{file,"smpp_parser/src/smpp.erl"},{line,396}]},
{smpp,'-json2internal/1-fun-1-',3,[{file,"smpp_parser/src/smpp.erl"},{line,13}]},
{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},
{smpp,encode,1,[{file,"smpp_parser/src/smpp.erl"},{line,161}]},
...

Decoding works:

S = "00 00 00 28 00 00 00 05 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
    "00 00 00 04 23 00 03 03 00 06".
> smpp:decode(S).
{ok,#{command_id => <<"deliver_sm">>,command_length => 40,
      command_status => <<"ESME_ROK">>,
      data_coding => <<"MC Specific">>,
      dest_addr_npi => <<"Unknown">>,
      dest_addr_ton => <<"Unknown">>,destination_addr => <<>>,
      esm_class => 0,
      network_error_code => #{error => 6,type => 3},
      priority_flag => 0,protocol_id => 0,
      registered_delivery => 0,replace_if_present_flag => 0,
      schedule_delivery_time => <<>>,sequence_number => 1,
      service_type => <<>>,short_message => <<>>,
      sm_default_msg_id => 0,source_addr => <<>>,
      source_addr_npi => <<"Unknown">>,
      source_addr_ton => <<"Unknown">>,validity_period => <<>>}}