При внедрении агрегационных SMS-платформ одним из важных требований является возможность учета трафика от различных клиентов. В этой заметке я хочу рассмотреть простейший способ учета исходящих (MT) SMS, не требующий никаких внешних систем - все делается средствами самого Kannel.
Для этих целей можно использовать файлы протокола работы SMS-шлюза, которые содержат достаточно подробную информацию.
Для начала включим такое протоколирование в секции group = core
access-log = "/var/log/kannel/access.log"
В логи теперь польются строчки вида:
MT SMS
DLR
Теперь у нас есть следующие варианты разделения трафика:
Последний способ интересен тем, что позволяет через один аккаунт sendsms API пускать трафик разных клиентов и разделять его в файлах журналирования). В примере выше для этого использовалось указание параметра account в HTTP API sendsms:
Естественно, кроме 123 можно указать любой другой идентификатор нашего клиента, чтобы потом выставить ему счет или сгенерировать себе красивый график на стенку.
Небольшая сложность заключается в том, что параметр account можно отслеживать только в отправляемых SMS. Однако, эта проблема не так страшна, т.к. всегда можно отследить соответствие получаемых DLR по идентификатору сообщения, выданному SMSC. В примере он содержится в поле [FID:XXXXX].