Конфигурация Kannel для нескольких SMSC
Вопрос
Я создал несколько SMSC SMPP -соединения.
После конфигурации я отправил SMS, но SMS отправляется со случайным SMSC.
Как я могу контролировать Kannel для отправки SMS с SMPP, которые я хочу отправить.
Решение
Вы можете указать, что SMSC отправлять в представлении на сервер Kannel, например:
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 Push (Send-SMS) переменные CGI».
Другие советы
По умолчанию Kannel будет направлять сообщение в круглом ребине между всеми подключенными SMSC.
Есть три параметра SMSC, которые контролируют маршрутизацию до определенного SMSC:
denied-smsc-id SMS -сообщения с SMSC ID, равным любому из идентификаторов в этом списке, никогда не направляются в этот SMSC. Несколько записей разделены с полуколонами (';')
разрешен SMSC-ID Этот список противоположна предыдущему: только SMS -сообщения с SMSC ID в этом списке когда -либо направляются в этот SMSC. Несколько записей разделены с полуколонами (';')
Предпочтительный SMSC-ID SMS -сообщения с SMSC ID из этого списка отправляются в этот SMSC вместо этого, чем в 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
Теперь мы можем указать, какой SMSC отправлять в запросе на интерфейс Kannel Sendsms:
GET /kannel/sendsms?smsc=SMSC_ID&to=TO&text=TEXT
где smsc_id может быть одним из smsc1
или же smsc2
.
В этом примере, если мы не указаем никакого SMSC в запросе GET, SMS не будет соответствовать ни одного из правил для smsc1
или же smsc2
и не будет отправлено. Мы можем избежать этого, установив SMSC по умолчанию для использования всем исходящим сообщением со следующим Sendsms-User Групповая переменная:
- по умолчанию-SMSC Строка Если с помощью HTTP -запроса не указан SMSC -идентификатор, используйте этот маршрут по умолчанию для всех push -сообщений.
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
С помощью этой конфигурации, когда мы указываем SMSC в HTTP-запросе, SMS будет направлен в SMSC с помощью этого идентификатора, но когда мы не сделаем, Kannel вернется к круглосуточному кругу между smsc1
а также smsc2
.
Для более продвинутого использования:
Для более глубокого понимания маршрутизации Kannel и более сложных сценариев вы также можете проверить эту ветку: