AGIについてのお勉強①
<2018/1/14追記>新しくインストールしなおしたら権限周りが変わっているのでこの記事は過去のものになりました。 近いうちに新しく書き直します。
書き直しました。こちら
モーニングコールを扱うにはAGI(Asterisk Gateway Interface)を使う。
これはAsteriskから各種言語(java,perl,php,python)などを動かすためのもの。
WEBサーバーに対するCGIみたいなものという認識。
早速pythonでAGIを動かすチュートリアルをさらっとやってみると色々つまづいてしまったので情報共有。
参考にしたのはココ
AGI Scripting with Python | Redial
スクリプトの場所
/var/lib/asterisk/agi-bin
だけど別にどこにおいていてもOK。ただしその場合はフルパスをAGIに記載する
note: raspberry pi の場合は/usr/share/asterisk/agi-binだった。
ポイント:
実行する前にpythonの実行パスと改行コードを確認しておく
sudo su asterisk
で実行者になった後に
#test.pyがちゃんと動くかチェック cd /va/lib/asterisk/agi-bin ./test.py
これでbad interpreterと出た場合はpythonの実行パス(1行目の#!/usr/env/python
など)が間違えている。
実行パスはユーザー:asteriskになった後にpythonのインタプリタを起動。
import sys sys.executable
で取得できる。
使い方
使い方は
①extensions.confに追加する
②実行権限を付与する
③実行ユーザーをasteriskに変更する
extensions.conf
exten => 5,1,Answer(); exten => 5,n,AGI(test.py); # /home/scriptsにある場合はtest.pyを/home/scripts/test.pyと記述する
実行権限の付与
sudo chmod 755 /va/lib/asterisk/agi-bin/test.py
sudo chown asterisk:asterisk /var/lib/asterisk/agi-bin/test.py
また、
AsteriskをPythonで扱うためにpyst2を利用する。
pytst2はpythonのagiラッパーを含んでいる。
他にも色々機能があるらしいので勉強すること。
pip install pyst2
新しく