Честно говоря, я планировал связать два астрериска уже после того, как полностью заработает один. Но суровая реальность расставила все по своим местам.
Данный раздел посвящен внедрению asterisk в компании, имеющей распределенную структуру - филиалы, региональные склады и тд.
Фактически, я записываю сюда свой опыт, идеи, мытарства и тд, возникшие при переводе офиса компании Rittal (где я и работаю) с Ericsson BusinessPhone 250 на asterisk и, в дальнейшем, запуска этого всего в филиалах.
Сразу оговорюсь, я не уверен, что схема, которая здесь будет, идеальна. Но, как я надеюсь, она поможет вам в случае аналогичного проекта.
Обращаю ваше внимание на то, что на текущий момент это - живой проект, как следствие, возможно изменение статей после их написания. Об этом я буду сообщать в блоге.
Некое подобие оглавления я стараюсь поддерживать в первой статье, посвященной постановке задачи.
Честно говоря, я планировал связать два астрериска уже после того, как полностью заработает один. Но суровая реальность расставила все по своим местам.
Если вы читаете этот цикл статей с начала, то вы помните мои метания по поводу сигнала занято (вы можете посмотреть здесь и здесь).
После переписки с разработчиками, чтения мануалов и тд, стал понятен третий, финальный и правильный путь. Переходим к делу.
Во-первых, удаляем столбец call-limit из tbl_sip_conf - он больше не понадобится.
Во-вторых, добавляем два столбца в ту же таблицу
busylevel будет определять, при каком количестве звонков телефон переходит в статус занято, а callcounter разрешает такой подсчет.
После перезапуска sip очереди уже будут контролироваться автоматически, не допуская появления новых звонков в процессе разговора.
Теперь дополнительный отбой при наборе.
Перед набором SIP номера (у меня это macro-dial_sip_number) добавляем
А в контексты набора номера с телефонов добавляем
Все!
В качестве телефона оператора колл-центра, мы выбрали телефон Grandstream GXP-2020. К нему подключаются дополнительные блоки кнопок и он умеет показывать статус линии (занята/свободна). Именно этим статусом и займемся.
Сначала добавим в таблицу tbl_sip_conf два столбца:
Первый позволит уведомлять телефон колл-центра не только о разговаривающих абонентах, но и об абонентах, которым звонят. Второй предназначен для задания контекста, в который будет направляться телефон при подписке.
Из-за того, что указание в диалплане метки hint(а именно она нам и нужна) нельзя использовать шаблоны, придется немного схитрить.
В основной контекст я добавил следующие строки (они включают внешний файл /etc/asterisk/rittal/hints.conf):
Для формирования этого файла из базы я использовал скрипт
Этот скрипт создает файл вида
Теперь осталось в настройках телефона прописать на кнопку мониторинг.
Еще одна "неподкатная" статейка - как повторить последний набранный номер? Все просто...
Во-первых, если пошел набор реального номера, его нужно сохранить (в моем случае - в AstDB).
Я вписал в контекст набора номера с SIP телефона следующую строчку (она в середине):
Во-вторых, при наборе системного номера (в моем случае - **) этот номер нужно восстановить из базы и набрать:
Совсем коротко, даже нет смысла загонять под кат.
Нам необходимо разбить пользователей на группы и разрешить пользователям одной группы отвечать на звонки друг-друга.
Первым делом, добавляем в таблицу tbl_sip_conf два столбца
Затем в features.conf добавляем
Из-за бага в астериск, pickupsound и pickupfailsound должны быть закомментированы!
Далее мы можем добавлять в поля pickupgroup и callgroup номера групп, к которым принадлежит телефон и которые он может перехватить.
Для перехвата необходимо набрать номер *8.
Вот и все!
Попробуем организовать конференцию.
Рассмотрим организацию очередей звонков на примере ответа секретаря.
В идеале, я бы хотел сделать и прием, и отправку через встроенный факс астериск, но отправка пока вызывает много организационных вопросов (как указывать номер, конвертировать форматы и тд). Здесь я рассмотрю настройку приема факсов.