Ответ в теме: Внутренняя голосовая почта в Asterisk
Сервисы Общения › Форумы › Общие вопросы › Внутренняя голосовая почта в Asterisk › Ответ в теме: Внутренняя голосовая почта в Asterisk
Скорее всего вопрос доступа к папкам и сам файл должен иметь статус исполняемого.
Да, после создания файлов типа *.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