gpt4 book ai didi

java - SMPP 服务器 CloudHopper - 我应该如何接收多部分消息?

转载 作者:行者123 更新时间:2023-12-03 08:35:05 24 4
gpt4 key购买 nike

我有CloudHopper SMPP服务器,此时我可以收到一条简单的短信。

if (pduRequest.getCommandId() == SmppConstants.CMD_ID_SUBMIT_SM) {
SubmitSm request = (SubmitSm) pduRequest;
request.getShortMessage();
....
}

但是我应该怎么做才能收到长(多部分)消息?我不知道我必须使用什么对象......请帮助我。

非常感谢。

最佳答案

以下处理一个多部分长消息 PDU,当您收到一条已拆分为多个 PDU 的长消息时,您会得到该 PDU:

import com.cloudhopper.commons.charset.GSMCharset;
import com.cloudhopper.commons.gsm.GsmUtil;
import com.cloudhopper.smpp.pdu.DeliverSm;
import com.cloudhopper.smpp.util.SmppUtil;

...

DeliverSm mobileOriginatedMessage = (DeliverSm) pduRequest;

boolean isUdh = SmppUtil.isUserDataHeaderIndicatorEnabled(mobileOriginatedMessage.getEsmClass());
if (isUdh) {
byte[] userDataHeader = GsmUtil.getShortMessageUserDataHeader(messageBytes);
int thisMessageId = userDataHeader[3] & 0xff;
int totalMessages = userDataHeader[4] & 0xff;
int currentMessageNum = userDataHeader[5] & 0xff;

messageBytes = GsmUtil.getShortMessageUserData(messageBytes);

GSMCharset gsmCharset = new GSMCharset();
String message = gsmCharset.decode(messageBytes); // Example decoding, depends on charset used

System.out.println("thisMessageId: " + thisMessageId); // unique to message, same across all message parts
System.out.println("totalMessages: " + totalMessages);
System.out.println("currentMessageNum: " + currentMessageNum);
System.out.println("Message: " + message);
}

...

上面显示了如何:

  • 确定 PDU 是否为多部分长 (UDH) 消息
  • 获取所有的UDH头信息,这样你就可以知道
    • 该部分属于什么消息
    • 收到的部件号是为了按正确的顺序将消息重新组合在一起
    • 以及您期望的零件总数是多少
  • 获取各部分的实际消息正文

关于java - SMPP 服务器 CloudHopper - 我应该如何接收多部分消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34532210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com