Yado_tech

旅館+ITとはなんぞ

AGIについてのお勉強①

f:id:devilmakelie:20180109191549p:plain

<2018/1/14追記>新しくインストールしなおしたら権限周りが変わっているのでこの記事は過去のものになりました。 近いうちに新しく書き直します。

書き直しました。こちら

yadotech.hateblo.jp

モーニングコールを扱うには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

これで5にダイアルしたらスクリプトが実行されるハズ

また、 AsteriskPythonで扱うためにpyst2を利用する。
pytst2はpythonのagiラッパーを含んでいる。 他にも色々機能があるらしいので勉強すること。

pip install pyst2

新しく