It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
                            
                        
                    
                
                7年前关闭。
            
        

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

最佳答案

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

以下是将sar_ *选项设置为submit_sm的示例,以表明它是一个较长的Submit_sm的一部分(使用此python lib: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


无论如何,如果您需要设置“特定于供应商”的选项而不使用标准的可选参数,则需要在客户端和服务器端的库中实现它,而您可能无法在任何标准库中找到并实现它。

您可能还会想到定义一个消息结构来发送数据(取决于您需要执行的操作...),例如,通过具有特定消息格式的标准delivery_sm pdu发送收货收据,这是一种检查方法如果delivery_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

关于java - SMPP有效载荷是否包含其他信息? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13935963/

10-11 10:30