Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Elastix 2.3, FreePBX 2.10, cdr по DID - как подружить ?

0

Добрый день, господа !

Есть Elastix 2.3. Настроен и работает, нареканий к нему нет. Настроены несколько IVR, со входом в них через announcement. Звонки попадают через DID определенного incoming route.

Возникла небольшая трудность : понадобилось в статистике (reports) делать выборку по DID номеру. Но в стате я вижу что у звонков, которые попадают через DID на announcement, в поле destination значится "s". Попробовал переписать extension с announcement, подставив вместо s конкретный DID - получилось что если звонок завершался в announcement'e, то в reports в поле destination я вижу DID (то что и хотелось), но если звонок шел дальше в ivr то опять в destination вылазил "s". Понятно, что можно перелопатить весь ivr и убрать оттуда "s", но как то смысл тогда в вебморде отпадает.

Вопрос: каким образом сделать так, чтобы в репортсах я конкретно видел, что звонок пришел на такой то DID и длился столько то.

Elastix 2.3 основан на FreePBX 2.8, в которой выборки по DID's нету. Но она есть в FreePBX 2.10. Казалось бы, обновил с 2.8 на 2.10 и все гуд, но даже на официальном сайте Elastix пишут что сие обновление не катит, типа надо ждать нового релиза Elastix. Взял на тестовую машину поставил FreePBX 2.10, заглянул в extension_additional.conf в секцию [ext-did], заметил строчку которой не было в предыдущей версии -

exten => 6000,n,Set(CDR(did)=${FROM_DID})

попробовал добавить в свою систему. Но не прокатило.

Была идея еще брать файлик Master.csv с 2.8 и подсовывать его в 2.10 - но тоже не катит

удалить закрыть спам изменить тег редактировать

спросил 2012-07-10 10:00:23 +0400

nana_MeDBeD Gravatar nana_MeDBeD
312 46 11 34

5 Ответов

2

Я не уверен, есть ли это в эластике, но в моей системе я доработал отчетность, чтобы можно было фильтровать по Accountcode. Т.о. можно раздельно задавать транкам и пользователям значение этого поля и независимо считать. Но с DID тут будет сложнее, но можно переопределить контекст для обработки входящих. Например, подавать все звонки в такой:

[account-code]
exten => _X.,1,Set(CDR(accountcode)=${EXTEN})
exten => _X.,n,Goto(from-pstn,${EXTEN},1)

а в транке определить контекст

context=account-code
ссылка удалить спам редактировать

ответил 2012-07-10 10:51:17 +0400

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

Яростно плюсую :-) Замечательный метод. Поставил

exten => _X.,1,Set(CDR(accountcode)=${EXTEN}) (или exten => _X.,1,Set(CDR(accountcode)=1234567890))

в том месте extensions_custom.conf где привожу к единому виду CallerID и наступило счастье - Elastix стал нормально использовать поле Account Code для отчетов.

SolarW ( 2012-07-16 18:04:30 +0400 )редактировать

Ну хоть кто-то заценил ;)

switch ( 2012-07-16 18:06:15 +0400 )редактировать
1

Нафига только из-за статистики в эластикс вкорячивать фрипбх 2.10? В нем статистика сделана на основе вот этого продукта

http://code.google.com/p/asterisk-cdr-viewer/

который с полпинка ставится на эластикс.

Ну или попробовать отдельно модуль вкорячить.

http://www.freepbx.org/trac/browser/modules/release/2.10/cdr-2.10.0.6.tgz

ссылка удалить спам редактировать

ответил 2012-07-11 02:17:19 +0400

SolarW Gravatar SolarW
356 2 10

обновил 2012-07-11 02:31:32 +0400

Comments

тот который напрямую с гугла пользует только стандартные поля CDR, и DID там скорее всего придется юзать так как switch написал, тоесть через account_code. зато там фич больше чем в freepbx форке...

komrad123 ( 2012-07-11 08:25:19 +0400 )редактировать

SolarW, а можешь поподробнее рассказать как прикрутить http://code.google.com/p/asterisk-cdr-viewer/ ?

не могу понять какую базу прикрутить к нему ? при запросе пишет что база такая то не найдена

nana_MeDBeD ( 2012-07-16 12:03:40 +0400 )редактировать
0

Проблему с dst=s/dst=~~s~~ встречал (и продолжаю) когда изпользую макросъ на AEL. Решается с помощью триггера before insert on cdr.

Посмотрите в cdr, если есть запись где dst=s, а lastdata="SIP/12345678@provider, то можно и исправить все старъе записи:

IF NEW.dst = '~~s~~' AND NEW.lastapp = 'Dial' AND NEW.dcontext = 'context' THEN SET NEW.dst = SUBSTRINGINDEX(SUBSTRINGINDEX(NEW.lastdata, '/', -1),'@',1); END IF;

ссылка удалить спам редактировать

ответил 2012-07-10 12:24:35 +0400

eurolan Gravatar eurolan
94 2 6

обновил 2012-07-10 12:25:22 +0400

0

switch - ты человечище!!! )) Спасибо за совет

Например, подавать все звонки в такой:

[account-code] exten => _X.,1,Set(CDR(accountcode)=${EXTEN}) exten => _X.,n,Goto(from-pstn,${EXTEN},1)

а в транке определить контекст

context=account-code

Сработало "из коробки" без дополнительных поправок! Ты просто меня спас! Спасибо еще раз!

ссылка удалить спам редактировать

ответил 2013-10-22 07:02:23 +0400

Keeper Gravatar Keeper
1 1

обновил 2013-10-22 07:14:39 +0400

Comments

На здоровье, пользуйтесь ;) Спасибо говорится плюсом к пригодившемуся ответу.

switch ( 2013-10-22 09:45:40 +0400 )редактировать

Да я сейчас хоть 10 бы плюсов поставил, да не ставится. Видимо я тут еще зеленый ))

Keeper ( 2013-10-22 11:43:42 +0400 )редактировать
0

в 2.10 еще и cdr-report другой, который этот самый дид вытаскивает.

ссылка удалить спам редактировать

ответил 2012-07-10 11:22:32 +0400

komrad123 Gravatar komrad123
3810 5 3 44

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: 2012-07-10 10:00:23 +0400

Просмотрен: 2,475 раз

Обновлен: Oct 22 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.