Udh始终为0,无法使用SMPPSim发送长消息

时间:2012-11-11 07:02:42

标签: simulator kannel smpp

我正在使用SMPPSim selenium软件,我已经将它连接到kannel 4.3,我使用注入消息从用户界面使用SMPPSim发送消息

我注意到如果我从SMPPSim向kannel发送长消息,我将不会收到那些长消息,并且udh = 0总是用于短消息或长消息(多个消息)

因为我知道长消息应该被分成多个消息,并且它们的udh应该是0以外的值

请记住: 1.我被要求使用kannel 1.4.3被请求的客户端,请求的客户端仍在使用1.4.3并且他们在这个版本的kannel中有很多应用程序,所以升级不在我手中。 2.在SMPPSim selenium软件中提到它支持多条消息,但我真的不知道,以及我在寻找什么!!!

这是配置

kannel.conf

顺便发送使用SMPPSim Silenim用户界面

kannel.conf

group = core
admin-port = 17000
smsbox-port = 17001
admin-password = Dumb-bugger
log-file = "/var/log/kannel/kannel.log"
log-level = 0
box-deny-ip = "*.*.*.*"
box-allow-ip = "127.0.0.1;192.168.1.*"
admin-deny-ip = "*.*.*.*"
admin-allow-ip = "127.0.0.1;192.168.1.*"
#unified-prefix = "+91,0091,+0091;+,;"
access-log = "/var/log/kannel/access.log"
dlr-storage = mysql



group = smsbox
bearerbox-host = localhost
sendsms-port = 17017
bearerbox-port = 17010
log-level = 0
mo-recode=false


group = sendsms-user
username = test
password = test
user-allow-ip = "127.0.0.1;192.168.1.*"
concatenation = true
max-messages = 10




group = smsc
smsc = smpp
smsc-id = "SMPPSim"
host = localhost
port =2775
receive-port = 2775
system-type = ""
smsc-username = smppclient1    
smsc-password = password
keepalive = 2
interface-version = 34
source-addr-ton = 5
source-addr-npi = 0
source-addr-autodetect = yes
dest-addr-ton = 1
dest-addr-npi = 1
address-range = ""
enquire-link-interval = 60
max-pending-submits = 10
reconnect-delay = 10
priority = 0

smppsim.props

# SMPP_PORT specified the port that SMPPSim will listen on for connections from SMPP

# clients. SMPP_CONNECTION_HANDLERS determines the maximum number of client connections

# that can be handled concurrently.

SMPP_PORT=2775

SMPP_CONNECTION_HANDLERS=10



# Specify the classes that imlement connection and protocol handling respectively here.

# Such classes *must* be subclasses of com.seleniumsoftware.SMPPSim.ConnectionHandler and com.seleniumsoftware.SMPPSim.SMPPProtocolHandler respectively

# Or those classes themselves for the default (good) behaviour

# Supply your own subclasses with particular methods overridden if you want to implement

# bad SMSC behaviours to see how your client application copes...

CONNECTION_HANDLER_CLASS=com.seleniumsoftware.SMPPSim.StandardConnectionHandler

PROTOCOL_HANDLER_CLASS=com.seleniumsoftware.SMPPSim.StandardProtocolHandler



# Specify the class that implements the message state life cycle simulation.

# Such classes must extend the default class, LifeCycleManager

LIFE_CYCLE_MANAGER=com.seleniumsoftware.SMPPSim.LifeCycleManager

#

# The Deterministic Lifecycle Manager sets message state according to the first character of the message destination address:

# 1=EXPIRED,2=DELETED,3=UNDELIVERABLE,4=ACCEPTED,5=REJECTED, other=DELIVERED

# LIFE_CYCLE_MANAGER=com.seleniumsoftware.SMPPSim.DeterministicLifeCycleManager



# LifeCycleManager parameters

#

# Check and possibly change the state of messages in the OutboundQueue every n milliseconds

MESSAGE_STATE_CHECK_FREQUENCY=5000



# Maximum time (in milliseconds) in the initial ENROUTE state

MAX_TIME_ENROUTE=10000



# The minimum time to wait before generating a delivery receipt (ms)

DELAY_DELIVERY_RECEIPTS_BY=0



# Percentage of messages that change state each time we check (excluding expiry or messages being completely discarded due to age)

# Requires an integer between 0 and 100

PERCENTAGE_THAT_TRANSITION=75



# State transition percentages. These parameters define the percentage of messages that

# transition from ENROUTE to the specified final state. The list of percentages should

# add up to 100 and must be integer values. SMPPSim will adjust the percentages if they do not.



# Percentage of messages that will transition from ENROUTE to DELIVERED

PERCENTAGE_DELIVERED=90



# Percentage of messages that will transition from ENROUTE to UNDELIVERABLE

PERCENTAGE_UNDELIVERABLE=6



# Percentage of messages that will transition from ENROUTE to ACCEPTED

PERCENTAGE_ACCEPTED=2



# Percentage of messages that will transition from ENROUTE to REJECTED

PERCENTAGE_REJECTED=2



# Time messages held in queue before being discarded, after a final state has been reached (milliseconds)

# For example, after transitioning to DELIVERED (a final state), state info about this message will be

# retained in the queue for a further (e.g.) 60000 milliseconds before being deleted.

DISCARD_FROM_QUEUE_AFTER=60000



# Web Management

HTTP_PORT=88

HTTP_THREADS=1

DOCROOT=www

AUTHORISED_FILES=/css/style.css,/index.htm,/inject_mo.htm,/favicon.ico,/images/logo.gif,/images/dots.gif,/user-guide.htm,/images/homepage.gif,/images/inject_mo.gif

INJECT_MO_PAGE=/inject_mo.htm



# Account details. Comma seperate. SystemID and Password provided in Binds will be validated against these credentials.

SYSTEM_IDS=smppclient1,smppclient2

#SYSTEM_IDS=smppclient

PASSWORDS=password,password

#PASSWORDS=password

OUTBIND_ENABLED=false

#OUTBIND_ENABLED=true

OUTBIND_ESME_IP_ADDRESS=127.0.0.1

OUTBIND_ESME_PORT=2776

#OUTBIND_ESME_PORT=2777

#OUTBIND_ESME_SYSTEMID=smppclient1

OUTBIND_ESME_SYSTEMID=smppclient

OUTBIND_ESME_PASSWORD=password



# MO SERVICE

DELIVERY_MESSAGES_PER_MINUTE=0

DELIVER_MESSAGES_FILE=deliver_messages.csv



# LOOPBACK

LOOPBACK=FALSE



# ESME to ESME routing

ESME_TO_ESME=true



# QUEUES

# Maximum size parameters are expressed as max number of objects the queue can hold

OUTBOUND_QUEUE_MAX_SIZE=1000

INBOUND_QUEUE_MAX_SIZE=1000



# The delayed inbound queue holds DELIVER_SM (MO) messages which could not be delivered to the selected ESME

# because it replied "queue full". Such messages get stored in the delayed inbound queue and delivery is attempted again

# periodically according to the following configuration.

#

# How many seconds to wait between passes through the delayed inbound queue. Recommend this is set to at least one minute.

DELAYED_INBOUND_QUEUE_PROCESSING_PERIOD=60

DELAYED_INBOUND_QUEUE_MAX_ATTEMPTS=100







# LOGGING

# See logging.properties for configuration of the logging system as a whole

#

# Set the following property to true to have each PDU logged in human readable

# format. Uses INFO level logging so the log level must be set accordingly for this

# output to appear.

DECODE_PDUS_IN_LOG=true



# PDU CAPTURE

# The following properties allow binary and/or decoded PDUs to be captured in files

# This is to allow the results of test runs (especially regression testing) to be

# checked with reference to these files

#

# Note that currently you must use the StandardConnectionHandler and StandardProtocolHandler classes for this

# feature to be available.

#

# _SME_ properties concern PDUs sent from the SME application to SMPPSim

# _SMPPSIM_ properties concern PDUs sent from SMPPSim to the SME application

#

CAPTURE_SME_BINARY=false

CAPTURE_SME_BINARY_TO_FILE=sme_binary.capture

CAPTURE_SMPPSIM_BINARY=false

CAPTURE_SMPPSIM_BINARY_TO_FILE=smppsim_binary.capture

CAPTURE_SME_DECODED=false

CAPTURE_SME_DECODED_TO_FILE=sme_decoded.capture

CAPTURE_SMPPSIM_DECODED=false

CAPTURE_SMPPSIM_DECODED_TO_FILE=smppsim_decoded.capture



# Byte Stream Callback

#

# This feature, if enabled, will cause SMPPSim to send PDUs received from the ESME or sent to it

# as byte streams over a couple of connections.

# This is intended to be useful in automated testing scenarios where you need to notify the test application

# with details of what was *actually* received by SMPPSim (or sent by it).

#

# Note that byte streams are prepended by the following fields:

#

# a 4 byte integer which indicates the length of the whole callback message

# a 1 byte indicator of the type of interaction giving rise to the callback,

# - where 0x01 means SMPPSim received a request PDU and

#         0x02 means SMPPSim sent a request PDU (e.g. a DeliverSM)

# a 4 byte fixed length identified, which identifies the SMPPSim instance that sent the bytes

#

# So the length of the SMPP pdu is the callback message length - 9.

#

# LENGTH(4) TYPE(1) ID(4) PDU (LENGTH)

CALLBACK=false

CALLBACK_ID=SIM1

CALLBACK_TARGET_HOST=localhost

CALLBACK_PORT=3333



# MISC

SMSCID=SMPPSim

smppsim日志

2012.11.06 10:19:05 958 INFO    22 00010139:36373731:32303030:38333600:
2012.11.06 10:19:05 958 INFO    22 01013939:30300000:00000000:00000000:
2012.11.06 10:19:05 959 INFO    22 00546865:20756E69:76657273:69747920:
2012.11.06 10:19:05 959 INFO    22 77617320:666F756E:64656420:696E204D:
2012.11.06 10:19:05 959 INFO    22 61726368:20332C20:31383634:20617320:
2012.11.06 10:19:05 959 INFO    22 74686520:436F6C6F:7261646F:2053656D:
2012.11.06 10:19:05 959 INFO    22 696E6172:79206279:204A6F68:6E204576:
2012.11.06 10:19:05 959 INFO    22 616E732C:20746865:20666F72:6D657220:
2012.11.06 10:19:05 959 INFO    22 476F7665:726E6F72:206F6620:436F6C6F:
2012.11.06 10:19:05 959 INFO    22 7261646F:20546572:7269746F:72792C20:
2012.11.06 10:19:05 959 INFO    22 77686F20:68616420:6265656E:20617070:
2012.11.06 10:19:05 960 INFO    22 6F696E74:65642062:79205072:65736964:
2012.11.06 10:19:05 960 INFO    22 656E7420:41627261:68616D20:4C696E63:
2012.11.06 10:19:05 960 INFO    22 6F6C6E2E:204A6F68:6E204576:616E732C:
2012.11.06 10:19:05 960 INFO    22 2077686F:20616C73:6F20666F:756E6465:
2012.11.06 10:19:05 960 INFO    22 64204E6F:72746877:65737465:726E2055:
2012.11.06 10:19:05 960 INFO    22 6E697665:72736974:79207072:696F7220:
2012.11.06 10:19:05 960 INFO    22 746F2066:6F756E64:696E6720:4455202E:
2012.11.06 10:19:05 960 INFO    22 20
2012.11.06 10:19:05 960 INFO    22 cmd_len=0,cmd_id=5,cmd_status=0,seq_no=4,service_type=,source_addr_ton=1
2012.11.06 10:19:05 961 INFO    22 source_addr_npi=1,source_addr=919894198941,dest_addr_ton=1,dest_addr_npi=1
2012.11.06 10:19:05 961 INFO    22 destination_addr=9900,esm_class=0,protocol_ID=0,priority_flag=0
2012.11.06 10:19:05 961 INFO    22 schedule_delivery_time=,validity_period=,registered_delivery_flag=0
2012.11.06 10:19:05 961 INFO    22 replace_if_present_flag=0,data_coding=0,sm_default_msg_id=0,sm_length=256
2012.11.06 10:19:05 961 INFO    22 short_message=The university was founded in March 3
2012.11.06 10:19:05 961 INFO    22  1864 as the Colorado Seminary by John Evans
2012.11.06 10:19:05 961 INFO    22  the former Governor of Colorado Territory
2012.11.06 10:19:05 961 INFO    22  who had been appointed by President Abraham Lincoln. John Evans
2012.11.06 10:19:05 961 INFO    22  who also founded Northwestern University prior to founding DU .
2012.11.06 10:19:05 961 INFO    22  
2012.11.06 10:19:05 961 INFO    22 addressIsServicedByReceiver(9900)
2012.11.06 10:19:05 962 INFO    22 InboundQueue: empty  - waiting
2012.11.06 10:19:05 962 INFO    16 : DELIVER_SM_RESP:
2012.11.06 10:19:05 962 INFO    16 Hex dump (17) bytes:
2012.11.06 10:19:05 962 INFO    16 00000011:80000005:00000000:00000004:
2012.11.06 10:19:05 962 INFO    16 00
2012.11.06 10:19:05 963 INFO    16 cmd_len=17,cmd_id=-2147483643,cmd_status=0,seq_no=4,system_id=
2012.11.06 10:19:05 963 INFO    16 DelayedInboundQueue: now contains 0 object(s)
2012.11.06 10:19:05 963 INFO    16  

的access.log

2012-11-06 10:19:05 Receive SMS [SMSC:SMPPSim] [SVC:] [ACT:] [BINF:] [FID:] [from:+919894198941] [to:+9900] [flags:-1:0:-1:0:-1] [msg:0:] [udh:0:]

2 个答案:

答案 0 :(得分:0)

不幸的是SMPPSim不支持长SMS-MO(deliver_sm)就像从Http接口注入一样简单,它会将pdu发送到kannel(或者你的ESME是什么),你可以通过嗅探smpp之间的流量来检查kannel和SMPPSim。

当你注入一个很长的SMS-MO时,SMPPSim会实现一个新的 com.selenium.SMPPSim.pdu.DeliverSm 对象,然后使用你在http接口上手动输入的参数填充它,所以如果你输入一个长文本,它只会将其设置为 short_message ,无论其长度如何。

当您知道如何使用sar_total_segments,sar_segment_seqnum和sar_msg_ref_num时,您可以通过该注入http接口发送长SMS-MO,这里是good&simple tutorial

答案 1 :(得分:-1)

我配置了sar_total_segments,sar_segment_seqnum和sar_msg_ref_num,但是当使用com.cloudhopper.commons.gsm.GsmUtil.getShortMessageUserDataHeader时,UDH为0。