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

Не получается запустить python скрипт из System

Добавлено: 11 май 2016, 10:39
natrox
Здравствуйте,

С помощью call файла делаю вызов на внутренний SIP номер:

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

Channel: SIP/117
Callerid: TEST CALL
RetryTime: 20
MaxRetries: 1
WaitTime: 30
Context: from-obzvon
Extension: s
Кусок диалплана:

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

[from-obzvon]
exten => s,1,System(/usr/bin/python3.2 /home/test.py)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n,Hangup
код скрипта на питоне для примера:

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

text = 'Привет мир!'

out = open('/home/out.txt','w')
out.write(text)
out.close()
В CLI вижу следующее:

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

asterisk*CLI>
    -- Executing [s@from-obzvon:1] System("SIP/117-00000fe1", "/usr/bin/python3.2 /home/test.py") in new stack
    -- Executing [s@from-obzvon:2] Answer("SIP/117-00000fe1", "") in new stack
    -- Executing [s@from-obzvon:3] Wait("SIP/117-00000fe1", "1") in new stack
    -- Executing [s@from-obzvon:4] Hangup("SIP/117-00000fe1", "") in new stack
  == Spawn extension (from-obzvon, s, 4) exited non-zero on 'SIP/117-00000fe1'
[May 11 15:28:49] NOTICE[5608]: pbx_spool.c:366 attempt_thread: Call completed to SIP/117
Скрипт не выполняется. Через консоль в системе, /usr/bin/python3.2 /home/test.py выполняется без проблем. Я как понимаю проблема в том что прав не хватает? На файлы права полные(0777) дал, не помогло. Подскажите как найти причину проблемы? Не понимаю что не так делаю. За ранее спасибо

Re: Не получается запустить python скрипт из System

Добавлено: 11 май 2016, 10:46
ded
Не надо через System.
Положите его в директорию agi-bin где лежат у Астериска исполняемые скрипты и вызывайте через AGI

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

*CLI> core show application Agi

  -= Info about application 'AGI' =- 

[Synopsis]
Executes an AGI compliant application. 

[Description]
Executes an Asterisk Gateway Interface compliant program on a channel. AGI
allows Asterisk to launch external programs written in any language to control
a telephony channel, play audio, read DTMF digits, etc. by communicating with
the AGI protocol on *stdin* and *stdout*. As of '1.6.0', this channel will
not stop dialplan execution on hangup inside of this application. Dialplan
execution will continue normally, even upon hangup until the AGI application
signals a desire to stop (either by exiting or, in the case of a net script,
by closing the connection). A locally executed AGI script will receive SIGHUP
on hangup from the channel except when using DeadAGI. A fast AGI server will
correspondingly receive a HANGUP inline with the command dialog. Both of theses
signals may be disabled by setting the ${AGISIGHUP} channel variable to 'no'
before executing the AGI application.
Use the CLI command 'agi show commands' to list available agi commands.
This application sets the following channel variable upon completion:
${AGISTATUS}: The status of the attempt to the run the AGI script text string,
one of:
    SUCCESS
    FAILURE
    NOTFOUND
    HANGUP

[Syntax]
AGI(command[,arg1[,arg2[,...]]])

Re: Не получается запустить python скрипт из System

Добавлено: 11 май 2016, 10:51
Wapo
Запуск идет из астера - а сам-то астер от имени кого запущен. Из консоли-то понятно, что рут выполняет.
И еще - проверьте наличие ПОЛНЫХ путей к скриптам, права на сами папки где что лежит.

Re: Не получается запустить python скрипт из System

Добавлено: 11 май 2016, 10:56
natrox
Спасибо. Через AGI заработало, вот только не понятно почему через System не получилось, ну да ладно.

Re: Не получается запустить python скрипт из System

Добавлено: 11 май 2016, 11:00
natrox
Wapo писал(а):Запуск идет из астера - а сам-то астер от имени кого запущен. Из консоли-то понятно, что рут выполняет.
И еще - проверьте наличие ПОЛНЫХ путей к скриптам, права на сами папки где что лежит.
Я все понял. Права на исполнение нужно было давать пользователю от которого астер запущен. Тема закрыта. Всем спасибо