私は最近、cakePHPを使用して構築されたアプリケーション用のアスタリスクベースのIVRを構築する必要がありました。PHPAGI CakePHP SHELLを使って
私はケーキ(脂肪)モデルを使いたいので、ビジネスロジックを書き直す必要はありません。
私は、アスタリスクダイヤルプランから呼び出されるcakePHPシェルを作成したかったのです。
ここに私がしたことがあります。
ダウンロードされたphpagiをvendors/phpagiにダウンロードしました。
修正phpagi.php
function AGI($config=NULL, $optconfig=array())
からに:
function AGI($config=NULL, $optconfig=array(), $stdin, $stdout)
ので、私は、標準入出力を設定することができます。ライン167の周りに私はまた
var $agi;
//redirect output through agi conlog
function err($message,$newlines = 1){
$this->agi->conlog($message);
}
function out($message, $newlines =1){
$this->agi->conlog($message);
}
//disable default message
function startup(){
}
を追加し、アプリケーションのコードが入っている
App::import('Vendor', 'AGI', array('phpagi/phpagi.php'));
追加vendors/shells
に私のシェルで
$this->in = $stdin;
$this->out = $stdout;
に
$this->in = defined('STDIN') ? STDIN : fopen('php://stdin', 'r');
$this->out = defined('STDOUT') ? STDOUT : fopen('php://stdout', 'w');
を変更しました
function main(){
$this->agi = new AGI(NULL, array(), $this->Dispatch->stdin,$this->Dispatch->stdout);
$this->agi->answer();
//do stuff here
}
とダイヤルプランでこれを実行するためにすべてを行う必要がある
exten => s,n,AGI(${full/path/to/cake.php},${shellname},-app,${var/www/html/{appname}/app},-console,var/www/html/{appname}/cake/console/)
はケーキのdirsのパーミッションを修正することを確認しています。
誰かがこれを行う方法が他にありましたか?
私はstdinとstdoutについて混乱しています。なぜこれを追加していますか? –
それはうまくいくのですか?私はDispatchがstdoutをつかむと思った。 – josephtikva1
私はあなたがargsを使うことができると信じている。 –