はじめての方へTrixbox CE2.6IP電話機IP電話サービスPHPAGI参考情報導入事例紹介
トップページ >PHPAGI

PHPAGI

AGIのstream_file、get_dataがうまく動かないときの対処(print、echo)

PHPAGIプログラムを久々に改良したところ、AGIのstream_file、get_dataが動かず、訳がわからず2日間もデバッグしてしまいました。

AGIのstream_file、get_dataがうまく動かないときは、次のことを疑ってみてください。

「プログラム中で、print、echoなど画面表示処理をしていないか?」

うまく動かないサンプルプログラムとAsterisk CLIのダンプです。

■うまく動かないphpプログラム(本当にうまく動かないので注意)
---
#!/usr/bin/php -q
<&php

//PHPAGI
require('phpagi.php');
$agi = new AGI();

print "sample program";

//音声を再生(filenameは拡張子を除去した音声ファイル名。#*プッシュでスキップ)
$result = $agi->stream_file("filename","#*");
if($result['result']==-1){
//回線切断時の処理
exit;
}

//音声を再生(filenameは拡張子を除去した音声ファイル名。#*プッシュでスキップ)
$result = $agi->stream_file("filename","#*");
if($result['result']==-1){
//回線切断時の処理
exit;
}

&>
---

■Asterisk CLIのダンプ(Asterisk -vvvvvvvvvrで起動)
---
AGI Rx << sample program
AGI Tx >> 510 Invalid or unknown command

AGI Rx << STREAM FILE filename "#*" 0
-- Playing 'filename' (escape_digits=#*) (sample_offset 0)

AGI Rx << STREAM FILE filename "#*" 0
-- Playing 'filename' (escape_digits=#*) (sample_offset 0)
AGI Tx >> 200 result=0 endpos=279975
---

510 Invalid or unknown command が表示されると、
その後、DTMFの入力が期待度通りに動きません。

エラー連発すると、律儀にその回数分だけ動きません。
そのおかげで原因を突き止めることができたのですが。

直接AGIを叩いている場合は気づくかもしれませんが、
PHPAGIなどを通してAGIを叩く場合、なかなか気づきません。

一度仕組みがわかれば、あ~なるほどね!・・・程度の問題なんですが、
わかるまでは・・・大変です。