SMSLib使用多个网关发送消息

时间:2016-03-04 08:40:04

标签: java sms-gateway smslib

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

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

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

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

3 个答案:

答案 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服务工具在应用程序重启后发送它们。