首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SMPP:为message_id设置submit_sm

SMPP:为message_id设置submit_sm
EN

Stack Overflow用户
提问于 2017-05-15 20:29:19
回答 2查看 1.6K关注 0票数 0

请设置唯一的消息标识符,该标识符稍后将在DLR中返回,以供参考。

让我解释一下我的当前流程:

我的方法是向smsc网关发送一条消息,我们从smsc获得一个id,保存这个id,当DLR出现时,我们将从dlr到之前保存的id进行匹配(因为我们在短时间内推送了数百万条消息,这种方法对我们来说不是最优的,来回到数据库)。

我想要取得的是,如果有一种方法,我们可以添加一个参数的提交消息到smsc,并检索这个id时,dlr回来。

我将https://github.com/podshumok/python-smpplib用于python,https://github.com/uudashr/jsmpp用于java。

编辑

下面是我提交SM的PDU

代码语言:javascript
复制
{'ms_msg_wait_facilities': None, 'priority_flag': None, 'language_indicator': None, 'its_reply_type': None, '_sequence': 2, 'registered_delivery': True, 'schedule_delivery_time': None, 'sm_default_msg_id': None, 'callback_num_pres_ind': None, 'source_subaddress': None, '_length': 70, 'user_response_code': None, 'sar_msg_ref_num': None, 'short_message': 'Lets Test MT\n', 'privacy_indicator': None, 'user_message_reference': 12, 'sar_total_segments': None, 'dest_addr_ton': 1, 'callback_num': None, 'sar_segment_seqnum': None, '_client': <smpplib.client.Client object at 0x7f2058a6a910>, 'service_type': None, 'source_addr_ton': 1, 'payload_type': None, 'validity_period': None, 'destination_addr': '2349*********', 'esm_class': 0, 'status': 0, 'display_time': None, 'source_addr': '7****', 'replace_if_present_flag': None, 'dest_subaddress': None, 'sm_length': 13, 'data_coding': 0, 'its_session_info': None, 'destination_port': None, 'ussd_service_op': None, 'sms_signal': None, 'protocol_id': 100, 'ms_validity': None, 'source_addr_npi': 1, 'source_addr_subunit': None, 'dest_addr_npi': 1, 'client': <smpplib.client.Client object at 0x7f2058a6a910>, 'command': 'submit_sm', 'more_messages_to_send': None, 'dest_addr_subunit': None, 'source_port': None, 'number_of_messages': None, 'alert_on_message_delivery': None}

下面是DeliverSM的PDU:

代码语言:javascript
复制
{'priority_flag': '0', 'message_state': None, 'language_indicator': None, 'callback_num': None, 'payload_type': None, 'replace_if_present_flag': '0', 'schedule_delivery_time': '', 'sm_default_msg_id': '0', 'source_subaddress': None, 'user_response_code': None, 'sar_total_segments': None, 'short_message': 'id:157de861 sub:001 dlvrd:000 submit date:1705171812 done date:1705171812 stat:UNDELIV err:255', 'privacy_indicator': None, 'user_message_reference': None, 'sar_msg_ref_num': None, 'dest_addr_ton': '1', 'sar_segment_seqnum': None, 'esm_class': '4', '_sequence': 67108866, 'service_type': '', 'source_addr_ton': '1', 'validity_period': '', 'destination_addr': '7****', '_client': <smpplib.client.Client object at 0x7f2058a6a910>, 'status': 0, 'source_addr': '234********', 'registered_delivery': '0', 'dest_subaddress': None, 'message_payload': None, 'sm_length': '94', 'data_coding': '0', 'destination_port': None, 'source_addr_npi': '1', 'protocol_id': '0', 'network_error_code': None, 'its_session_info': None, 'dest_addr_npi': '1', 'length': 145, 'client': <smpplib.client.Client object at 0x7f2058a6a910>, 'command': 'deliver_sm', 'source_port': None, 'receipted_message_id': None}
EN

回答 2

Stack Overflow用户

发布于 2017-05-17 14:46:05

有一个可选的user_message_reference TLV参数可以设置为您的消息ID以供参考,但是,我建议先进行测试,以防您的SMSC不支持它。

票数 1
EN

Stack Overflow用户

发布于 2019-02-06 12:36:17

对于我的异步SMPP客户端,我所做的是:

  • 当它向SMSC发送SUBMIT_SM请求时,它会在某个地方保存sequence_number的记录(内存或数据库等)。
  • 因为SMSC总是在SUBMIT_SM_RESP中返回那个SUBMIT_SM_RESP;获取sequnce_number并从我们保存它的位置查找它。

这将适用于SUBMIT_SM & SUBMIT_SM_RESP。您将需要一些其他机制来关联SUBMIT_SM和DELIVER_SM。这就是user_message_reference进来的地方。不幸的是,一些/大多数SMSCs不支持user_message_reference。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43988291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档