有关其他信息的SMPP Payload?

时间:2012-12-18 15:15:12

标签: java smpp payload jsmpp

是否可以使用自定义参数或任何其他方式使用smpp payload / pdu发送一些额外数据。语言API可以是任何java,jsmpp或任何其他。 如果可能,请分享一个例子。

1 个答案:

答案 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