Внутренняя голосовая почта в Asterisk
Сервисы Общения › Форумы › Общие вопросы › Внутренняя голосовая почта в Asterisk
Помечено: Asterisk, внутренняя сеть., Голосовая почта
- В этой теме 8 ответов, 4 участника, последнее обновление 8 лет назад сделано Amon_R90.
-
АвторСообщения
-
20.10.2016 в 18:14 #12707Amon_R90Участник
Всем привет!=) Недавно начал свое знакомство с астером(в связи с устройством на работу), и соответственно с осью Cenos7 на которую его установил, много непонятного, но это понятно почему, опыта пока мало(
Дали 1е задание создать пару абонентов и наладить между ними связь через софтфоны, получилось, разобрался. Дали следующее задание: настроить голосовую почту среди этих абонентов(в общем внутренняя сеть). Просмотрел много мануалов, там почти во всех говорится о ГП с выходом в интернет, а если и говорится о локальной ГП, то только вскользь(и что показывать об этом инфу не видят смысла//*все такие умные, ну..*//..)
Так вот, прошу, помогите мне! Подскажите как настроить голосовую почту внутри локальной сети? Напр: Если в кампании много отделов, и с одного отдела звонят в другой, не получают ответ, то оставляют голосовое сообщение…
P.S. я нуб в определениях в астере, но это пока что, так что попрошу Вас отнестись с пониманием.
Большое спасибо!!20.10.2016 в 21:14 #12708DemonУчастниксамое простое за 3 минуты гугления: https://allevich.com/2013/12/10/asterisk_vm/
за это отвечает voicemail.conf, mailbox в пире и команды в диалплане.
22.10.2016 в 20:13 #12716Amon_R90УчастникСпасибо большое!
21.11.2016 в 03:48 #12938Amon_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: 1EOF
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 021.11.2016 в 04:07 #12939FrumbergУчастникС предыдущей задачей справился, вроде не так сложно как оказалось:) а вот по следующей задаче есть вопросы!
мы позвонили нашему внутреннему абоненту, он не ответил, System(/../test.sh) в экстеншене
ПУСТИТЕ ГОЛУБЯ С
ТЕКСТОВЫМ ФАЙЛОМС БУМАЖКОЙ ПРИВЯЗАННОЙ К ЛАПЕ21.11.2016 в 04:25 #12940Amon_R90Участникне успел дописать, вот необходимые строчки(выше).
21.11.2016 в 10:07 #12941Amon_R90УчастникС созданием файлов разобрался и добавлением в них соответствующих CALLERID(num)…
Ошибки в синтаксисе и в семантике допустил.
Теперь буду решать вопрос о корректном создании и исполнении .call файлов21.11.2016 в 11:10 #12942abadkУчастникСкорее всего вопрос доступа к папкам и сам файл должен иметь статус исполняемого.
Попробуйте запустить из командной строки файл sh. Выполняется ли?
Делает все как надо?25.11.2016 в 03:41 #12959Amon_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
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.