Внутренняя голосовая почта в Asterisk

 

Сервисы Общения Форумы Общие вопросы Внутренняя голосовая почта в Asterisk

  • В этой теме 8 ответов, 4 участника, последнее обновление 8 лет назад сделано Amon_R90.
Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #12707
    Amon_R90
    Участник

    Всем привет!=) Недавно начал свое знакомство с астером(в связи с устройством на работу), и соответственно с осью Cenos7 на которую его установил, много непонятного, но это понятно почему, опыта пока мало(
    Дали 1е задание создать пару абонентов и наладить между ними связь через софтфоны, получилось, разобрался. Дали следующее задание: настроить голосовую почту среди этих абонентов(в общем внутренняя сеть). Просмотрел много мануалов, там почти во всех говорится о ГП с выходом в интернет, а если и говорится о локальной ГП, то только вскользь(и что показывать об этом инфу не видят смысла//*все такие умные, ну..*//..)
    Так вот, прошу, помогите мне! Подскажите как настроить голосовую почту внутри локальной сети? Напр: Если в кампании много отделов, и с одного отдела звонят в другой, не получают ответ, то оставляют голосовое сообщение…
    P.S. я нуб в определениях в астере, но это пока что, так что попрошу Вас отнестись с пониманием.
    Большое спасибо!!

    #12708
    Demon
    Участник

    самое простое за 3 минуты гугления: https://allevich.com/2013/12/10/asterisk_vm/

    за это отвечает voicemail.conf, mailbox в пире и команды в диалплане.

    #12716
    Amon_R90
    Участник

    Спасибо большое!

    #12938
    Amon_R90
    Участник

    С предыдущей задачей справился, вроде не так сложно как оказалось:) а вот по следующей задаче есть вопросы!

    Допустим, мы позвонили нашему внутреннему абоненту, он не ответил, и мы оставили ГС. Необходимо как то послать ему уведомления(автодозвон), что бы он догадался проверить ГП(не всегда обращаешь внимание ведь). Так вот, решил сделать все с помощью .call файлов и скриптов, идея такая: как только мы оставили ГС, запускается скрипт для создания текстового файла в котором будет номер куда мы звонили, далее запускается скрипт на создание .call файла, с указанием на текстовой файл с номером. Проблема состоит в том что Астер игнорирует команду System(/../test.sh) в экстеншене. Подскажите в чем проблема?

    [internal]
    exten => _XXX,1,Dial(SIP/${EXTEN},10)
    same => n,GotoIf($[“${DIALSTATUS}” = “BUSY”]?busy:unavail)
    same => n(unavail),VoiceMail(${EXTEN}@voicemail,u)

    same => n,System(/var/…/test_txt_list.sh)
    same => n,System(echo “${CALLERID(num)}” /var/spool/asterisk/temp1234/nomera.txt)

    same => n,Hangup()
    same => n(busy),VoiceMail(${EXTEN}@voicemail,b)
    same => n,Hangup()

    Скрипт на создание текстового файла:
    #!/bin/bash
    echo $1 > /var/spool/asterisk/temp1234/nomera.txt
    exit 0

    Скрипт на создание .call файла(сам скрипт не мой, я в нем только адреса файлов поменял под мои):
    #!/bin/sh
    while read number; do
    cat <<EOF > /var/spool/asterisk/test1234/$number
    Channel: SIP/voip_trunk/$number
    Callerid: $number
    MaxRetries: 5
    RetryTime: 1800
    WaitTime: 30
    Context: out_voicemessage ;тут описан экстеншн с дозвоном и проигрыванием ГС о присутствии ГС
    ;на почте у абонента
    Extension: s
    Priority: 1

    EOF
    chown asterisk:asterisk /var/…/$number
    mv /var/…/$number /var/spool/asterisk/outgoing
    echo “$number”
    number=expr $number + 1
    while [ “$?” -eq “0” ]
    do
    count_files ()
    {
    count_f=ls /var/spool/asterisk/outgoing | wc -l
    if [ “$count_f” -eq “30” ]; then
    sleep 10
    return 0
    else
    return 1
    fi
    }
    count_files
    done
    done < /var/…/nomera.txt
    exit 0

    #12939
    Frumberg
    Участник

    С предыдущей задачей справился, вроде не так сложно как оказалось:) а вот по следующей задаче есть вопросы!

    мы позвонили нашему внутреннему абоненту, он не ответил, System(/../test.sh) в экстеншене

    ПУСТИТЕ ГОЛУБЯ С ТЕКСТОВЫМ ФАЙЛОМ С БУМАЖКОЙ ПРИВЯЗАННОЙ К ЛАПЕ

    #12940
    Amon_R90
    Участник

    не успел дописать, вот необходимые строчки(выше).

    #12941
    Amon_R90
    Участник

    С созданием файлов разобрался и добавлением в них соответствующих CALLERID(num)…
    Ошибки в синтаксисе и в семантике допустил.
    Теперь буду решать вопрос о корректном создании и исполнении .call файлов

    #12942
    abadk
    Участник

    Скорее всего вопрос доступа к папкам и сам файл должен иметь статус исполняемого.
    Попробуйте запустить из командной строки файл sh. Выполняется ли?
    Делает все как надо?

    #12959
    Amon_R90
    Участник

    Скорее всего вопрос доступа к папкам и сам файл должен иметь статус исполняемого.

    Да, после создания файлов типа *.sh делаю их исполняемыми(chmod +x ). в командной строке все запускается. Теперь файл у меня создается с номером звонившего(сделал с помощью echo из диалплана). Теперь другая проблема возникла:

    Когда создаю .call файл(не с помощью скрипта), перемещаю его в outgoing, то все получается, создается канал, идет вызов, все хорошо.

    Когда делаю с помощью скрипта, то возникают проблемы:
    1) перед тем как оборвать связь(hungup), командой system я запускаю скрипт на создание .call-файла(выше), он создает, и после завершения вызова в логе астериска пишет что номер занят(не может перезвонить). – следовательно как то нужно поменять время создания .call-файла(создать еще один скрипт что ли?).

     User ended message by pressing #
        -- <SIP/701-0000008a> Playing 'auth-thankyou.slin' (language 'ru')
        -- Recording was 0 seconds long but needs to be at least 4 - abandoning
        -- Executing [703@internal:7] Goto("SIP/701-0000008a", "scrtest,s,1") in new stack
        -- Goto (scrtest,s,1)
        -- Executing [s@scrtest:1] System("SIP/701-0000008a", "echo "701" >> /var/spool/asterisk/temp1234/701.txt") in new stack
        -- Executing [s@scrtest:2] System("SIP/701-0000008a", "/var/spool/asterisk/test_call_list.sh") in new stack
        -- Auto fallthrough, channel 'SIP/701-0000008a' status is 'BUSY'
    

    В данном случае я в ручную прописывал путь к моему 701.txt файлу(в нем номер звонившего) в конце скрипта, где done < var/spool/../701.txt , это если статика. Но ведь каждый раз прописывать в скрипте в ручную путь к
    тому файлу – это нонсенс, зачем тогда скрипт спрашивается,и поэтому из этого вытекает вторая проблема :

    2) я не знаю как сделать, что бы в скрипте в конце, где команда (done < var/../ЁЁЁ.txt) на месте ЁЁЁ – было имя того .txt-файла который создавался ранее(в нем номер звонившего), то есть мой CALLERID, который в шапке скрипта написан.

    Еще раз приведу код:

    [internal] 
    exten => _XXX,1,Dial(SIP/${EXTEN},10)          
    same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)  
    same => n(unavail),VoiceMail(${EXTEN}@voicemail,u)              
    same => n,GoTo(scrtest,s,1)
    same => n,Hangup()                                              
    same => n(busy),VoiceMail(${EXTEN}@voicemail,b)
    same => n,GoTo(scrtest,s,1)                     
    same => n,Hangup()                                              
    
    exten => 1,1,VoiceMailMain(${CALLERID(num)}@voicemail)          
    same => n,Hangup()                                              
    
    [scrtest]
    exten => s,1,System(echo "${CALLERID(num)}" >> /var/spool/asterisk/temp1234/${CALLERID(num)}.txt)
    exten => s,n,System(/var/spool/asterisk/test_call_list.sh)
    
    [out_voicemessage]                                              
    ;exten => failed,1,Set(NumberDialed=${CUT(PassedInfo,,1)})
    ;exten => failed,n,SetCDRUserField(${NumberDialed})
    exten => s,1,Answer                                             
    exten => s,n,Wait(2)                
    exten => s,n,Background(/var/lib/asterisk/sounds/vm-youhave)    
    exten => s,n,Background(/var/lib/asterisk/sounds/vm-INBOX)
    exten => s,n,Background(/var/lib/asterisk/sounds/vm-message)
    exten => s,n,Hangup 
Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Для ответа в этой теме необходимо авторизоваться.