VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Пустое значение CDR(billsec)

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
rom@nыч
Сообщения: 25
Зарегистрирован: 30 ноя 2023, 07:55

Пустое значение CDR(billsec)

Сообщение rom@nыч »

При звонке на конкретный внутренний номер вешаю событие hangup_handler в "macro-dial" на определенный контекст. При завершении вызова в этом контексте считывается продолжительность звонка CDR(billsec), статус звонка CDR(disposition) и устанавливается новое имя файла CDR(recordingfile). все отрабатывает нормально.
При звонке на группу событие hangup_handler со ссылкой на тот же контекст назначаю из "macro-auto-blkvm", так как требуется получить внутренний номер, принявший звонок. Но в этом случае в моем контексте продолжительность звонка CDR(billsec) пустая и новое имя файла не назначается, хотя статус звонка CDR(disposition) считывается правильный.
Что не так делаю? Как правильно поступить?

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

  -- Executing [h@ext-group:1] Macro("PJSIP/7914009XXXX-00000000", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("PJSIP/7914009XXXX-00000000", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("PJSIP/7914009XXXX-00000000", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("PJSIP/7914009XXXX-00000000", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'PJSIP/7914009XXXX-00000000' in macro 'hangupcall'
  == Spawn extension (ext-group, h, 1) exited non-zero on 'PJSIP/7914009XXXX-00000000'
  == MixMonitor close filestream (mixed)
  == Executing [/usr/bin/lame -h -b 192 /var/spool/asterisk/monitor/2023/12/14/in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.wav /var/spool/asterisk/monitor/2023/12/14/in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.mp3 && /bin/rm -rf /var/spool/asterisk/monitor/2023/12/14/in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.wav]
    -- PJSIP/505-00000001 Internal Gosub(sub-planfix-int-call-ended,s,1(7914000XXXX,505)) start
    -- Executing [s@sub-planfix-int-call-ended:1] NoOp("PJSIP/505-00000001", "7914000XXXX 505 ") in new stack
    -- Executing [s@sub-planfix-int-call-ended:2] Set("PJSIP/505-00000001", "WebFname=http://xxx.xxx.xxx.xxx:8077/asterisk/monitor/2023/12/14/in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.mp3") in new stack
    -- Executing [s@sub-planfix-int-call-ended:3] Set("PJSIP/505-00000001", "FullFname=/var/spool/asterisk/monitor/2023/12/14/in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.mp3") in new stack
    -- Executing [s@sub-planfix-int-call-ended:4] Set("PJSIP/505-00000001", "CallMeDISPOSITION=ANSWERED") in new stack
    -- Executing [s@sub-planfix-int-call-ended:5] Set("PJSIP/505-00000001", "CallMeDURATION=") in new stack
    -- Executing [s@sub-planfix-int-call-ended:6] Set("PJSIP/505-00000001", "CDR(recordingfile)=in-7914009XXXX-7914000XXXX-20231214-165401-1702544041.0.mp3") in new stack
rom@nыч
Сообщения: 25
Зарегистрирован: 30 ноя 2023, 07:55

Re: Пустое значение CDR(billsec)

Сообщение rom@nыч »

Разобрался в ситуации, но не знаю как ее решить.
В общем, контект auto-blkvm запускается в другом канале, соответственно контекст, запускаемы по событию hangup_handler, тоже в другом канале.
Подскажите, как мне выйти из ситуации? Мне нужен внутренний номер, ответивший на звонок при звонке на группу, а доступен в macro-auto-blkvm.
ded
Сообщения: 15621
Зарегистрирован: 26 авг 2010, 19:00

Re: Пустое значение CDR(billsec)

Сообщение ded »

Звонилку конструируете.
Через вызов плечей и бридж вот так просто billsec не получите.
rom@nыч
Сообщения: 25
Зарегистрирован: 30 ноя 2023, 07:55

Re: Пустое значение CDR(billsec)

Сообщение rom@nыч »

Сам Asterisk настроил как мне нужно, сейчас реализую интеграцию с CRM.
При маршруте на определенный внутренний номер все нормально получилось. При маршруте на группу мне нужно выполнить скрипт с указанием каждого внутреннего номера, на который идет звонок для отображения карточки звонящего (это сделал). Затем при поднятии трубки нужно отправить в CRM номер ответившего и отклонение по всем остальным номерам группы (это тоже реализовал в macro-auto-blkvm. А после окончания звонка нужно отправить информацию о звонке и внутренний номер. Вот тут у меня затык.
Пробовал двумя способами. В контексте macro-hangapcall у меня нет внутреннего номера, принявшего звонок. Если же через hangup_handler с передачей аргумента, который создаю в макросе macro-auto-blkvm, то у меня нет длительности разговора в CDR и не могу сменить имя файла записи.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Пустое значение CDR(billsec)

Сообщение Zavr2008 »

Чую к Битрикс24 делаете)
Смотрите как у Itegrix сделано и у остальных - правильнее через AMI делать, а не навешивать в диалплане.
Просто нахлебаетесь дальше при переадресациях и прочем.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
rom@nыч
Сообщения: 25
Зарегистрирован: 30 ноя 2023, 07:55

Re: Пустое значение CDR(billsec)

Сообщение rom@nыч »

Нет, не к битрикс. Но нашел скрипты для интеграции с Битрикс с использованием AMI и решил под себя переделать. Спасибо за наводку.
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

Re: Пустое значение CDR(billsec)

Сообщение Zavr2008 »

Да, AMI - правильный путь.
Будет неплохо если поделитесь потом результатами, если данная CRM - публичная.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH