Страница 1 из 4

ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 01:09
dimashkarin
Приветствую всех присутствующих!!
Есть задача! При ответе внутреннем абонентом на входящий вызов, создавать текстовой файл с записью CallerID И внутренним номером ответившим на звонок.
Сделано так:
[dostavka2]


exten => _X.,1,Dial(SIP/501,5)
exten => _X.,n,system(touch /var/call.txt)
exten => _X.,n,system(echo "${CALLERID(name)}-${EXTEN}" >> /var/dostavka/"${EXTEN}".txt)
exten => _X.,n,Wait(15)
exten => _X.,n,system(mv /var/dostavka/call301.txt /var/dostavka/old/call301.txt)
exten => _X.,n,Hangup()

естественно как задумано не работает((

Подскажите пожалуйста КУДА КОПАТЬ!

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 01:17
ded
Открываете CDR - call distribution records (он в текстовом формате) - /var/log/asterisk/cdr-csv/Master.csv
и уже получаете там всё что нужно.
Это же -

Код: Выделить всё

[dostavka2]

exten => _X.,1,Dial(SIP/501,5)
exten => _X.,n,system(touch /var/call.txt)
exten => _X.,n,system(echo "${CALLERID(name)}-${EXTEN}" >> /var/dostavka/"${EXTEN}".txt)
exten => _X.,n,Wait(15)
exten => _X.,n,system(mv /var/dostavka/call301.txt /var/dostavka/old/call301.txt)
exten => _X.,n,Hangup()
закопайте скорей, и никому не показывайте, ОК?

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 01:27
dimashkarin
:lol:
Спасибо!
А как реализовать через контекст?

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 01:48
dimashkarin
Запись в cdr-master производится после окончания разговора, а нужно получить запись после ответа на входящий звонок

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 06:04
Sfinx
Через AMI можно - отслеживать событие Answer и нумерацию в Channelx.

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 09:18
Aven
Ну есть же опции приложения Dial.

Код: Выделить всё

    G([[context^]exten^]priority): If the call is answered, transfer
    the calling party to the specified <priority> and the called party to
    the specified  <priority> plus one.
    NOTE: You cannot use any additional action post answer options in
    conjunction with this option.

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 09:53
dimashkarin
К сожалению AMI использовать нельзя.

На практике с макросом в итоге получилось:

Код: Выделить всё

Called SIP/501
    -- SIP/501-000000f3 is ringing
    -- Nobody picked up in 5000 ms
    -- Executing [78126400011@dostavka2:5] Wait("SIP/westcall-out-000000f2", "15") in new stack
    -- Executing [78126400011@dostavka2:6] System("SIP/westcall-out-000000f2", "mv /var/dostavka/call301.txt /var/dostavka/old/call301.txt") in new stack
    -- Executing [78126400011@dostavka2:7] Hangup("SIP/westcall-out-000000f2", "") in new stack
  == Spawn extension (dostavka2, 78126400011, 7) exited non-zero on 'SIP/westcall-out-000000f2'
    -- Executing [h@dostavka2:1] Macro("SIP/westcall-out-000000f2", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/westcall-out-000000f2", "1?endmixmoncheck") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] NoOp("SIP/westcall-out-000000f2", "End of MIXMON check") in new stack
    -- Executing [s@macro-hangupcall:10] GotoIf("SIP/westcall-out-000000f2", "1?nomeetmemon") in new stack
    -- Goto (macro-hangupcall,s,28)
    -- Executing [s@macro-hangupcall:28] NoOp("SIP/westcall-out-000000f2", "End of MEETME check") in new stack
    -- Executing [s@macro-hangupcall:29] GotoIf("SIP/westcall-out-000000f2", "1?noautomon") in new stack
    -- Goto (macro-hangupcall,s,34)
    -- Executing [s@macro-hangupcall:34] NoOp("SIP/westcall-out-000000f2", "TOUCH_MONITOR_OUTPUT=") in new stack
    -- Executing [s@macro-hangupcall:35] GotoIf("SIP/westcall-out-000000f2", "1?noautomon2") in new stack
    -- Goto (macro-hangupcall,s,41)
    -- Executing [s@macro-hangupcall:41] NoOp("SIP/westcall-out-000000f2", "MONITOR_FILENAME=") in new stack
    -- Executing [s@macro-hangupcall:42] GotoIf("SIP/westcall-out-000000f2", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,45)
    -- Executing [s@macro-hangupcall:45] GotoIf("SIP/westcall-out-000000f2", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,48)
    -- Executing [s@macro-hangupcall:48] GotoIf("SIP/westcall-out-000000f2", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,50)
    -- Executing [s@macro-hangupcall:50] AGI("SIP/westcall-out-000000f2", "hangup.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
    -- <SIP/westcall-out-000000f2>AGI Script hangup.agi completed, returning 0
    -- Executing [s@macro-hangupcall:51] Hangup("SIP/westcall-out-000000f2", "") in new stack

Но все равно пока не то.
Файл создается сразу же после поступления звонка, а хотелось бы после ответа вн. абонента 501
И хотелось бы что бы в файле была запись о принимавшем звонок абоненте. Типа 78121234567-501

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 10:16
Vlad1983
изучаем синтаксис

Код: Выделить всё

asterisk -rx "core show application Dial"

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 10:23
Aven
Я уже конкретную опцию показал, но этого видимо мало....

Re: ЗАПУСК КОМАНДЫ SYSTEM ПОСЛЕ ПОДНЯТИЯ ТРУБКИ!

Добавлено: 24 май 2013, 10:28
Vlad1983
сейчас не в опциях дела а в синтаксисе самого Dial
switch в примере возможно намеренно ввел в заблуждение чтоб мозг включали