0

Is it possible to send some extra data with smpp payload/pdu using custom paramters or any other way. Language API could be any java, jsmpp or any other. Kindly share an example if its possible.

4

1 回答 1

2

在 SMPP 规范中,您有以下段落:“5.3.2 SMPP 可选参数标签定义”,您可以在其中找到可以添加到 PDU 的所有可选参数。

下面是将 sar_* 选项设置为 submit_sm 以指示它是长 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
于 2012-12-19T21:45:47.853 回答