Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка состояния вызова в *, BUSY 
V
    Опции темы
mihanik
Дата 13.1.2013, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 2
Всего: 109



Привет!

Заморочился с настройкой asterisk.

Никак не могу понять как отследить "занятость телефона".
Вроде в диалплане всё прописал, но... Протокол-то (и сам телефон) предполагает неограниченное количество разговоров в одном канале...

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

Прошу помощи!!!

Код

[localsets]

    exten => _XXX,1,Answer()            ; Отвечам на звонок на трёхзначные внутренние телефоны


    same => n,GotoIf($["${SIPPEER(${EXTEN},status)}" = ""]?number_not_exists)    ; Если номер не существует - переходим к метке  "number_not_exists"


    same => n,GotoIf($["${SIPPEER(${EXTEN},status):0:2}" = "UN"]?number_not_connected)    ; Если номер существует, но недоступен переходим к метке "number_not_connected"


    same => n,MixMonitor(${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d)}-${STRFTIME(${EPOCH},,%H%M%S)}.wav)    ; Начинаем запись разговора в файл 
                            
    same => n,Dial(SIP/${EXTEN},,Xx)    ; Набираем номер внутреннего телефона
    
    same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?number_is_busy:number_not_connected)  ; если занято, то сообщим об этом

    same => n,Hangup()            ; в конце - повесим трубку

; ****************
; обработка ошибок
; ****************
    same => n(number_not_exists),Playback(sdd/wrongnumber)    ; неверный номер
    same => n(number_not_exists),Hangup()

    same => n(number_not_connected),Playback(sdd/phoneisdown)    ; номер есть, но аппарат не подключен (или просто недоступен)
    same => n(number_not_connected),Hangup()

    same => n(number_is_busy),Playback(sdd/numberisbusy)    ; занято
    same => n(number_is_busy),Hangup()



Добавлено через 6 минут и 56 секунд
Устаревшие параметры файла sip.conf: incominglimit и outgoinglimit

    Incominglimit = number of calls the local extension can originate to Asterisk.
    Outgoinglimit = number of calls Asterisk will terminate to local extension. 

:-(



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
mihanik
Дата 13.1.2013, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 2
Всего: 109



Решил так:

в sip.conf у экстеншенов добавил параметр 

Код

call-limit=1


и диалплан привёл к виду

Код

[localsets]

; Отвечам на звонок на трёхзначные внутренние телефоны
    exten => _XXX,1,Answer()

; Если номер не существует - переходим к метке  "number_not_exists"
    same => n,GotoIf($["${SIPPEER(${EXTEN},status)}" = ""]?number_not_exists)

; Если номер существует, но недоступен переходим к метке "number_not_connected"
    same => n,GotoIf($["${SIPPEER(${EXTEN},status):0:2}" = "UN"]?number_not_connected)

; Начинаем запись разговора в файл
    same => n,MixMonitor(${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d)}-${STRFTIME(${EPOCH},,%H%M%S)}.wav)     

; Набираем номер внутреннего телефона                            
    same => n,Dial(SIP/${EXTEN},10)    

; если занято, то сообщим об этом
    same => n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?number_is_busy)  

; в конце - повесим трубку
    same => n,Hangup()            

; ****************
; обработка ошибок
; ****************
    same => n(number_not_exists),Playback(sdd/wrongnumber)    ; неверный номер
    same => n(number_not_exists),Hangup()

    same => n(number_not_connected),Playback(sdd/phoneisdown)    ; номер есть, но аппарат не подключен (или просто недоступен)
    same => n(number_not_connected),Hangup()

    same => n(number_is_busy),Playback(sdd/numberisbusy)    ; занято
    same => n(number_is_busy),Hangup()



Не очень красиво, но работает. smile



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.1156 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.