RE: [PHP] asterisk with php
| From: | hadi | Date: | Wed, 22 Jul 2015 20:01:50 +0000 |
| Subject: | RE: [PHP] asterisk with php | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325014@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: Jigar Dhulla [mailto:jigar.tidus@gmail.com]
> Sent: Wednesday, July 22, 2015 10:26 PM
> To: hadi
> Cc: php-general@lists.php.net General
> Subject: Re: [PHP] asterisk with php
>
> On Wed, Jul 22, 2015 at 11:51 PM, hadi <almarzuki2011@hotmail.com> wrote:
>
> > Hi,
> >
> > I have project, Asterisk with phpagi, when I pass variable to function
> > I get error "Notice: Undefined variable: pin".
> >
> > Here is my code
> >
> >
> >
> > #!/usr/local/bin/php -q
> > <?php
> >
> > error_reporting(E_ALL);
> > ini_set('display_errors', 1);
> >
> > require("phpagi.php");
> > require("database.php");
> >
> >
> >
> >
> >
> > $agi=new AGI();
> >
> >
> >
> > $agi->answer();
> >
> >
> > for ($x = 0; $x <= 3; $x++)
> > {
> >
> >
> >
> >
> > $result = $agi->get_data('/var/lib/asterisk/agi-bin/ivr-sound1', 3000,
> > 20);
> >
> >
> > $pass = $result['result'];
> >
> >
> > $query = $conn->prepare("SELECT COUNT(*) FROM userinfo where
> > pin=:pin"); $query->bindParam(':pin', $pass);
> >
> > $query->execute();
> >
> > $num_rows = $query->fetchColumn();
> >
> > if($num_rows == 1)
> >
> >
> >
> >
> > {
> > $agi->text2wav("thankyou");
> >
> >
> >
> > $agi->text2wav("please enter number to dial for more information press
> > zero");
> >
> >
> > $num = $agi->exec("Read","pin,,4,3,120");
> >
> > $temp = $agi->get_variable("pin");
> >
> > $pin = trim($temp["data"]);
> >
> > global $pin;
> >
> > break;
> >
> > }
> >
> >
> > if ($x == 3)
> >
> > {
> > $agi->hangup();
> >
> > }
> >
> > }
> >
> >
> >
> >
> > dialout($pin);
> >
> >
> > function
> >
> > dialout($pin)
> >
> > {
> >
> >
> >
> > $agi=new AGI();
> >
> > $agi->exec_dial("SIP/$pin");
> >
> > $Answeredtime = $agi->get_variable ("ANSWEREDTIME");
> >
> > $agi->hangup ();
> >
> >
> > }
> >
> >
> >
> >
> > ?>
> >
> >
> >
> >
> > --
> > PHP General Mailing List (http://www.php.net/) To unsubscribe, visit:
> > http://www.php.net/unsub.php
> >
> >
> Hi,
>
> That "Notice" means you are trying to use/access that variable even though it
> is not yet defined/set.
>
> Looking at your code, if I am not wrong *$pin* is defined only when
> *$num_rows == 1, *right ? Hence, when
> *dialout($pin) *is called *$pin *will remain undefined in other cases, so the
> notice(this is just one of the possibility).
>
> So the best solution is to use *isset($pin) *where you think *$pin *can be
> not defined/set.
>
>
> *if(isset($pin) && !empty($pin)){*
>
> * dialout($pin);*
> *}*
>
> Also in production/live environment, don't forget to suppress the notice
> *error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT &
> ~E_DEPRECATED); *you might not want your users to see those notice or
> warning. Avoid suppressing such things in development environment.
> Looking at your code, if I am not wrong *$pin* is defined only when
> *$num_rows == 1, *right ?
Yes your right..
When I do "var_dump($pin)" at the beginning of the function it show the variable correct.
But when I do "var_dump($pin)" after "$agi=new AGI();" it show nothing.
I think "$agi=new AGI();" it wipe out my "$pin" variable....