Данный раздел посвящен внедрению asterisk в компании, имеющей распределенную структуру - филиалы, региональные склады и тд.

Фактически, я записываю сюда свой опыт, идеи, мытарства и тд, возникшие при переводе офиса компании Rittal (где я и работаю) с Ericsson BusinessPhone 250 на asterisk и, в дальнейшем, запуска этого всего в филиалах.

Сразу оговорюсь, я не уверен, что схема, которая здесь будет, идеальна. Но, как я надеюсь, она поможет вам в случае аналогичного проекта.

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

Некое подобие оглавления я стараюсь поддерживать в первой статье, посвященной постановке задачи.



Связь двух астерисков 02.06.2011

Честно говоря, я планировал связать два астрериска уже после того, как полностью заработает один. Но суровая реальность расставила все по своим местам.

 
Читать дальше...

Занято v3 26.05.2011

Если вы читаете этот цикл статей с начала, то вы помните мои метания по поводу сигнала занято (вы можете посмотреть здесь и здесь).

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

Во-первых, удаляем столбец call-limit из tbl_sip_conf - он больше не понадобится.

Во-вторых, добавляем два столбца в ту же таблицу

  `busylevel` int(11) NOT NULL default '1',
  `callcounter` varchar(45) NOT NULL default 'yes'

busylevel будет определять, при каком количестве звонков телефон переходит в статус занято, а callcounter разрешает такой подсчет.

После перезапуска sip очереди уже будут контролироваться автоматически, не допуская появления новых звонков в процессе разговора.

Теперь дополнительный отбой при наборе.

Перед набором SIP номера (у меня это macro-dial_sip_number) добавляем

; проверим набираемый номер на занятость
; по входящим
exten => s,n,GotoIF($[${GROUP_COUNT(${ARG1}@busy_in)} > 0 ]?number_is_busy)
; и исходящим
exten => s,n,GotoIF($[${GROUP_COUNT(${ARG1}@busy_out)} > 0 ]?number_is_busy)

; маркируем набираемый как "занято"
; набирающий уже маркирован
exten => s,n,Set(GROUP(busy_in)=${ARG1})

А в контексты набора номера с телефонов добавляем

; устанавливаем "занято"
exten => _X.,n,Set(GROUP(busy_out)=${CALLERID(NUM)})

Все!

 

Реальный диалплан. Начало. 04.05.2011

Итак, переходим к реальному диалплану. В первой части – набор номера с внутренних телефонов и роутинг исходящих.

 
Читать дальше...

Статус SIP клиентов и текст на экранах 29.04.2011

Это последняя теоретическая статья об астериске – дальше будет только практика. Статья посвящена обновлению статусов телефонов в базе (подключен/неподключен), а так же отправке сообщений на телефоны через класс php-sip.

 
Читать дальше...

SIP-аккаунты в MySQL 28.04.2011

Важная статья, посвященная внесению SIP-аккаунтов не через файл sip.conf (как описано в этой статье), а через таблицу БД, и дальнейшему их администрированию.

 
Читать дальше...

Короткие номера и MySQL 25.04.2011

Теперь пришло время начать работу над переадресациями по коротким номерам. Забегая вперед, мы будем делать ее, используя таблицу MySQL в качестве источника.

 
Читать дальше...

Внутренние номера 22.04.2011

Дополним диалплан, созданный в прошлой статье, несколькими нюансами.

 
Читать дальше...

Подключаем телефоны 20.04.2011

Настало время подключить телефоны к астериск по протоколу SIP и сделать «звонок другу» :)

 
Читать дальше...

1