我使用SMSLib发送和接收邮件。一切都很好,但现在我想插入多个调制解调器。我想通过我所有的调制解调器接收消息并对它们做一些事情(我认为,我可以这样做)。我也想发送消息,但只能通过选定的调制解调器(这是我的问题)。直到我有一个网关我发送这样的:
OutboundMessage msg = new OutboundMessage(recipientNumber, text);
Service.getInstance().sendMessage(msg);
但是现在,如何选择我想用来发送信息的一个特定网关?
我发现一个问题有点像我的问题,但不完全是: Use multiple gateway with SMSLIB
答案 0 :(得分: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);
答案 1 :(得分:0)
我没有注意到有一个方法sendMessage(),它将gatewayId作为第二个agrument。如果是这样,那将是完美的。我明天会检查一下,你确定吗?我正在使用SmsLib 3.x
修改强>
正如你所说的那样。我只是把gatewayId作为第二个参数,它正在工作。另一个选项是您可以设置创建的OutboundMessage的gatewayId:
OutboundMessage msg = new OutboundMessage(recipientNumber, text);
msg.setGatewayId("FirstGateway");
Service.getInstance().sendMessage(msg);
太容易了......谢谢!
答案 2 :(得分:0)
我不会将 sendMessage 方法与多个网关一起使用,使用 queueMessage 它会将您的消息添加到SMSLib服务队列并以异步方式发送。
此外,如果您使用以下命令启动应用程序:
-Dsmslib.queuedir=yourQueuedMessagesDirectory
您将能够将所有未发送的消息存储在硬盘驱动器上,并让SMSLib服务工具在应用程序重启后发送它们。