是否可以使用自定义参数或任何其他方式使用smpp payload / pdu发送一些额外数据。语言API可以是任何java,jsmpp或任何其他。 如果可能,请分享一个例子。
答案 0 :(得分:2)
在SMPP规范中,您有以下段落:“5.3.2 SMPP可选参数标记定义”,您可以在其中找到可添加到PDU的所有可选参数。
以下是将一个sar_ *选项设置为submit_sm以表明它是long submit_sm的一部分的示例(使用此python库:https://github.com/mozes/smpp.pdu):
pdu = SubmitSM()
pdu.params['sar_total_segments'] = 3
pdu.params['sar_segment_seqnum'] = 1
pdu.params['sar_msg_ref_num'] = 56
无论如何,如果你需要设置'供应商特定'选项而不是使用标准的可选参数,你需要在客户端和服务器端的库中实现它,你可能找不到它并准备好以任何标准实现库。
您也可以考虑定义一个消息结构来发送您的数据(这取决于您需要做什么......),例如,通过具有特定消息格式的标准deliver_sm pdu发送送达回执,这里是检查deliver_sm内容是表示送达回执还是正常消息的方法:
def isDeliveryReceipt(self, DeliverSM):
"""Check whether DeliverSM is a DLR or not, will return None if not
or a dict with the DLR elements"""
ret = None
# Example of DLR content
# id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done
# date:YYMMDDhhmm stat:DDDDDDD err:E text: . . . . . . . . .
pattern = r"^id:(?P<id>\d{10}) sub:(?P<sub>\d{3}) dlvrd:(?P<dlvrd>\d{3}) submit date:(?P<sdate>\d{10}) done date:(?P<ddate>\d{10}) stat:(?P<stat>\w{7}) err:(?P<err>\w{3}) text:(?P<text>.*)"
m = re.search(pattern, DeliverSM.params['short_message'], flags=re.IGNORECASE)
if m is not None:
ret = m.groupdict()
return ret