Call-file и CDR
Собственно задача. Генерировать звонок Call-файлом и получать CDR. Идеальный вариант — видеть его в файле Master.csv, неплохо было бы и в Radius кидать accounting.
Создал такую конструкцию: 1. Call-file:
- файл extensions.conf: [context_sla] exten => sla,1,Answer exten => sla,2,Wait(2) exten => sla,3,Playback(lalala) exten => sla,4,Hangup
Звонок наружу идет, слышу содержимое файла, но в радиус аккаунтинга нет. В файл Master.csv откладывается cdr без номера Б.
В интернете нашел след. решение: Callfiles and Call Detail Records
Avoid missing CDR records: Use either a) Context/Extension/Priority in the call file instead of Application/Data, or b) call a Local channel instead of directly calling the desired channel. Else Asterisk will bypass the process that tracks the call and no CDR record will be generated. When using Context/Extension/Priority, you are really using a Goto type function which just puts the call into the correct part of the dialplan and to it is the same as if the caller had dialed the call manually and so the call is logged.
The phone number you are dialling will not be stored in the CDR by * — if you need this information for CDR processing you can set the CallerID in the call file to this number and it will be stored. However, this will present the person you are calling their own phone number, which doesn’t make much sense. A better solution might be to put the number you are dialing in the Set: channel variable in the .call file and later put it into the UserField of the CDR. See example above in the first section.
Не могу понять, как это решение применить, что изменить в кол-файле. Помогите разобраться, пожалуйста.
Что делать, если файл открывается не той программой ).
спросил 2011-11-22 13:36:36 +0400
2 Ответа
Дополнительно в исполняемом контексте можете заранее сбрасывать CDR , чтобы была возможность отслеживать изменения.
ответил 2011-11-22 13:50:28 +0400
originate кажися ДАЕТ запись в 1.8+ если в cdr.conf включить логирование неудачных звонков(unanswered = yes)
Так ему как раз удачные и нужны.
помогите пожалуйста ! Lanbilling пишет в логах такое
И так постоянно при звонке на номер . Вопрос скорее в атрибутах или в скрипте radius’a. Скажите куда копать.Спасибо!
ответил 2012-02-06 18:15:38 +0400
И как это относится к вопросу «Call-file и CDR» ?
Источник: asterisk-support.ru
LINUX AND HAMRADIO
Многие сталкивались со звонками от крупных компаний, когда происходит звонок и зачитывается автоматическое сообщение, рекламное или уведомление о просроченой оплате. Такую систему можно сделать на астериске с помощью внешнего скрипта.
Исходящий звонок Asterisk может выполнять при размещении специального файла в директории /var/spool/asterisk/outgoing.
КРЕМЕНЬ — Боевик / Все серии подряд
Файл должен выглядеть так:
Channel: SIP/prov1/8067xxxxxxx MaxRetries: 2 RetryTime: 60 WaitTime: 30 Context: auto-dialout Extension: 800 Priority: 1
В этом файле. первая строка – канал через который будет осуществляться звонок и номер телефона на который будет исходить звонок.
MaxRetries – здесь описывается число повторных звонков, пока система не дозвонится абоненту. RetryTime – время через которое осуществится повторный звонок. WaitTime – время ожидания ответа вызываемого абонента, то есть попросту через сколько секунд система положит трубку не дождавшись того, что вызываемая сторона снимет трубку.
Context – контекст в котором определена последовательность действий при дозвоне. Extension – в указанном контексте, определен в extensions.conf. И Priority – строка обработки описанного экстеншена в указанном контексте.
Контекст должен быть определен так(в примере мы просто проиграем файл tariff.wav):
[auto-dialout] exten => 800,1,Playback(/home/menu/tariff)
Для автоматических исходящих звонков голосовое меню можно создавать точно такое же как и для обычного IVR, отличий нет. Единственное – не абонент звонит нам, а мы звоним абоненту и предлагаем ему вступить в диалог с нашей системой.
у меня ен получилось реализовать именно это схему звонок приходит в контекст default. поэтому в контексте default прописал
exten => s,1,Playback(/home/menu/tariff)
Источник: rl5d.blogspot.com
Asterisk от простого — к сложному
Добрый день. На написание статьи меня сподвигла необходимость передать мои знания подчиненным, которым уже пора бы вникать в работу Asterisk.
Когда я заметил интерес к платформе с их стороны — я чрезвычайно обрадовался, но пришел в недоумение, когда все рвение остановилось на клацанье по триксбоксу и его подобным.
Я ничего не имею против надстроек к Астериску, которые облегчают жизнь, но я боюсь, что скоро появился поколение администраторов Астериска, которые консоли в живую не видели ниразу.
Целью моих статей является желание показать, что астериск красив сам по себе, без дополнительных надстроек, что можно, используя минимальные, ускоряющие работу скриптовые языки — творить чудеса. Хочется показать, ищущим и желающим познать новое, людям нюансы и тонкости работы системы.
Что такое Астериск
Про астериск есть множество статей с описанием функционала и возможностей. Новичку надо знать самое главное — на начальном этапе ( в качестве обучения ) Астериск в состоянии выполнять любые задачи связанные с телефонией, ну или практически любые.
Есть ряд неудобств, либо ограничений, которые присущи работе с Астериском, постараемся их устранять в процессе ознакомления с системой.
Также стоит понимать, что высоконагруженную систему на астериске построить крайне тяжело — для этого есть другие решения.
Для простоты можно считать, что астериск целесообразно использовать в системах, где количество одновременных звонков не превышает 100.
С цего начать
Честно просмотрев 10 страниц результатов поискового запроса Asterisk на хабре, понял, что начинать надо сначала, но без фанатизма. Рассказывать о установке не буду, но о структуре Астериска и тому, что нам понадобится при работе — будем говорить. Говорить мы будем о Asterisk 1.8, но принципы работают на всех версиях астериска.
Структура системы
Астериск, как любое приложение, работает на основании конфигурационных файлов, коих достаточно большое множество. Честно говоря, я до сих пор не знаю роли половины конфигов. Для нашей работы на начальном этапе нам понадобится знать и понимать настройки, хранящиеся в файлах sip.conf и extensions.conf. Отмечу, что при стандартной установке все файлы конфигов хранятся в /etc/asterisk/.
Файл sip.conf
Данный файл содержит описание базовых параметров работы протокола SIP, настройки NAT, кодеков и самое главное — учетных записей. Позже я буду рассказывать о том, каким образом хранить учетные записи в базе данных.
Дефолтный конфиг sip.conf позволяет запускать Астериск, при условии прописывания учетных записей, и он будет работать, слушая при этом входящие соединения на всех интерфейсах.
Учетные записи в sip.conf могут быть трех типов:
— user ( пользователь )
— peer ( пир )
— friend ( пользователь+пир )
Я почти всегда настраиваю учетные записи как friend, по причине того, что она сочетает в себе все функции как пира так и пользователя.
Простой пример учетной записи выглядет так:
[1001]; название пира, его будем использовать в дальнейшем, для работы с правилами звонков, ;cовпадение с логином необязательно
type=friend; тип учетной записи
host=dynamic; разрешаем логин с разных IP адресов
username=1001; имя пользователя
secret=1234; пароль
context=default; контекст, о нем чуть позже
disallow=all; запрещаем все кодеки
allow=alaw; разрешаем кодек G.711a ( alaw )
Такой записи достаточно, чтобы зарегистрироваться на свежем сервере с параметрами пользователя 1001 и паролем 1234.
Создаем две записи с названиями 1001 и 1002 в самом низу файла sip.conf.
Файл extensions.conf
Данный файл — ключевой файл в системе Asterisk, так как в нем описываются правила работы с любым голосовым трафиком, появившимся в системе. Это как статическая таблица маршрутизации. О хранении данных в базе данных будем говорить позже.
Структура файла вполне проста:
-внутри файла прописываются глобальные параметры, в том числе и переменные
-далее файл разбит на контексты, каждый из которых живет своей жизнью и правила работы звонков внутри каждого контекста могут быть своими.
Контексты нужны, для разграничения поведения телефонного звонка и отделения одних групп пользователей и их звонков от других. Контексты позволяют в пределах одной системы создавать множество подсистем со своими правилами и пользователями (аналог виртуальных машин).
Контексты обозначаются как [НАЗВАНИЕ КОНТЕКСТА].
Структура контекста следующая:
exten => МАСКА, ПОРЯДОК, ДЕЙСТВИЕ
, где
МАСКА — маска номера, либо статически заданный номер
ПОРЯДОК — порядок действия для конкретной МАСКИ (возможна последовательность действий)
ДЕЙСТВИЕ — команда, выполняемая системой в случае попадания звонка на данное правило.
Наши тестовые пользователи созданы в контексте default, поэтому, если просто запустить астериск и позвонить на любой номер, можно услышать тестовое демо-меню Астериска.
Открываем на редактирование extensiond.conf, делаем поиск по [default] и в следующей после строки [default] смело вносим правило локального звонка:
Статическое правило:
exten => 1001,1,Dial(SIP/1001)
exten => 1002,1,Dial(SIP/1002)
Динамическое правило:
exten => _XXXX,1,Dial(SIP/$); тут X говорит о том что будет набрана любая цифра, о способах; составления масок ( экстеншинов ) — позже.
Данные правила позволят совершить локальный звонок между тестовыми пользователями.
Напоследок: Работа с консолью сервера
Сервер запускается командой asterisk из под рута, либо /usr/sbin/asterisk.
Для захода в консоль надо из под рута ввести asterisk -r, либо /usr/sbin/asterisk -r (далее, для удобства, будем использовать asterisk, подразумевая, что мы говорим о работе с испольняемым файлом сервера).
Для того, чтобы Астериск перечитал конфиги из консоли достаточно выполнить reload.
Домашняя работа
1.Совершить локальный звонок.
2.Ознакомиться с примерами конфигурации, которые находятся в sip.conf и extensions.conf
3.Добавить в закладки www.voip-info.org/wiki/view/Asterisk
Спасибо за внимание.
Огромное спасибо за отзывы и замечания.
Хочу отметить, что статья расчитана на людей, которые начинают изучать Asterisk и направлена на облегчение им жизни. В перспективе хочу учесть все замечания, и делать и писать новые статьи согласно пожеланий, при этом выдерживая общую линию развития от простых вещей к сложным.
Приятно получать критику, буду стараться, и в случае неточностей исправляться.
Спасибо.
Источник: habr.com
asterisk звонок из консоли
При первичной настройке Asterisk или дальнейшей отладке очень часто может возникнуть потребность в совершении звонка без использования физического телефона или софтфона.
К примеру, изменились настройки фаерволла, транка или экстеншена и необходимо при каждом изменении совершать тестовые исходящие звонки. Подобную функцию выполняет команда «Dial», но в данном случае необходимо создать так называемый «call» файл, просто текстовый файл, который содержит следующие строки:
Первая строчка определяет канал, который будет использоваться для совершения вызова и экстеншен, в данном случае – любой номер телефона, в данном примере 84951112233. Следующая строка – параметр, определяющий сколько раз Asterisk произведет попыток вызова на данный номер. Далее – временной интервал между вызовами и начальное время ожидания перед первым звонком. Параметр «Context» отвечает соответственно за контекст, через который пойдет вызов, экстеншен и приоритет.
Кроме того, можно настроить CallerID (номер вызывающего абонента), в данном случае — Test .
Для того, что бы Астериск прочел и использовал .call файл, его необходимо поместить в директорию /var/spool/asterisk/outgoing/ — важно, что он должен быть именно перемещён в неё с помощью команды «mv», а не создан в самой директории. Кроме того, необходимо, что бы Астериск имел достаточно прав для того, чтобы удалить этот файл после использования.
Суммируя вышесказанное, необходимо:
- Создать .call файл с необходимым наполнением
- Настроить необходимые разрешения с помощью команды chmod
3. Переместить файл в директорию для его исполнения командой mv
Так как файл совершает вызов с использованием контекста, экстеншена и приоритета, ниже приведён пример контекста, который использовался для данного примера:
В описании данного контекста нет никакой специфики, кроме того что необходимо зарегистрировать экстеншен с номером 1, так как через него идет вызов (.call файл в начале статьи).
Если изменить дату создания .call файла, то Asterisk совершит вызов в указанный момент. Для этого используется команда touch, как указано ниже.
Если необходимо проверить список файлов, которые ожидают исполнения, необходимо ввести следующую команду:
Таким образом, можно генерировать файлы для совершения автодозвона в целях тестирования, в любое необходимое время – к примеру, можно проверять работоспособность АТС в критичные моменты.
Пожалуйста, расскажите почему?
Нам жаль, что статья не была полезна для вас Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!
Подпишитесь на нашу еженедельную рассылку, и мы будем присылать самые интересные публикации Просто оставьте свои данные в форме ниже.
среда, 14 мая 2014 г.
Звонок из cli asterisk
Для создания звонка из командной оболочки asterisk можно воспользоваться такой командой:
При выполнении данной команды астериск наберет внутренний номер 101, а после взятия трубки наберет номер 79008007766, пользуясь транками и маршрутами, настроенными на данной станции.
Кратко пробегусь по структуре команды:
База знаний системного администратор
В данной статье рассмотрим как звонить из командной строки. Данная функция может понадобиться при тестировании или отладке измененной конфигурации, без использования физического телефона.
Осуществление данной процедуры рассмотрим на примере call файлов.
Параметры содержащиеся в call файле:
Channel — определение канала через который будет совершен вызов. В данном параметре задается протокол(SIP), название транка(test), а так же номер(84951234567) куда требуется позвонить. Далее следует MaxRetries, параметр определяющий количество попыток вызова. Затем RetryTime, временной интервал между попытками вызова. А после следует WaitTime, время в течении которого будет совершаться вызов.
В параметре Context указывается контекст через который пойдет вызов. Затем задаем экстеншен и приоритет. Так же устанавливаем CallerID.
Для обработки данного call файла потребуется его переместить в каталог
Источник: computermaker.info
Проблема с временем исполнения call-файла
- В этой теме 2 ответа, 2 участника, последнее обновление 6 лет назад сделано Amon_R90 .
Просмотр 3 сообщений — с 1 по 3 (из 3 всего)
09.12.2016 в 05:51 #13058
Как реализовать исполнение call файла в определенное время? Сделал скрипт, написал необходимые параметры – работает только в случае запуска из консоли, из самого астера – нет.
#!/bin/sh number=$1 do #получаем значение из диалплана, тел на который звоним, что бы перезвонить ему cat /var/spool/asterisk/$1.call Channel: SIP/$1 Callerid: Admin MaxRetries: 3 RetryTime: 20 WaitTime: 30 Context: out_voicemessage Extension: s Priority: 1 Archive: yes EOF DATE=date ‘+%Y%m%d%H%M’ NOW=date +%s let NOW=$NOW+100 #echo «$DATE» #echo «$NOW» chown root:asterisk /var/spool/asterisk/$1.call TOUCH_TMSP=date -d «1970-01-01 $NOW sec GMT» +%Y%m%d%H%M%S #echo «$TOUCH_TMSP» touch -m -t $TOUCH_TMSP $1.call #stat $1.call mv /var/spool/asterisk/$1.call /var/spool/asterisk/tmp/»$1″_»$TOUCH_TMSP».call #mv /var/spool/asterisk/$1.call /var/spool/asterisk/outgoing/»$1″_»$TOUCH_TMSP».call exit 0
Если самому забить номер на который звонить и поменять путь на /asterisk/tmp/… звоню, то при перемещении в эту папку, созданный кал-файл имеет время модификации на 100 секунд больше( и остальные параметры тоже, если поменять, в общем все работает).
А когда меняю путь на /asteisk/outgoing/… звоню, то тогда, как только скрипт отработает, кал-файл попадает в outgoing, астер его тут же исполняет, при чем время модификации и др параметры УЖЕ изменены на настоящие(а не будущие), хотя если проводить аналогию с предыдущим примером, то все должно работать. Пробовал поставить touch и после перемещения файла в outgoing, это тоже не помогало. В чем может быть причина? я так понимаю, что touch просто не отрабатывает. Что касается формата записи touch, изгалялся по разному тоже – не помогло.
Источник: ruvoip.net