Где почитать

Что на этом работает

Тэги

mssql mysql asterisk windows

Партнеры и друзья


Имя переменной где лежит значение -${DIALSTATUS}


//Ответ на звонок получен. Удачный дозвон.
ANSWER

//Сигнал занято. При наборе номера возвращено сообщение о занятости абонента.
BUSY

//Нет ответа. Дозвон произошел, но абонент не ответил за определенное время
NOANSWER

//Звонок отменен. Дозвонились, но повесили трубку либо Вы ли с другой стороны
CANCEL

//Неизвестен адресат. Номер не определен.
CONGESTION

//Канал для звонков недоступен. Скорее всего удаленный пир не зарегистрирован.
CHANUNAVAIL

//Приватный режим, типа "Не беспокоить"
DONTCALL

//Приватный режим, все входящие звонки отправляются на некий сервис, который их обслужит
TORTURE

//Ошибка, неверно набранный номер (добавлено в Asterisk 1.4.1, SVN r53135-53136)
INVALIDARGS



Пример использования
exten => _600,n, Goto(${EXTEN}-${DIALSTATUS},1)

-----------------------------
Если созвонились
exten => 600-ANSWER,1, Hangup
-----------------------------

; NOANSWERED

Если никто не ответил последовательность голосовых сообщений. Каждое сообщение отдельно.
; Первое сообщшение - абонент не отвечает
exten => 600-NOANSWER,1, Playback(user-not-answer) 
; Далее - чтобы связаться с абонентом по сотовому телефону
exten => 600-NOANSWER,n, Playback(dial-to-mobile) 
; Далее - оставайтесь на линии
exten => 600-NOANSWER,n, Playback(keep-online) 
exten => 600-NOANSWER,n, Wait(5)
; Вместо XXXXXXXXXX - указываем номер мобильного
exten => 600-NOANSWER,n, GoTo(XXXXXXXXXX,1)


;CHANUNAVAILABLE

;Если абонент недоступен (не зарегистрирован на сервере)
; Проигрываем - абонент недоступен
exten => 600-CHANUNAVAIL,n, Playback(user-unavailabel) 
; Проигрываем - чтобы связаться с абонентом по сотовому телефону
exten => 600-CHANUNAVAIL,n, Playback(dial-to-mobile) 
; Проигрываем - оставайтесь на линии
exten => 600-CHANUNAVAIL,n, Playback(keep-online) 
exten => 600-CHANUNAVAIL,n, Wait(5)
; Вместо XXXXXXXXXX - указываем номер мобильного
exten => 600-CHANUNAVAIL,n, GoTo(XXXXXXXXXX,1)


По аналогии и остальные статусы обрабатываются.

Опубликовано 2012-03-05 11:06:00


Находится в поиске с названиями
Ссылки о "Статусы звонков в Asterisk" на других сайтах

    [globals]
        ; Тут установле некто TEST, с номером 101 чтобы можно было посмотреть результат GotoIf(  )
        ; если результат не TRUE
        TEST=101
        ;
        [incoming]
        ; устанавливаем переменные
        ; с приоритетом 10 если ${TEST} с номером 101, иначе уходим на приоритет 20
        exten => 123,1,GotoIf($[ ${TEST} = 101 ]?10:20)
        exten => 123,10,Playback(название звукового файла)
        exten => 123,20,Playback(название звукового файла)
    

    Опубликовано 2012-03-05 10:51:00


    Находится в поиске с названиями
    Ссылки о "GotoIf() пример событий при звонке с определенного номера" на других сайтах

      Итак, схема моего построения выглядит так

      Как видно из схемы, часть пользователей зарегистрировано на cisco 3825, а часть на asterisk 1.6. Но, автодозвон должен быть доступен как для тех, кто зарегистрирован на CISCO так и для тех, кто зарегистрирован на Asterisk. Итак я сделал все это следующим образом:

      • Создал правило на CISCO, в котором сказано, что "Все кто набирает 33T" убегают на asterisk по SIP и им еще на выходе дописывается опознавательный код ( может потом понадобится )
      • На Asterisk создано правило, прописано в /etc/asterisk/extension_custom.conf. Выглядит следующим образом:
        exten => _33.,1,Dial(Local/${EXTEN:2}@from-internal,10,tr)
        exten => _33.,2,GotoIF($[ "${DIALSTATUS}" == "ANSWER" ]?end)
        exten => _33.,n,GotoIF($[ "${DIALSTATUS}" == "ANSWERED" ]?end)
        exten => _33.,n,GotoIF($[ ${CDR(billsec)} >0 ]?end)
        exten => _33.,n,Wait(10)
        exten => _33.,n,Goto(${EXTEN},1)
        exten => _33.,n(end),Hangup
        
      По каждой строке долго расписывать нечего, их формирование и синтаксис станет понятен после чтения документации, тут все просто. Замеччу только что в строке
      exten => _33.,1,Dial(Local/${EXTEN:2}@from-internal,10,tr)
      

      Я использовал tr чтобы пользователь с ума не сходил от постоянного пиликанья "BUSY" в линии.
      Итак, у меня до этого было сформировано правило, по которому звонящий - набравший 0 в начале отправлялся в транк который смотрел в сторону той же CISCO 3825 и там уже отрезался 0 и номер кидался в E1 для выхода в город. Соответсвенно тут происходил набор 33 + 0 + номер производился дозвон. По расширению 33 Asterisk определял - что надо повторять до посинения звонки.

      P.S. Ко всему этому замечу, что все это делалось на конфигурации Asterisk "по-умолчанию"

      Опубликовано 2011-10-23 19:39:00


      Находится в поиске с названиями
      Ссылки о "Автодозвон на Asterisk - как сделать и как применять" на других сайтах

        Ну собственно, вот пример как перекодировать звук из WAV в ALAW

        rasterisk -x  \
        "file convert /var/spool/asterisk/tmp/585-ivrrecording.wav /var/spool/asterisk/tmp/test.alaw"
        

        Опубликовано 2011-07-15 15:48:00


        Находится в поиске с названиями
        Ссылки о "Пример конвертирования звука в Asterisk" на других сайтах

          Рабочий пример для asterisk 1.6
          Мне надо было сделать следующее:

          • Звонит кто-то из сотрудников АйТи отдела на номер 4000
          • Asterisk проверяет номер звонящего и в соответствии с правилами
            либо отправляет его на выполнение пинга либо отправляет на "Вы ошиблись номером"

          Для краткости, вот что надо
          ; Это контекст откуда  происходит вызов
          [from-sip-external]
          
          ; Тут я просто наблюдаю за номерами, которые звонят
          
          exten => 4000,1,NoOP(${CALLERID(all)})
          exten => 4000,2,NoOP(${CALLERID(num)})
          
          ; Здесь происходит проверка на два номера 511 и 510.
          ; Если да, то они уходят на приоритет 4, в противном случае уходят на приоритет 9 exten => 4000,3,GotoIf($[ $["${CALLERID(num)}" == "511"] || $["${CALLERID(num)}" == "510"]]?4:9) ; Ну собственно если таки 511 или 510 то мы исполняем
          ; с помощью System /bin/ping, складываем результат в /home/ping.txt exten => 4000,4,System(/bin/ping google.com.ua -c 4 > /home/ping.txt) ; Потом отправляем на почту exten => 4000,5,System(/bin/mail -s 'Ping RESULT' it@имядомена.com.ua < /home/ping.txt) ; Убегаем на Hangup() exten => 4000,6,Goto(10) ; Тут мы говорим тем кто 511 или 510 что надо дескать пароль ввести ....
          ; дальше не разгонялся, учился воспроизводить сообщения. Событие необходимое было исполнено выше. exten => 4000,7,Playback(agent-pass) exten => 4000,8,Wait(10) ; А вот тем кто не 511 или 510 мы сообщаем что номер некорректный exten => 4000,9,Playback(incorect-number) ; И ложим трубку exten => 4000,10,Hangup()

          Опубликовано 2011-07-15 13:20:00


          Находится в поиске с названиями
          Ссылки о "Asterisk, использование GotoIf, Playback, System" на других сайтах