2017-08-20 9 views
0

私は、AGIを使用してアスタリスクでPythonスクリプトを実行するためにオンラインチュートリアルを使用しました。しかし、それは返す、アスタリスクAGIのPythonスクリプトが完了し、0を返す

AGI Script easy.py completed, returning 0 

私はデバッグモードを有効にし、出力を得ました。

AGIのデバッグは、私が電話を受信したときに、私が得たものである上記のコード

== Using SIP RTP TOS bits 184 
== Using SIP RTP CoS mark 5  
-- Executing [[email protected]:1] Answer("SIP/OBITRUNK1-0000000b", "") 
in new stack 
-- Executing [[email protected]:2] AGI("SIP/OBITRUNK1-0000000b", "easy.py") in new stack  
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_request: easy.py 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000b 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_language: en 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_type: SIP 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_uniqueid: 1503228907.11 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_version: 13.15.0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callerid: 0713029474 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_calleridname: unknown 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingpres: 0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingani2: 0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callington: 0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingtns: 0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_dnid: 0112617769 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_rdnis: unknown 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_context: from-trunk 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_extension: 0112617769 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_priority: 2 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_enhanced: 0.0 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_accountcode: 
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_threadid: 1956721696 
<SIP/OBITRUNK1-0000000b>AGI Tx >>  
-- <SIP/OBITRUNK1-0000000b>AGI Script easy.py completed, returning 0  
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000b' status is 'UNKNOWN' 
-- Executing [[email protected]:1] Answer("SIP/OBITRUNK1-0000000b", "") in new stack 
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000b' 
== Using SIP RTP TOS bits 184 
== Using SIP RTP CoS mark 5  
-- Executing [[email protected]:1] Answer("SIP/OBITRUNK1-0000000c", "") 
in new stack 
-- Executing [[email protected]:2] AGI("SIP/OBITRUNK1-0000000c", "easy.py") in new stack  
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_request: easy.py 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000c 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_language: en 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_type: SIP 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_uniqueid: 1503228913.12 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_version: 13.15.0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callerid: OBITRUNK1 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_calleridname: unknown 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingpres: 0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingani2: 0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callington: 0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingtns: 0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_dnid: 0112617769 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_rdnis: unknown 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_context: from-trunk 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_extension: 0112617769 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_priority: 2 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_enhanced: 0.0 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_accountcode: 
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_threadid: 1980019744 
<SIP/OBITRUNK1-0000000c>AGI Tx >>  
-- <SIP/OBITRUNK1-0000000c>AGI Script easy.py completed, returning 0 
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000c' status is 'UNKNOWN'  

-- Executing [[email protected]:1] Answer("SIP/OBITRUNK1-0000000c", "") in new stack 
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000c' 
== Using SIP RTP TOS bits 184 

を可能にしました。また、私が解決したい3つの問題があります。

問題

1)これは

AGI Script easy.py completed, returning 0 

を示しそして、私は理由を知りません。オンラインフォーラムが提案したように、私はeasy.pyの場所を/var/test/easy.pyに変更しましたが、うまくいきませんでした。だから私はそれが私が期待するものを与えないので、これを解決したい。

これはeasy.pyのコードです。

#!/usr/bin/env python 
import sys 
from asterisk.agi import * 

agi = AGI() 
agi.verbose("python agi started") 
callerId = agi.env['agi_callerid'] 
agi.verbose("call from %s" % callerId) 
while True: 
    agi.stream_file('vm-extension') 
    result = agi.wait_for_digit(-1) 
    agi.verbose("got digit %s" % result) 
    if result.isdigit(): 
    agi.say_number(result) 
    else: 
    agi.verbose("bye!") 
    agi.hangup() 
    sys.exit() 

2)電話が鳴ると、easy.pyが2回実行されたことがわかります。 (これは2回しか表示されますが、呼び出し音が鳴っているときはループで実行されます)。私はその解決策を見つけることができませんでした。また、2番目のループから、calleridがOBITRUNK1として表示されます。

3)このコードが実行されると、私の固定電話機の呼び出し音は止まりますが、extensions.confファイルからコードを削除して標準のextensions.confコードを置くと、普通のような固定電話が鳴ります。

注::これは間違っています。しかし、extensions_custom.confに拡張機能を追加しても機能しなかったので、extensions.confファイルを変更しました。実際には、AGIの動作時にextensions.confファイルがどのように見えるかを以下に示します。

extensions.confファイル

from trunk: 
[from-trunk] 
exten => _X.,1,Answer() 
exten => _X.,n,AGI(/var/test/easy.py) 

は、誰かが私を助けることができると思います。私はいくつかのウェブサイトや書籍でそれらの解決策を見つけようとしましたが、運がありませんでした。ありがとうございました。

答えて

1

これは、スクリプトにエラー(構文またはその他)があることを意味します。

デバッグはsotoppicですのでご注意ください。デバッグスクリプト、最初のピットストップのアスタリスク

asterisk -rx "core stop now" 

については

その後、あなたのコンソール

asterisk -vvvvgc 

でそれを起動し、

+0

ありがとう呼び出します。私はこれらのコードを実行しようとしましたが、 "そのようなコマンドはありません"というエラーが表示されました。 – sam1234

+0

それから、アスタリスク(あなたのシステム上にあるものはsafe_asterisk.sh、アスタリスクバイナリをkill)を停止し、コンソールから起動してください。問題は:agiスクリプトからのエラーはSTDERRハンドルになり、アスタリスク自体はアスタリスクコンソールで表示されません。 – arheops

+0

ありがとうございます。私はあなたが言ったことをして、アスタリスク-vvvgcが働いた。しかし、残念ながら私はこれらの問題を抱えています。それでも私の質問で言及したものは存在します。助けてください – sam1234

関連する問題