Страница 1 из 1

Проблемы с CDR

Добавлено: 27 фев 2018, 18:57
andrew.saff
Всем добрый день!
Asterisk 13.18. Есть задача писать ${HANGUPCAUSE} в CDR(userfield), все вроде бы просто, но в диалплане представленном ниже ${HANGUPCAUSE} записывается в CDR только если соединение установлено, если занято, недоступен и т. д., короче не успешный вызов, то в CDR (userfield) пусто. В консоли все в порядке - ошибок нет. Есть идеи по этому поводу ??

Вот пример диалплана:
exten => _7XXXXXXXXXX, 1, NoOp (test_hungupcause)
same => n, Dial (SIP / $ {EXTEN} @ multifon-out, 30)
same => n, Hangup ()
exten => h, 1, NoOp (hangupcause = $ {HANGUPCAUSE})
same => n, Set (CDR (userfield) = hangupcause: $ {HANGUPCAUSE})

И еще заметил, что если после Dial убрать same => n, Hangup (), то ${HANGUPCAUSE} записывается в CDR(userfield) в любом случае: отвечено, занято, недоступен и т.д, но этот самый same => n, Hangup () очень нужен по ряду причин.
Заранее огромное спасибо!

Re: Проблемы с CDR

Добавлено: 27 фев 2018, 20:32
ded
Заранее - огромная просьба начинать чтение Книги про Астериск.
Далее, медитируя при условии успешных и неуспешных вызовов над CLI - консолью, Ваш острый глаз мог бы мгновенно заметить, что если выполняется ваш диалплан где, короче не успешный вызов,

Код: Выделить всё

exten => _7XXXXXXXXXX, 1, NoOp (test_hAngupcause)
same => n, Dial (SIP / $ {EXTEN} @ multifon-out, 30)
same => n, Hangup ()
то никакого куска

Код: Выделить всё

exten => h, 1, NoOp (hangupcause = $ {HANGUPCAUSE})
same => n, Set (CDR (userfield) = hangupcause: $ {HANGUPCAUSE})
не выполняется. Странно, не правда ли?
В общем - надо Вам курить теорию, объяснять уже объяснённое - как жвачку с пола поднять пожевать.
Я вот Вам copy сделаю, а Вы paste, Огромное спасибо! а умнее от этого не станете.

Код: Выделить всё

exten => _7XXXXXXXXXX, 1, NoOp (test_hAngupcause)
same => n,Dial (SIP / $ {EXTEN} @ multifon-out, 30) ; а вот так завязывайте писать! Надо (SIP/multifon-out/${EXTEN})
same => n,NoOp (hangupcause = $ {HANGUPCAUSE})
same => n,Set(CDR(userfield)=hangupcause: ${HANGUPCAUSE})
same => n,Hangup ()

Re: Проблемы с CDR

Добавлено: 28 фев 2018, 00:29
andrew.saff
Да, весело у Вас тут встречают..... ))))
Ну да ладно...
Медитируя над CLI - консолью, мой острый глаз мгновенно заметиил скриншоты Hangup_ANSWERED Изображение и Hangup_BUSY Изображение, которые получились по диалплану представленному мной ранее и как следствие записи в CDR вида Hangup_CDR Изображение. Эктеншен h все же выполняется ))), впрочем ожидаемо https://wiki.asterisk.org/wiki/display/ ... Extensions
А вот No_Hangup_BUSY Изображение и No_Hangup_ANSWERED Изображение это уже без same => n,Hangup() в exten => _7XXXXXXXXXX,1,... и как следствие No_Hangup_CDR Изображение.
В любезно представленном Вами copy - paste, скорее всего пропущена опция g для Dial ?
А про Огромное спасибо! - умнее от этого конечно не стану...., но вежливее точно буду!

Re: Проблемы с CDR

Добавлено: 28 фев 2018, 08:43
andrew.saff
Что-то изображения не прикрепились :(
Hangup_ANSWERED http://ibb.co/fLuYOH и Hangup_BUSY http://ibb.co/hNpNHc и Hangup_CDR http://ibb.co/iy5Jqx
No_Hangup_BUSY http://ibb.co/ipqjVx и No_Hangup_ANSWERED http://ibb.co/bBgrAx и No_Hangup_CDR http://ibb.co/mtAwcc

Re: Проблемы с CDR

Добавлено: 28 фев 2018, 08:54
virus_net
1. Для этого в форуме и существует кнопка "Предпросмотр".
Не использование кнопки "Предпросмотр", а так же других (таких как CODE) и размещение неформатированного сообщения = наплевательское отношение к остальным читателям = флаг #1.

2. Ессно не прикрепилось:
Mixed Content: The page at 'https://forum.asterisk.ru/posting.php?mode=reply&f=3&t=11330' was loaded over HTTPS, but requested an insecure image 'http://ibb.co/fLuYOH'.
При том, что у хоста ibb.co есть HTTPS, а так же что ссылка должна заканчиваться на .img|.jpg|.gif и т.п. => форум FAQ

Не понимание очевидного = флаг #2.

3. ЗАЧЕМ текст выкладывать в виде картинки ? Просто скопировать и вставить, не ? Религия ? Иное ?
Картинки вместо текста = флаг #3.

По совокупности флагов = уже полностью отсутствует желание помогать.
andrew.saff писал(а):Да, весело у Вас тут встречают..... ))))
И так со всеми кто:
  • а) не читал правил, с которыми согласился, при регистрации
    б) не открывал книжку по Asterisk
    в) плевать хотел на тех, кто будет читать его сообщение, т.е. удобно им будет его читать или нет
    г) рассказывать каждому встречному, из поста в пост, про азы работы Asterisk

Re: Проблемы с CDR

Добавлено: 28 фев 2018, 09:22
andrew.saff
1. Пользовался, предпросмотр был
2. Может где и тупанул, было то https )))
3. Скажу: специально сделал скрины, а то кроме моего острого глаза еще чего найдут.... ))))

а) читал и согласился )))
б) а Вы наверное рядом стояли, когда я книжку не открывал и wiki.asterisk.org не читал ? )))
в) да я и не собирался, даже в мыслях не было, с телефона сижу, компа нет под рукой...
г) да не надо мне про азы рассказывать, я же не в школу пришел...

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

Ну да ладно не в этом суть, я все про свою проблему: еще заметил, что не важно same => n,Hangup() или банальный same => n,NoOp() после Dial, не пишет в CDR(userfield) и все....

Re: Проблемы с CDR

Добавлено: 28 фев 2018, 11:33
ded
andrew.saff писал(а):В любезно представленном Вами copy - paste, скорее всего пропущена опция g для Dial ?
Если предполагается продолжение текщего диалплана - то да, нужна опция g
Если Ваш вариант - с экстеном h, то не нужна.

По поводу hangup cause: рассмотрим варианты
1) абонент 1000 набирал мобильный 79012345678 и сам положил трубку - не дождался или услышал "Абонент разговаривает по другой линии..."
2) абонент 1000 набирал мобильный 79012345678, а мобильный абонент увидел кто звонит и нажал Cancel, и 1000 огорчился и тоже положил трубку.
Какой статус должен быть в вашей переменной CDR(userfield) по вашему?
В общих чертах: если два просто абонента 1000 и 1234 поговорили, в одном случае 1000 первый положил трубку, а во втором - 1234 первый положил, что должно писаться в качестве hangup cause?

У Вас в примерах кода много лишних пробелов, это будет мешать.. Изучите синтаксис.

Re: Проблемы с CDR

Добавлено: 01 мар 2018, 19:25
andrew.saff
Сорян, что не ответил сразу... не было возможности.
Вот ребусы начались ))) - это я люблю )))
1. дырка от бублика
2. если 1000 успел первее 79012345678, то см. п.1, а если не успел, то BUSY она же 17
Но это все не о том...
Может я конечно не корректно написал, но мне надо получать HANGUPCAUSE от стороны Б, то есть то, что ответила сторона Б на мой Dial.
Кстате, в моих скриншотах, если Вы заметили, от стороны Б HANGUPCAUSE приходят и пытаются записаться в CDR, но безрезультатно...
У меня такой вопрос: а есть возможность протестить получение HANGUPCAUSE от стороны Б именно с записью в CDR? И да сторона А дожидается HANGUPCAUSE от стороны Б.
Да, еще... с изучением синтаксиса проблем нет ))), как уже писал ранее - пока сижу с телефона, именно по этому и возникают проблемы с пробелами и тэгами...