Раньше я работал с клиентом, который требовал очень полной статистики в реальном времени. Чтобы все было правильно, нам пришлось объединить CDR, CEL и queue_logs. В конце концов это была очень сложная система, но в то время мы не видели другого пути. Ну, мы сделали, но это было невозможно.
Один из самых простых вопросов, которые вы можете задать: Кто (A) назвал, кто (B), и кто ответил на вызов (C) в конце. Если вы можете ответить на этот вопрос, вы можете в принципе ответить, какой клиент (A), вызывает расширение (B), которое может отражать интерес клиента. Чтобы узнать, где произошла рабочая нагрузка, вы должны иметь окончательное расширение (C).
Проще всего это звучит очень сложно, в зависимости от настройки клиента. Если у вас есть смешанные технологии, такие как ISDN для исходящих звонков, и SIP (звездочка/freeswitch) для входящих (внутрикорпоративных) вызовов, вы можете обнаружить, что вообще нет полезной записи о вызовах.
Даже для входящей SIP-телефонии я могу сказать вам, что есть сценарии, где просто найти правильные расширения A, B, C - это очень сложно !!! Во-первых, вы должны знать, что Asterisk внутренне знает о двух так называемых «ногах», где две ноги представляют собой мост между двумя каналами (пожалуйста, исправьте меня, если я ошибаюсь). Я не эксперт здесь, но считаю, что две конечные точки говорят друг с другом. В этой терминологии нет «первоначально называемого расширения B». Кроме того, CEL и CDR не устраняют это. В CDR есть поля «dst» и «src», но действительно «канал» и «dstchannel» имеют для вас большую ценность. «Dstchannel» иногда выглядит как «SIP/dialnumber @ foobar», но только если ваши учетные записи SIP каким-то образом относятся к указанному номеру (extension = dialnumber). Обратите внимание, что клиенты часто не заботятся о различии между расширением или номером набора, но в SIP вам все равно.
Что действительно помогает, если вы используете пользовательские переменные CDR. Настройте звездочку для использования драйвера «custom_cdr» для ведения журнала CDR и, возможно, «custom_cel» для ведения журнала CEL. Затем вы можете установить переменные CDR в своем диалплане, и они автоматически записываются в базу данных CDR/CEL (например, ODBC).
В качестве последнего момента, чтобы подумать: подумайте о A, B и C, чтобы быть людьми. Пусть A вызов B.Пусть B положит A на удержание и спросит у человека C, может ли она взять на себя из-за своего опыта. Переведите вызов от A < -> B до A < -> C (B зависает). Сколько CDR и сколько CEL вы думаете, что получаете от этого? И как заполняются поля? В CDR это похоже на то, что A разговаривал с B в течение всего времени. Только взглянув на CEL, вы заметите, что произошло событие TRANSFER, которое дает вам подсказку. (Извините, если из моей памяти это может быть совершенно иначе).
С этим довольно страшным ответом я настоятельно призываю вас потратить очень много времени на требования техники, а не начинать со звездочки и камалио. Спросите, какие варианты использования клиент хочет покрыть вашим решением. Поверь мне, ты не можешь все покрыть. Подумайте о наличии гибкого формата данных для хранения вашей статистики. Подумайте о базах данных на основе документов, таких как MongoDB.
Если вы хотите начать с чистого Asterisk, вы должны использовать AMI. Возможно, некоторые пользовательские процессы прослушивают события, объединяют их и делают их доступными через кеш, поэтому вам не нужно запрашивать AMI и загружать Asterisk.
Надеюсь, это поможет, но, вероятно, вы пытаетесь достичь чего-то совершенно другого. :)
Удачи.
В принципе, я хочу предоставить клиенту свои события вызова в реальном времени. Решение выполнено, но наши текущие события не содержат информации о расширении, которое вызвало вызов в случае входящих вызовов. Вы можете видеть только стандартный внешний номер. Мы используем kamailio, но я как бы боюсь пойти туда и начать переписывать макросы - не хочу вызывать простои в моей инфраструктуре для работодателей, потому что я новичок в области камаилио. Вот почему я хотел решить это так, что вряд ли вызовет большие проблемы, если что-то пойдет не так. – reederz
Вы можете контролировать вызовы через dialplan или через ami-события. Но звонки - это не одно сообщение. Каждый вызов имеет гораздо больше, чем одно сообщение для настройки. Kamailio имеет дело с сообщениями. Asterisk занимается переадресацией вызовов и расширений.Ни в коем случае не контролируйте ни одно сообщение в звездочке. Если вы не уверены, у вас есть эксперт по найму. – arheops