我创建了多个 SMSC SMPP 连接。
配置后我发送了短信,但短信是用随机短信发送的。
我如何控制 kannel 用我想发送的 smpp 发送短信。
默认情况下,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,而不是发送到没有该 ID 的 SMSC 作为首选。多个条目用分号 (';') 分隔
使用这些变量可以让您创建从非常简单到非常复杂的路由场景。
这是一个非常基本的例子:
假设我们有 2 个 SMSC,smsc1
并且smsc2
我们想将 sms 消息路由到这 2 个 SMSC 之一。在我们的 kannel 配置文件中,我们添加以下行:
group = smsc
smsc-id = smsc1
allowed-smsc-id = smsc1
group = smsc
smsc-id = smsc2
allowed-smsc-id = smsc2
现在,我们可以在对 kannel sendms 接口的请求中指定要发送的 smsc:
GET /kannel/sendsms?smsc=SMSC_ID&to=TO&text=TEXT
其中 SMSC_ID 可以是smsc1
或之一smsc2
。
在这个例子中,如果我们没有在 GET 请求中指定任何 smsc,sms 将不会匹配smsc1
or的任何规则smsc2
并且不会被发送。我们可以通过使用以下sendms-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
您可以在提交到 kannel 服务器时指定要发送的 smsc,例如:
GET /cgi-bin/sendsms?smsc=$smsc&username=$user&password=$password&to=$receipient&text=$text&dlr-mask=$dlrMask&dlr-url=$dlrUrl
哪里$smsc
应该匹配smsc-id
你的 kannel.conf
此处的文档,位于“表 6-16. SMS 推送 (send-sms) CGI 变量”下。