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

 

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

#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