Внутренние номера
Этот раздел позволяет создать внутренние номера FreePBX. Сначала выберите технологию для подключения. Оптимальный вариант – использовать протокол SIP. Для новичков при создании внутреннего номера достаточно задать 3 настройки:
- User Extension – сам номер. Запрещается указывать следующие: 600-699 (зарезервирован для групп вызовов) и 70-79 (зарезервирован для парковки вызовов).
- Display Name – имя, под которым номер отображается в списке номеров. Это имя на экране телефона увидит абонент, принимающий звонок.
- Secret – пароль FreePBX для внутреннего номера (будет сгенерирован автоматически).
Остальные функции помогут опытным пользователям кастомизировать интерфейс под свои нужны и автоматизировать большинство рутинных операций. Чтобы получить краткую справку по той или иной настройке, нажмите на знак вопроса возле нее.
Добавление операторов к очереди (агентов)
Пользователей, которые отвечают на звонки очереди называют агентами или операторами. Есть два типа агентов — статические и динамические. Первые прописываются в конфигурационном файле queues.conf, вторые — могут присоединятся к очереди, становясь на некоторое время оператором.
Статические агенты
Для создания статического оператора, открываем конфигурационный файл очереди:
vi /etc/asterisk/queues.conf
В настройках очереди добавляем:
strategy = ringall
member => SIP/101,1
* в данном примере, мы добавили оператора к нашей очереди. Это sip агент с именем 101. 1 на конце — пенальти (используется для выставления приоритета при использовании некоторых стратегий).
Перечитываем все конфигурационные файлы:
asterisk -x «core reload»
Динамические агенты
Динамические агенты могут присоединиться к очереди в любой момент набором специального сочетания кнопок на телефонном аппарате. Настройка сервера выполняется в конфигурационном файле диалплана:
vi /etc/asterisk/extensions.conf
exten => *999#,1,Verbose(2,Adding dynamic member to support queue)
same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,AddQueueMember(support,${MemberInfo})
same => n,Playback(agent-loginok)
same => n,Hangup()
exten => *888#,1,Verbose(2,Removing dynamic member from support queue.)
same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,RemoveQueueMember(support,${MemberInfo})
same => n,Playback(agent-loggedoff)
same => n,Hangup()
* в данном примере, если агент набирает *999#, он присоединяется к очереди и может принимать вызовы. При наборе *888# агент выходит из очереди.
* Verbose — вывод в консоль информации; Set — задает значение переменной, в данном примере, MemberInfo; AddQueueMember/RemoveQueueMember — соответственно, добавляет к очереди агента и удаляет из нее; Playback — проигрывает голосовой сигнал; Hangup — дает сигнал отбоя.
Аутентификация агентов
1. Общий пароль для всех агентов
Можно сделать так, чтобы Asterisk требовал от агентов ввод пароля для присоединения к очереди. Для этого наш диалплан приводим к такому виду:
vi /etc/asterisk/extensions.conf
exten => *999#,1,Verbose(2,Adding dynamic member to support queue)
same => n,Authenticate(1234)
same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,AddQueueMember(support,${MemberInfo})
same => n,Playback(agent-loginok)
same => n,Hangup()
* где Authenticate — запрос пароля, в данном примере, 1234.
2. Индивидуальные пароли для каждого агента
Если необходимо, чтобы каждый агент перед входом вводил свои номер и пароль, необходимо воспользоваться приложением VMAuthenticate (аутентификация по электронному почтовому ящику). Настройку начнем с правки диалплана:
vi /etc/asterisk/extensions.conf
exten => *999#,1,Verbose(2,Adding a member to the cc_ege_support queue.)
same => n,Read(AGENT_USERID,agent-user)
same => n,VMAuthenticate(${AGENT_USERID}@vmauth)
same => n,Set(MemberInfo=${CHANNEL(channeltype)}/${CHANNEL(peername)})
same => n,AddQueueMember(support,${MemberInfo})
same => n,Playback(agent-loginok)
same => n,Hangup()
* Read — запрашиваем данные у агента (agent-user — голосовой файл), и записываем в переменную AGENT_USERID; VMAuthenticate — запрашиваем пароль для почтового ящика ${AGENT_USERID} с контекстом vmauth.
Добавляем почтовые ящики:
1001 => 1234, dmosk, dmosk@example.com
1002 => 5678, dmosk2, dmosk2@example.com
* vmauth — контекст (его мы указали в диалплане); 1001/1002 — номера агентов; 1234/5678 — пароли.
Для применения настроек перечитываем диалплан:
asterisk -x «dialplan reload»
Принцип настройки
IVR настраивается в плане набора Aterisk (dialplan) — в конфигурационном файле extensions.conf.
Сначала мы проигрываем запись с голосовым приветствием и предложением ввести номер в тональном режиме. В том же файле мы обрабатываем вводимую информацию, перекидывая абонента на другие диалплан, очередь или конкретного сотрудника.
Записать голосовое приветствие с просьбой ввода номера можно с помощью различных программ звукозаписи. Asterisk работает с форматами .waw, .gsm. В случае наличия другого формата, можно воспользоваться пакетом для конвертации — sox. Также можно загрузить и установить готовый список голосов на русском, который частично, можно использовать.
Краткий обзор имеющихся модулей: управление модулями
В этом разделе можно управлять модулями FreePBX. То есть предусмотрена возможность установки новых, обновление и удаление имеющихся, а также отключение работающих модулей. Новые доступны в 4 источниках:
- Basic – фундамент системы. Обновлением и обслуживанием его разработчики озабочены сильнее всего.
- Extended – модули из этого источника пользуются меньшим приоритетом, чем из предыдущего.
- Unsupported – разработчики FreePBX не несут ответственности за его работоспособность. Так как модули отсюда разрабатывают сторонние программисты.
- Commercial – коммерческие модули или поддержка.
Есть возможность использовать в качестве источника и ваш ПК. Для этого предусмотрена кнопка Uploud modules. А чтобы установить или обновить модуль, следуйте пошаговой инструкции:
1. Выберите подходящий источник.
2. Воспользуйтесь функцией Check Online.
3. После обновления списка доступных модулей напротив каждого из них появится один их следующих комментариев:
- not installed – не установлен;
- online upgrade available – можно обновить;
- enabled and ap to date – модуль включен и обновлен до последней версии.
Предусмотрена возможность одновременной установки или обновления всех доступных модулей, для этого нажмите соответствующую кнопку.
Группы вызова
Функция позволяет объединить внутренние номера в группу. Набрав единственный номер, можно одновременно позвонить хоть на все внутренние номера из этой группы. Это очень удобно, когда нужно постоянно связываться сразу с несколькими абонентами. По умолчанию используется номер 600-699. Это функция работает по следующему принципу:
- Вы добавляете в группу определенное количество внутренних номеров.
- После этого совершаете звонок на номер 6ХХ.
- Звонок проходит на внутренние номера в этой группе по схеме, которую вы выбрали.
Доступно несколько схем распределения вызовов:
- ringall – звонок идет одновременно на все номера группы;
- hunt – звонок распределяется в случайном порядке по доступным номерам;
- memoryhunt – звонок идет последовательно на первый номер, потом на первый и второй и так далее;
- firstunavailable – звонок идет по первому доступному номеру;
- firstnotonphone – звонок идет по первому номеру, у которого не снята трубка;
- *-prim – звонок помечается как не отвеченный, если первый номер занят.
Продвинутые пользователи могут вволю поиграться с настройками – тут их 18 штук. Напротив каждой опции есть знак вопроса, нажатие на который расскажет, за что отвечает та или иная функция.
Таймаут по времени ожидания и неправильные действия
Добавим обработку неправильно введенной цифры и превышение времени ожидания. В вышеуказанном примере просто происходит отбой звонка.
Данное поведения указывается в диалплане с помощью ключей t и i. Добавим их в наш конфиг:
vi /etc/asterisk/extensions.conf
exten => 333,1,Answer()
same => n,Background(basic-pbx-ivr-main)
same => n,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
exten => t,1,Dial(SIP/101)
exten => i,1,Background(invalid)
same => n,Goto(outcaling,333,3)
…
* где t,1,Dial(SIP/101) — позвонить по номеру 101, если будет превышен таймаут ожидания; i,1,Background(invalid) — сообщить о том, что введен неправильный номер.
Установка графического интерфейса
Вот пошаговая инструкция:
1. Скачайте дистрибутив FreePBX 13 Distro. Существует несколько версий продукта: для разной разрядности операционной системы. Выбор 32 или 64-битной версии зависит от вашего программного обеспечения. Новичкам лучше не экспериментировать и обойти beta-версии Asterisk PBX стороной.
2. Запишите на диск или флешку образ системы. Для этого используйте стандартные утилиты, которые есть в каждом компьютере.
3. После записи загрузите машину с этого диска. Для этого измените параметры загрузки системы. Порядок действий зависит от конкретной версии BIOS. Обычно всю необходимую информацию можно найти в документации к своему компьютеру. Если все сделано правильно, то появится меню установки программы.
4. Выберите версию сервиса Asterisk PBX и режим, в котором будут работать жесткие диски. Доступны следующие варианты:
- Full install – автоматически удалит всю информацию с жестких дисков и создаст единый RAID-массив. Такой режим повышает надежность работы системы и уменьшает вероятность отказов.
- Full install NO RAID – установка системы без автоматического создания RAID.
- Full install Advanced – установит систему и позволит выполнить ручное разделение диска.
- HA Install – для дисков емкостью более 250 ГБ.
5. Выбрав нужный режим, переходим к настройкам Сети. Если вы используете DHCP-сервер (динамические IP-адреса), а в большинстве случаев это именно так, то просто нажмите ОК. При статическом IP укажите настройки для вашей Сети.
После этого остается выбрать часовой пояс и установить пароль для пользователя с особыми правами и полным доступом – root.
Ждем, пока система установит и обновит файлы Asterisk FreePBX. Перезагружаем компьютер, переходим в консольный режим и авторизуемся как пользователь с правами root.
Также в интерфейс можно зайти с другого компьютера, используя любой браузер. Для этого просто введите IP-адрес машины, где произведена установка FreePBX.
Тут придется еще раз задать логин и пароль
Важно помнить, что в целях безопасности они должны отличаться от пароля пользователя с правами root.
Установка FreePBX завершена. Теперь можно перейти непосредственно к настройке телефонии.
Транки
Модуль позволяет настроить внешние линии — транки, через которые будут идти звонки в телефонную сеть общего пользования. Подробно по настройкам можно проконсультироваться у оператора связи, который и предоставляет доступ к этим линиям. Для наших целей достаточно ознакомиться с настройками SIP транка FreePBX. По умолчанию доступны следующие опции:
- Trunk name – наименование транка.
- Outbound CallerID – CallerID для исходящих звонков.
- CID Options – CallerID для входящих звонков.
- Maximum Channels – установление максимального количества каналов связи.
- Asterisk Trunk Dial Options – дополнительные настройки вызова.
- Continue if Busy – возможность позвонить через другой транк в случае ошибки.
- Disable Trunk – отключение транка.
- Dialed Number Manipulation Rules – правила, по которым формируется номер при исходящем вызове.
- Outgoing Settings – настройки исходящих вызовов.
- Incoming Settings – настройки входящих вызовов.
- PEER Details and USER Details – указание настроек, полученных от провайдера.
- Registration – задание строки регистрации для входящей связи.
Зачем нужен Web-интерфейс FreePBX?
Интерфейс упрощает управление VoIP телефонией и настройку Asterisk за счет визуального представления данных. Но прежде чем перейти к установке, нужно иметь хотя бы общее представление о предмете. Сразу же отметим, что основное удобство названной системы заключается в том, что пользователю нет нужды исправлять множество текстовых файлов с настройками вручную, как это было раньше.
Последней версией пакета является FreePBX 13. По сути, это программная оболочка. Она позволяет управлять VoIP телефонией и выполнять настройку Asterisk без специальных знаний в области программирования. Если говорить упрощенно, она переводит программный язык, понятный машине, в визуальную информацию, которая понятна пользователю, и наоборот. Чтобы выполнить настройку FreePBX с нуля, оболочку нужно установить на компьютер, который будет использоваться для работы с VoIP телефонией.
Настройка голосового меню для Asterisk
Создаем файл company.tree в корне папки Asterisk. В этом файле будет прописан алгоритм работы голосового меню.
Идем в extensions.conf и в самое начало файла вставляем следующее
#include «company.tree»
этим самым мы подгружаем недавно созданный файл в общий план маршрутизации Asterisk. Там же в extensions.conf ищем где у вас настроены входящие звонки (у меня раздел назван , у вас может быть другое название) и вставляем в самое начало следующую строчку
exten => 84951234567,1,Goto(company_tree,s,1)
здесь вместо 84951234567 указываете Ваш внешний номер при звонке на который будет проигрываться голосовое меню. В моем же случае я просто указывал свой SIP-идентификатор, под которым зарегистрирован у провайдера. Если кратко, то Asterisk переведет нас в контекст company_tree на первую строку «s», который находится в файле company.tree, который мы благополучно подгрузили в общий план маршрутизации выше.
Теперь переходим в файл company.tree и заполняем наш алгоритм голосового меню. Ниже весь код с комментариями:
На этом все. Голосовое меню c приветствием для Asterisk настроено. Осталось только перезагрузить план обзвона из консоли
asterisk -r dialplan reload
Asterisk. Делаем простейшее голосовое меню (IVR).
Одним из основных достоинств Астериск является легкость, с которой с помощью него создаются IVR.
Для того что бы создать IVR нужно в первую очередь представить себе его структуру, то есть что за чем и как будет делаться, и составить тексты.
Сейчас мы опишем создание простейшего голосового меню, состоящего из приветствия и после приветствия, переключение на оператора. Файл в котором хранится фраза «Здравствуйте, вы позвонили в нашу компанию» называется welcome.wav и находится в директории /home/menu. Номер, который принимает звонки 444. А выглядеть меню будет так:
sip-in exten => 444,1,Set(home="/home/menu") exten => 444,2,Wait(1) exten => 444,3,Playback(${home}welcome) exten => 444,4,Dial(SIPoperator) |
У нас появилась новая функция Playback, она предназначена для проигрывания звуковых файлов, файлы должны быть подготовленны заранее, так как мы описывали в статье ffmpeg, подготавливаем звуковые файлы для Asterisk. Есть еще сходная функция Background, она отлдичается от Playback тем, что не блокирует нажатия на кнопки, то есть в момент проигрывания голосовых меню, позволяет реагировать на передаваемые звонившим DTMF.
Это простейший IVR и в нем отсутствует основная особенность IVR, нет никакого выбора. Поэтому приведем пример с диалогом. Тут будет присутствовать вторая начитка: «Для связи того что бы прослушать тарифы нажмите 1, для связи с оператором нажмите 2». Файл содержащий эту начитку будет называться menu.wav и файл с тарифами соответсвенно tariff.wav. После прочтения инструкции должен осуществляться переход в главное меню.
Выглядит это так:
sip-in exten => 444,1,Goto(menu,s,1) menu exten => s,1,Set(home="/home/menu") exten => s,2,Wait(1) exten => s,3,Playback(${home}welcome) exten => s,4,Playback(${home}menu) exten => s,5,WaitExten() exten => 1,1,Playback(${home}tariff) exten => 1,2,Goto(s,1) exten => 2,1,Dial(SIPoperator) exten => t,1,Playback(make_choice) exten => t,2,Goto(s,1) exten => i,1,Playback(wrong_choice) exten => i,2,Goto(s,1) |
Тут у нас появилось много нового. Во первых Goto — функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий.
Так же появились екстеншены i — это реакция на неправильно нажатую кнопку, Invalid input и t — реакция на истекшее время ожидания выбора. Если их не описать то при истечении таймаута или при неправильно нажатой кнопке произойдет обрыв соединения.
Filed in VoIP | hilik
Пошаговая инструкция по настройке интерфейса FreePBX
Чтобы подробно изучить все модули, придется ознакомиться с официальным руководством по работе с системой. Скачать его можно на официальном сайте Asterisk. Однако ниже приведена простая пошаговая инструкция по настройке FreePBX с нуля, которая позволит использовать базовые опции и приступить к работе:
Нажимаем меню Admin, переходим на вкладку System Admin и активируем FreePBX. Активация необходима для того, чтобы получить доступ к платным модулям и поддержке. Если процедура проведена верно, то при повторном переходе на вкладку System Admin вы увидите меню, представленное на фото.
- Нажимаем Submit – сохраняем настройки.
- Переходим на вкладку Time Zone. Выбираем часовой пояс. Нажимаем Submit и сохраняем настройки.
- На вкладке Storage вводим e-mail, куда будут приходить отчеты о системных ошибках, связанных с жестким диском. Также система предупредит, когда доступное дисковое пространство подойдет к концу.
- Выбираем пункт меню Settings, вкладка Asterisk SIP Settings и переходим к настройкам этого модуля. На первой вкладке все оставляем по умолчанию, кроме пункта Local Networks. Заполняем его так, как показано на скриншоте. Первое поле – адрес Сети, второе – маска.
- После этого нажимаем Submit, ждем обновления настроек и нажимает кнопку Apply Config в правом верхнем углу. Далее таким же образом будет необходимо подтверждать все действия.
- Следующий этап – создание и настройка внутреннего номера. Для этого выбираем меню Applications и переходим к модулю Extension. Когда модуль прогрузится, нажимает Quick Create Extension и заполняем поля, следуя пошаговой инструкции на экране. Вы можете видеть на фото первый шаг.
- После того как номер создан, переходим к настройке. Для этого нажмите значок с карандашом. Проверяем правильность всех настроек.
- Регистрируем софтфон. Для этого скачиваем и устанавливаем на компьютер нужное приложение. Мы рассмотрим процесс на примере бесплатного софтфона MicroSIP. Запускаем программу и вводим необходимые параметры, как показано на фото.
- Нажимаем кнопку «Сохранить». Если все сделано верно, статус в софтфоне должен измениться на онлайн.
- Теперь переходим к настройке SIP транка – номера, с которого можно звонить на внешние телефоны. Для этого переходим в меню Connectivity и выбираем пункт Trunks.
- Чтобы создать новый транк, нажимаем Add Trunk. Выбираем SIP Trunk и вводим настройки, которые можно получить у провайдера.
- В поле Peer Details на вкладке SIP Settings вводим данные, как на скриншоте.
- Нажимаем Submit и применяем настройки.
- Настраиваем исходящую маршрутизацию. Для этого переходим в меню Connectivity и выбираем пункт Outbound Routes. Далее нажимаем кнопку Add Outbound Routes и вводим нужные данные.
- Теперь записываем звуковой файл с приветствием от имени вашей компании. Его будут слышать абоненты, которые позвонят вам. Для записи можно использовать стандартные средства Windows.
- Далее переходим в меню Admin и выбираем пункт System Recordings. Вводим нужные настройки и загружаем звуковой файл с приветствием.
- Теперь создаем голосовое меню. Для этого переходим в меню Applications и выбираем пункт IVR. Нажимаем кнопку Add IVR и заполняем нужные данные.
- Сохраняем и применяем изменения.
- Создаем входящий маршрут. Для этого переходим в меню Connectivity и выбираем пункт Inbound Routes. Далее нажимаем кнопку Add Inbound Routes и заполняем необходимые поля. Остается сохранить и применить изменения.
Минимальная настройка FreePBX с нуля завершена. Теперь можно совершать исходящие звонки и принимать входящие вызовы. Вами был создан внутренний и зарегистрирован внешний номер. А также настроено приветствие для входящих вызовов.
FreePBX — настройка с нуля: инструкция на News4Auto.ru.
Наша жизнь состоит из будничных мелочей, которые так или иначе влияют на наше самочувствие, настроение и продуктивность. Не выспался — болит голова; выпил кофе, чтобы поправить ситуацию и взбодриться — стал раздражительным. Предусмотреть всё очень хочется, но никак не получается. Да ещё и вокруг все, как заведённые, дают советы: глютен в хлебе — не подходи, убьёт; шоколадка в кармане — прямой путь к выпадению зубов. Мы собираем самые популярные вопросов о здоровье, питании, заболеваниях и даем на них ответы, которые позволят чуть лучше понимать, что полезно для здоровья.
Asterisk. Голосовое меню своими руками
Всем привет. Постараюсь без нудятины рассказать о том, как создать голосовое меню приветствие на Asterisk.
Буду рассказывать на своем примере голосового меню. У меня оно было следующего вида:
Здравствуйте! Вы позвонили в КОМПАНИЮ, выберите пункт меню, введите внутренний номер или дождитесь ответа секретаря
- один — первый отдел
- два — второй отдел
- …
- шесть — шестой отдел
- для повтора нажмите НОЛЬ
При этом если человек ничего не вводил его должно было перенаправить на секретаря, если человек ввел не то что надо, его тоже перенаправляет на секретаря.
Я разворачивал свой Asterisk в связке с CentOS. На самом деле это не имеет особого значения, но решил все же уточнить.
И так, на момент чтения этой статьи у Вас должно быть следующее:
- установленный Asterisk
- настроена минимальная маршрутизация звонков в extensions.conf
- и как минимум пара внутренних номеров настроенных в sip.conf
Настройка голосового меню для Asterisk
Создаем файл company.tree в корне папки Asterisk. В этом файле будет прописан алгоритм работы голосового меню.
Идем в extensions.conf и в самое начало файла вставляем следующее
#include «company.tree»
этим самым мы подгружаем недавно созданный файл в общий план маршрутизации Asterisk. Там же в extensions.conf ищем где у вас настроены входящие звонки (у меня раздел назван , у вас может быть другое название) и вставляем в самое начало следующую строчку
exten => 84951234567,1,Goto(company_tree,s,1)
здесь вместо 84951234567 указываете Ваш внешний номер при звонке на который будет проигрываться голосовое меню. В моем же случае я просто указывал свой SIP-идентификатор, под которым зарегистрирован у провайдера. Если кратко, то Asterisk переведет нас в контекст company_tree на первую строку «s», который находится в файле company.tree, который мы благополучно подгрузили в общий план маршрутизации выше.
Теперь переходим в файл company.tree и заполняем наш алгоритм голосового меню. Ниже весь код с комментариями:
На этом все. Голосовое меню c приветствием для Asterisk настроено. Осталось только перезагрузить план обзвона из консоли
asterisk -r dialplan reload
Аудиофайлы для голосового меню в Asterisk
Выше в структуре файла company.tree есть строчка
exten => s,2,Background(/etc/IVR/menu)
здесь
- Background — это команда на проигрывание фоном вашей записи
- /etc/IVR/ — путь для папки с аудиофайлом
- menu — название самой записи. Указывается без расширения. Астер сам знает какой файл забрать.
Конвертация WAV в ULAW
В консоли вашей ОС Linux пишем следующее
sox -V /etc/IVR/menu.wav -r 8000 -c 1 -t ul /etc/IVR/menu.ulaw
здесь
- /etc/IVR/menu.wav — полный путь до вашего файла с расширением, который нужно конвертировать
- /etc/IVR/menu.ulaw — полный путь и имя файла с расширением, который получите на выходе
После выполнения команды увидите примерно следующее
Качаете WinSCP с ОФИЦИАЛЬНОГО САЙТА При запуске создаете новое подключение к вашему Linux и далее увидите что-то на подобие интерфейса TotalCommander. Ну а дальше копирует файлы, создаете папки и так далее. В моем случае я создал папку IVR в каталоге etc где у меня и лежит мое голосовое меню.
Попытался кратко резюмировать то, что нарыл в интернете, когда разбирался с настройкой голосового меню для Asterisk. В итоге Вам представлена рабочая схема, которой можете пользоваться
Спасибо за внимание
Теоретическая часть
Рассмотрим, какие события происходят в различных частях системы.
Asterisk
При поступлении входящего звонка в Asterisk происходит его передача на IVR. Абонент выбирает определенный пункт путем нажатия клавиши с цифрой на телефонном аппарате. После этого его вызов направляется в заданную очередь, а ее свободным в данный момент агентам в один и тот же момент поступает звонок.
Механизм реализуется предельно просто. При попадании входящего вызова в очередь у свободных агентов переменная принимает значение . Возможны и другие варианты. Единственное значение, которое не мог принять в данном случае параметр , это – .
Исследуя , можно увидеть, что при передаче звонка в очередь (в колонке прописывается значение ) у всех событий в колонке устанавливается значение .
Вкратце о CDR
Необходимо иметь представление о том, как функционирует CDR и в какое мгновение туда заносятся сведения, видимые потом нами в Report CDR. Итак, CDR в контексте ОС являет собой базу данных, куда Asterisk помещает детальный отчет по звонкам. В нашей ситуации представлена база под названием , расположенная в Mysql.
Нам удалось показать на практическом примере, что информация о вызове с некоторым записывается в не в тот же миг, как возникло определенное событие, а только после того, как система зафиксировала завершение вызова ().
Принцип работы решения
Решения представляет собой Bash-скрипт, в который передаются три параметра:
- , чтобы фильтровать информацию, поступающую из CDR;
- (номер абонента). Необходим, чтобы мы знали, кому необходимо перезванивать;
- номер очереди, куда был направлен вызов. Этот параметр позволяет определить цель звонившего, узнать, кому требуется направить уведомление по электронной почте о пропущенном звонке.
Скрипт подключается к в Mysql и берет перечень значений переменной с указанным . Из списка необходимо убрать все значения, кроме (удалить и другие). Оставшаяся опция будет означать, что на звонок был ответ, либо будет зафиксирован пропущенный вызов. В последнем случае на электронную почту скрипт отправляет соответствующее сообщение.
Несколько опережая события, отметим один нюанс. Asterisk исполняет команды строго в определенной последовательности. Выполнение следующей начинается только после того, как была завершена предыдущая, что вполне вписывается в логику событий. Но производить вызов Bash-скрипта нам придется до момента выполнения команды . Получается, что на временном отрезке, когда скрипт выполняется, CDR еще не содержит сведений о необходимом нам UniqueID. Эти данные еще просто не внесены в БД.
Чтобы решить эту дилемму, вызов скрипта мы будем производить, пользуясь опцией «». Это позволит Asterisk без задержки приступить к реализации следующего этапа, то есть . В самом скрипте укажем незначительную временную паузу, которая позволит системе записать данные с необходимым нам UniqueID в CDR.