默认情况下,Kannel将在所有连接的SMSC之间以循环方式路由邮件.
有三个SMSC参数控制到特定SMSC的路由:
denied-smsc-id SMSC ID等于此列表中任何ID的 SMS消息永远不会路由到此SMSC.多个条目用分号分隔(';')
allowed-smsc-id此列表与之前的列表相反:此列表中只有SMSC ID的SMS消息才会路由到此SMSC.多个条目用分号分隔(';')
来自此列表的具有SMSC ID的preferred-smsc-id SMS消息被发送到该SMSC而不是没有该ID作为首选的SMSC.多个条目用分号分隔(';')
利用这些变量,您可以创建从非常简单到非常复杂的路由方案.
这是一个非常基本的例子:
假设我们有2个SMSC,smsc1并且smsc2我们想要将SMS消息路由到这两个SMSC中的一个.在我们的kannel配置文件中,我们添加以下行:
group = smsc
smsc-id = smsc1
allowed-smsc-id = smsc1
group = smsc
smsc-id = smsc2
allowed-smsc-id = smsc2
Run Code Online (Sandbox Code Playgroud)
现在,我们可以在请求中指定要通过kannel transmitms接口发送的smsc:
GET /kannel/sendsms?smsc=SMSC_ID&to=TO&text=TEXT
Run Code Online (Sandbox Code Playgroud)
其中SMSC_ID可以是smsc1或之一smsc2.
在此示例中,如果我们未在GET请求中指定任何smsc,则短信将不匹配smsc1或smsc2将不会发送任何规则.我们可以通过设置一个默认的SMSC来避免这种情况,所有的外发消息都使用以下的sendsms-user组变量:
group = sendsms-user
default-smsc = smsc1
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用denied-smsc-id变量:
group = smsc
smsc-id = smsc1
denied-smsc-id = smsc2
group = smsc
smsc-id = smsc2
denied-smsc-id = smsc1
Run Code Online (Sandbox Code Playgroud)
使用此配置,当我们在HTTP请求中指定smsc时,sms将被路由到具有该id的smsc,但是当我们不这样做时,Kannel将回退到smsc1和之间的循环smsc2.
对于更高级的用途:
要更深入地了解Kannel的路由和更复杂的场景,您还可以查看此主题:
http://old.nabble.com/Routing-of-outgoing-sms-td19723248.html
您可以指定在提交到kannel服务器时通过什么smsc发送,例如:
GET /cgi-bin/sendsms?smsc=$smsc&username=$user&password=$password&to=$receipient&text=$text&dlr-mask=$dlrMask&dlr-url=$dlrUrl
Run Code Online (Sandbox Code Playgroud)
哪里$smsc应该匹配smsc-id你在 kannel.conf 中的a
文档位于“表 6-16. SMS 推送 (send-sms) CGI 变量”下。