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

И снова вопрос о CDR

-1

Добрый день, данный вопрос уже обсуждался недавно, и тогда то ли у меня была галюцинация но оно как мне показалось заработало, однако сейчас начав тестить вижу что не работает.

Вот ссылка на проблему http://asterisk-support.ru/question/983/problema-s-cdr

Делаю так

exten => XXXXXXXXXX,1,Background(hi)
exten => XXXXXXXXXX,2,Answer()
exten => XXXXXXXXXX,3,Set(CALLERID(num)=0${CALLERID(num)})
exten => XXXXXXXXXX,4,Set(CALLERID(num)=${CALLERID(num):-10:10})
exten => XXXXXXXXXX,5,Set(channel=${FILTER(0123456789qwertyuiopasdfghjklzxcvbnm,${CDR(channel)})})
exten => XXXXXXXXXX,6,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel})
exten => XXXXXXXXXX,7,MixMonitor(/home/asteriskftp/${fname}.wav,b)
exten => XXXXXXXXXX,8,Dial(SIP/1001,15,tm)
exten => XXXXXXXXXX,9,GotoIf($["${DIALSTATUS}" = "BUSY"]?11:10)
exten => XXXXXXXXXX,10,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?11:11)
exten => XXXXXXXXXX,11,StopMixMonitor()
exten => XXXXXXXXXX,12,ResetCDR()
exten => XXXXXXXXXX,13,Set(channel=${FILTER(0123456789qwertyuiopasdfghjklzxcvbnm,${CDR(channel)})})
exten => XXXXXXXXXX,14,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel})
exten => XXXXXXXXXX,15,MixMonitor(/home/asteriskftp/${fname}.wav,b)
exten => XXXXXXXXXX,16,Dial(SIP/1002,15,tm)
exten => XXXXXXXXXX,17,GotoIf($["${DIALSTATUS}" = "BUSY"]?19:18)
exten => XXXXXXXXXX,18,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?19:19)
exten => XXXXXXXXXX,19,StopMixMonitor()
exten => XXXXXXXXXX,20,ResetCDR()
exten => XXXXXXXXXX,21,Set(channel=${FILTER(0123456789qwertyuiopasdfghjklzxcvbnm,${CDR(channel)})})
exten => XXXXXXXXXX,22,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel})
exten => XXXXXXXXXX,23,MixMonitor(/home/asteriskftp/${fname}.wav,b)
exten => XXXXXXXXXX,24,Dial(SIP/AST/096XXXXXXX,45,m)
exten => XXXXXXXXXX,25,GotoIf($["${DIALSTATUS}" = "BUSY"]?voicemail,s,1)
exten => XXXXXXXXXX,26,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?voicemail,s,1)
exten => XXXXXXXXXX,27,StopMixMonitor()
exten => XXXXXXXXXX,28,Hangup()

В случае если 1001 не берет трубку или сбрасывает звонок на 1002 идет с тем же CDR а соответственно и с тем же именем файла что и для первого, где косяк не пойму, почему не срабатывает ResetCDR

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

спросил 2011-09-15 12:03:44 +0400

godlike Gravatar godlike flag of Ukraine
814 91 20 54

3 Ответа

0

косяк в том, что у вас имя для всех этих cdr будет одинаково.

ибо вот это

exten => XXXXXXXXXX,14,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel})

будет возвращать всегда одно и то же, а именно канал ВХЗОДЯЩИЙ. который нефига не поменялся за это время.

а что вам надо то? эжтот диадлплан вообще верх косяков. так и не убрали переходы на один и тото же екстеншн с разными уусловиями. имена одинаковы и вообще это все бред.

если вашего скила не хватает для вылавливания в нем багов, делайте както так

exten => XXXXXXXXXX,14,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel}-1002)
ссылка удалить спам редактировать

ответил 2011-09-15 12:23:26 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/

обновил 2011-09-15 12:26:06 +0400

Comments

да черт с ними с переходами, мне нужно что бы если звонок идет на 1001 файлик писался с именем в конце которого один cdr а если он проваливается в 1002 то файлик писался с именем другого cdr. Как это сделать? почему у меня не отрабатывает resetcdr? В данный момент мне просто нужно заставить это рабобтать, исправлениями и улучшениями буду заниматься позже) Мне вот как раз и нужно что бы имена были разные, но разные они будут если будет разной переменная CDR(channel) godlike ( 2011-09-15 12:28:43 +0400 )редактировать
а как вообще exten => XXXXXXXXXX,14,Set(fname=${EPOCH}-${CHANNEL(channeltype)}-${channel}) эта строка относится к тому входящий канал или нет, единственное что есть уникальное в имени файла это переменная ${channel} которая в свою очередь формируется из меременной ${CDR(channel)}, которая как я ее не менял (${CDR(dstchannel)}, ... и т.д. все возможные значения ) не меняется при прыжке и resetcdr godlike ( 2011-09-15 13:28:31 +0400 )редактировать
Я соглашусь с ответом. Диаплан получился "тяп-ляп". Зачем в одном контексте обрабытывать всё подряд. Самая крутая конструкция конечно же Set(CALLERID(num)=${CALLERID(num):-10:10}). Короче диаплан из серии "Как делать не надо". Да и кстати "FILTER(0123456789qwertyuiopasdfghjklzxcvbnm,${CDR(channel)})" можно записать как "FILTER([0-9a-z],${CDR(channel)})" zzuz ( 2011-09-15 14:12:32 +0400 )редактировать
но идея пощелкать по клаве - мне понравилось)) zzuz ( 2011-09-15 14:13:37 +0400 )редактировать
${CDR(channel)} - это ВХОДЯЩИЙ канал. не меняется у вас она.вообще meral ( 2011-09-15 14:36:17 +0400 )редактировать
Set(CALLERID(num)=${CALLERID(num):-10:10}) приходится применять потому что провайдер передает номера городских телефонов в формате 044 а мобильные без нуля то есть 50ХХХХХХХ godlike ( 2011-09-15 14:41:43 +0400 )редактировать
Так он же просто переменную channel создает . По идее он не относится к переменных окружения ${CDR()} zzuz ( 2011-09-15 14:42:17 +0400 )редактировать
Все поругались но дельно никто не ответил как сделать что бы в конце имени файла был cdr меняющийся в зависимости от того кто ответил godlike ( 2011-09-15 14:42:28 +0400 )редактировать
почему, я ответл. вон там наверху написано. а так чтоб заранее меняющеся имя очевидно сделать нельзя. либо самому его поставить, либо в конце файлик перименовать. meral ( 2011-09-15 14:57:54 +0400 )редактировать
я вьехал в вашу идею по поводу переходов по условию :) Действиетльно бесполезный код))) Просто я скопировал его из прердыдущего диалплана где он выполнял другую функцию и там он был нужен) godlike ( 2011-09-15 15:05:13 +0400 )редактировать
а по поводу cdr как я понимаю нельзя сделать так как я хочу? ниодна из переменных указаных здесь http://www.voip-info.org/wiki/view/Asterisk+cdr+csv после ресет cdr не изменится? Только вручную менять? godlike ( 2011-09-15 15:06:18 +0400 )редактировать
Вы ,я как понял , не до конца понимаете , что ResetCDR именно сбрасывает CDR в записи. и то что после resetcdr уже останется записью, даже после изменения данных в канале. Другие данные Вы можете получить именно в новом канале после Dial или GoSub. zzuz ( 2011-09-15 15:10:39 +0400 )редактировать
Создайте новый контекст где будете обрабатывать exten=> _100[12],1,DoSomething и звоните в него , как я ответил ниже. zzuz ( 2011-09-15 15:12:18 +0400 )редактировать
да тут не важно что поменяется в записи. пока вы не посзвони dstchannel не проставлен. а когда вы позвонили уже поздно менять имя файла в мониторе. все подстановки выполняются в момент set/mixmonitor. в чем пробелма проставить имя файла ручками? ведь статический диалпалн же. meral ( 2011-09-15 15:13:23 +0400 )редактировать
да похоже прийдется вручную, просто думал автоматически завязать имя файла что бы оно уникально идентифицировало звонок на бесконечно большом промежутке времени :( godlike ( 2011-09-15 15:22:42 +0400 )редактировать
0

Используйте контекст h. В нем уже можно манипулировать именем файла и понять, кто ответил.

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

ответил 2011-09-15 14:05:48 +0400

samael28 Gravatar samael28
211 2 6
http://odicom.com.ua/
-1

Для таких переходов лучше использоваться Dial(Local/1002@context/n,,tT) , чтобы создавать отдельный канал со своим входом (а там же и cdr'ом).

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

ответил 2011-09-15 12:33:18 +0400

zzuz Gravatar zzuz flag of Russian Federation
6744 2 6 69
http://line24.ru/

Ваш ответ

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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2011-09-15 12:03:44 +0400

Просмотрен: 787 раз

Обновлен: Sep 15 '11

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