7

我创建了多个 SMSC SMPP 连接。

配置后我发送了短信,但短信是用随机短信发送的。

我如何控制 kannel 用我想发送的 smpp 发送短信。

4

2 回答 2

9

默认情况下,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 将不会匹配smsc1or的任何规则smsc2并且不会被发送。我们可以通过使用以下sendms-user组变量设置所有传出消息使用的默认 SMSC 来避免这种情况:

  • default-smsc string 如果 HTTP 请求中没有提供 SMSC ID,则使用此 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

于 2012-04-15T20:44:29.303 回答
0

您可以在提交到 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 变量”下。

于 2011-01-23T08:03:58.407 回答