0

我正在使用 SMSLib 发送和接收消息。一切都很好,但现在我想插入多个调制解调器。我想通过我的所有调制解调器接收消息并用它们做一些事情(我认为我可以做到)。我也想发送消息,但只能通过选定的调制解调器(这是我的问题)。直到我有了一个网关,我才像这样发送:

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

但是现在,我如何选择一个特定的网关,我想用它来发送我的消息?

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

4

3 回答 3

1

每个调制解调器都是 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);
于 2016-03-09T15:07:33.053 回答
0

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

编辑:

和你说的完全一样。我只是将 gatewayId 作为第二个参数,它正在工作。另一个选项是您可以设置已创建 OutboundMessage 的 gatewayId:

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

这么简单..谢谢!

于 2016-03-11T00:20:50.530 回答
0

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

此外,如果您使用以下方式启动应用程序:

-Dsmslib.queuedir=yourQueuedMessagesDirectory

您将能够将所有未发送的消息存储在硬盘上,并让 SMSLib 服务工具在应用程序重新启动后发送它们。

于 2016-03-14T13:19:53.613 回答