SMSLib 发送消息,使用多个网关

SMSLib sending message, using multiple gateways

我正在使用 SMSLib 发送和接收消息。一切正常,但现在我想插入多个调制解调器。我想通过我所有的调制解调器接收消息并用它们做一些事情(我想我可以做到)。我也想发送消息,但只能通过 selected 调制解调器(这是我的问题)。在我拥有一个网关之前,我是这样发送的:

OutboundMessage msg = new OutboundMessage(recipientNumber, text);
Service.getInstance().sendMessage(msg);

但是现在,我如何才能 select 我想用来发送消息的一个特定网关?​​

我发现一个题目有点像我的问题,但不完全是: Use multiple gateway with SMSLIB

每个调制解调器都是 SMSLib 中的一个 AGatway 对象,因此您需要先对其进行设置:

SerialModemGateway modemGateway = new  SerialModemGateway("FirstGateway", "/dev/ttyM0", "9600", "WAVECOM", "Fastrack");
Service.getInstance().addGateway(modemGateway);

其中 FirstGateway 是调制解调器的 ID,在 SMSLib 中称为 gatewayId。您现在要做的就是将您的 gatewayId 传递给 sendMessage 方法或 queueMessage(如果您异步发送消息):

OutboundMessage msg = new OutboundMessage(recipientNumber, text);
Service.getInstance().sendMessage(msg, "FirstGateway");

或:

OutboundMessage msg = new OutboundMessage(recipientNumber, text);
msg.setGatewayId("FirstGateway");
Service.getInstance().sendMessage(msg);

我没有注意到有这样一个方法 sendMessage() 将 gatewayId 作为第二个参数。如果是这样,那就完美了。我明天会检查一下,你确定吗?我正在使用 SmsLib 3.x

编辑:

正如你所说。我只是将 gatewayId 作为第二个参数并且它正在工作。另一个选项是您可以设置创建的 OutboundMessage 的 gatewayId:

OutboundMessage msg = new OutboundMessage(recipientNumber, text);
msg.setGatewayId("FirstGateway");
Service.getInstance().sendMessage(msg);

太简单了..谢谢!

我不会对多个网关使用 sendMessage 方法,请使用 queueMessage 它将您的消息添加到 SMSLib 服务队列并异步发送。

此外,如果您开始申请:

-Dsmslib.queuedir=yourQueuedMessagesDirectory

您将能够将所有未发送的消息存储在硬盘上,并提供 SMSLib 服务设施以在应用程序重启后发送它们。