多个smsc的Kannel配置

时间:2011-01-22 19:07:29

标签: sms kannel smpp bulksms

我创建了多个SMSC SMPP连接。

配置后我发送短信但短信是随机smsc发送的。

如何控制kannel发送带有我要发送的smpp的短信。

2 个答案:

答案 0 :(得分:6)

默认情况下,Kannel将在所有连接的SMSC之间以循环方式路由邮件。

有三个SMSC参数控制到特定SMSC的路由:

  • denied-smsc-id SMSC ID等于此列表中任何ID的SMS消息永远不会路由到此SMSC。多个条目用分号(';')

  • 分隔
  • allowed-smsc-id 此列表与之前的列表相反:此列表中只有SMSC ID的SMS消息才会路由到此SMSC。多个条目用分号(';')

  • 分隔
  • preferred-smsc-id 此列表中包含SMSC ID的SMS消息将发送到此SMSC,而不是SMSC,而不是没有该ID的SMSC。多个条目用分号(';')

  • 分隔

利用这些变量,您可以创建从非常简单到非常复杂的路由方案。

这是一个非常基本的例子:

假设我们有2个SMSC,smsc1smsc2,我们希望将sms消息路由到这两个SMSC中的一个。在我们的kannel配置文件中,我们添加以下行:

group = smsc
smsc-id = smsc1
allowed-smsc-id = smsc1

group = smsc
smsc-id = smsc2
allowed-smsc-id = smsc2

现在,我们可以在请求中指定要通过kannel transmitms接口发送的smsc:

GET /kannel/sendsms?smsc=SMSC_ID&to=TO&text=TEXT

其中SMSC_ID可以是smsc1smsc2之一。

在此示例中,如果我们未在GET请求中指定任何smsc,则短信将与smsc1smsc2的任何规则都不匹配,并且不会发送。我们可以通过使用以下 sendsms-user 组变量设置所有外发邮件使用的默认SMSC来避免这种情况:

  • default-smsc 字符串如果HTTP请求没有给出SMSC ID,请将此一个用作所有推送消息的默认路由。
group = sendsms-user
default-smsc = smsc1

另一种选择是使用denied-smsc-id变量:

group = smsc
smsc-id = smsc1
denied-smsc-id = smsc2

group = smsc
smsc-id = smsc2
denied-smsc-id = smsc1

使用此配置,当我们在HTTP请求中指定smsc时,sms将被路由到具有该id的smsc,但是当我们不这样做时,Kannel将回退到smsc1之间的循环和smsc2

更高级用途:

要更深入地了解Kannel的路由和更复杂的场景,您还可以查看此主题:

http://old.nabble.com/Routing-of-outgoing-sms-td19723248.html

答案 1 :(得分:0)

您可以在提交给kannel服务器时指定要发送的smsc,例如:

GET /cgi-bin/sendsms?smsc=$smsc&username=$user&password=$password&to=$receipient&text=$text&dlr-mask=$dlrMask&dlr-url=$dlrUrl

其中$smsc应与您在kannel.conf中的smsc-id匹配

Documentation here,在“表6-16.SMS Push(send-sms)CGI变量”下。