我创建了多个SMSC SMPP连接。
配置后我发送短信但短信是随机smsc发送的。
如何控制kannel发送带有我要发送的smpp的短信。
答案 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,smsc1
和smsc2
,我们希望将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可以是smsc1
或smsc2
之一。
在此示例中,如果我们未在GET请求中指定任何smsc,则短信将与smsc1
或smsc2
的任何规则都不匹配,并且不会发送。我们可以通过使用以下 sendsms-user 组变量设置所有外发邮件使用的默认SMSC来避免这种情况:
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变量”下。