AsteriskThailand
February 08, 2012, 01:42:42 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: ขอเรียนถามเรื่อง เขียน php ให้แสดง user online หน่อยครับ  (Read 1915 times)
tumrmutk
Newbie
*
Posts: 3


View Profile Email
« on: January 25, 2008, 06:10:38 PM »

ขอเรียนถามเรื่อง เขียน php ให้แสดง user online หน่อยครับ
คือว่า ผมอยากจะเขียน เวปเพจที่จะให้แสดงสถานะของ  user อ่ะครับ
ตอนนี้ผมลองเขียนแบบนี้
############################################
echo "<br>";
echo "(sip show peers)";
echo "<tr><td><pre>";
$back=`/usr/sbin/asterisk -rx 'sip show peers'`;
echo "$back";
echo "</pre></td></tr></table>";
############################################
ได้ผลดังนี้
(sip show peers) Name/username              Host            Dyn Nat ACL Port     Status               
106001                     (Unspecified)    D   N      0        UNKNOWN             
105999                     (Unspecified)    D   N      0        UNKNOWN             
105888                     (Unspecified)    D   N      0        UNKNOWN             
105777                     (Unspecified)    D   N      0        UNKNOWN             
105555                     (Unspecified)    D   N      0        UNKNOWN             
105338                     (Unspecified)    D   N      0        UNKNOWN             
105308                     (Unspecified)    D   N      0        UNKNOWN             

 บนหน้าเวปอ่ะครับ
*แต่ผมอยากได้เพียงว่า เบอร์ไหน on หรือ off อยู่อ่ะครับ
ขอบขอบคุณมาล่วงหน้านะครับ

Logged
Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #1 on: January 25, 2008, 07:34:13 PM »

ใช้วิีธีตัดคำครับ แนะนำให้ใช้ร่วมกับ regular expression จะช่วยให้ง่ายขึ้นเยอะครับ Smiley

อีกทางเลือกหนึ่ง  ลองใช้ผ่าน phpAGI ไหมครับ  เชื่อมผ่าน AMI อีกทีหนึ่ง
Quote

1     <?php
2     /**
3       * @package phpAGI_examples
4       * @version 2.0
5       */
6     
7       require_once('../phpagi-asmanager.php');
8     
9       if(!isset($_SERVER['argv'][1]))
10      {
11        echo "Usage:\t{$_SERVER['_']} {$_SERVER['argv'][0]} peer\n\n";
12        exit;
13      }
14   
15      $asm = new AGI_AsteriskManager();
16      if($asm->connect())
17      {
18        $peer = $asm->command("sip show peer {$_SERVER['argv'][1]}");
19        if(!strpos($peer['data'], ':'))
20          echo $peer['data'];
21        else
22        {
23          $data = array();
24          foreach(explode("\n", $peer['data']) as $line)
25          {
26            $a = strpos('z'.$line, ':') - 1;
27            if($a >= 0) $data[trim(substr($line, 0, $a))] = trim(substr($line, $a + 1));
28          }
29          print_r($data);
30        }
31   
32        $asm->disconnect();
33      }
34    ?>
ตัวอย่างจาก examples_sip_show_peer.php ลองประยุกต์ดูครับ Smiley


Logged

tumrmutk
Newbie
*
Posts: 3


View Profile Email
« Reply #2 on: January 25, 2008, 08:16:41 PM »

ก่อนอื่นต้องขอขอบคุณ K. patrickz อย่างมากครับที่ตอบคำถามผม
แต่บอกตรงๆ นะครับว่าผมดูแล้ว ไม่รู้เรื่องเนื่องจากผมไม่ค่อยเก่งเรื่อง php สักเท่าไรอ่ะครับ
ลองเอาโค๊ดไปใช้แล้ว
<?php
/**
* @package phpAGI_examples
* @version 2.0
*/
 
      require_once('../phpagi-asmanager.php');
     
     if(!isset($_SERVER['argv'][1]))
    {
     echo "Usage:\t{$_SERVER['_']} {$_SERVER['argv'][0]} peer\n\n";
       exit;
     }
 
  $asm = new AGI_AsteriskManager();
      if($asm->connect())
   {
    $peer = $asm->command("sip show peer {$_SERVER['argv'][1]}");
   if(!strpos($peer['data'], ':'))
       echo $peer['data'];
     else
      {
     $data = array();
        foreach(explode("\n", $peer['data']) as $line)
       {
       $a = strpos('z'.$line, ':') - 1;
           if($a >= 0) $data[trim(substr($line, 0, $a))] = trim(substr($line, $a + 1));
       }
         print_r($data);
       }
   
$asm->disconnect();
}
   ?>

มันขึ้น error ว่า
Warning: require_once(../phpagi-asmanager.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/html/sip show peer_99.php on line 7

Fatal error: require_once() [function.require]: Failed opening required '../phpagi-asmanager.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/sip show peer_99.php on line 7

 รบกวน K. patrickz ช่วยเหลือหน่อยนะครับ
Logged
Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #3 on: January 26, 2008, 06:58:46 AM »

require_once('../phpagi-asmanager.php');
ขาดไฟล์นี้ครับ...  ผมให้ link phpAGI  ไปแล้ว ลอง download มาใช้ครับ
ถ้า PHP ไม่แข็ง เดี่ยวจะมีเรือง socket สำหรับการติดต่อกับ AGI, AMI อีก เพราะ phpAGI ก็ไม่ได้มีทุกๆคำสั่งครับ Smiley
Logged

Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #4 on: January 28, 2008, 04:24:54 PM »

<?PHP
$peers = <<<DATA
106001                     (Unspecified)    D   N      0        UNKNOWN             
105999                     (Unspecified)    D   N      0        UNKNOWN             
105888                     (Unspecified)    D   N      0        UNKNOWN             
105777                     (Unspecified)    D   N      0        UNKNOWN             
105555                     (Unspecified)    D   N      0        UNKNOWN             
105338                     (Unspecified)    D   N      0        UNKNOWN             
105308                     (Unspecified)    D   N      0        UNKNOWN   
         
DATA;

preg_match_all("/^(\d*)\s*(\(\w*\))\s*(\w)\s*(\w)\s*(\d*)\s*(\w*)/m", $peers, $result, PREG_PATTERN_ORDER);
print_r($result);
?>


ผลลัพท์
Code:
Array
(
    [0] => Array
        (
            [0] => 106001                     (Unspecified)    D   N      0        UNKNOWN
            [1] => 105999                     (Unspecified)    D   N      0        UNKNOWN
            [2] => 105888                     (Unspecified)    D   N      0        UNKNOWN
            [3] => 105777                     (Unspecified)    D   N      0        UNKNOWN
            [4] => 105555                     (Unspecified)    D   N      0        UNKNOWN
            [5] => 105338                     (Unspecified)    D   N      0        UNKNOWN
            [6] => 105308                     (Unspecified)    D   N      0        UNKNOWN
        )

    [1] => Array
        (
            [0] => 106001
            [1] => 105999
            [2] => 105888
            [3] => 105777
            [4] => 105555
            [5] => 105338
            [6] => 105308
        )

    [2] => Array
        (
            [0] => (Unspecified)
            [1] => (Unspecified)
            [2] => (Unspecified)
            [3] => (Unspecified)
            [4] => (Unspecified)
            [5] => (Unspecified)
            [6] => (Unspecified)
        )

    [3] => Array
        (
            [0] => D
            [1] => D
            [2] => D
            [3] => D
            [4] => D
            [5] => D
            [6] => D
        )

    [4] => Array
        (
            [0] => N
            [1] => N
            [2] => N
            [3] => N
            [4] => N
            [5] => N
            [6] => N
        )

    [5] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
            [3] => 0
            [4] => 0
            [5] => 0
            [6] => 0
        )

    [6] => Array
        (
            [0] => UNKNOWN
            [1] => UNKNOWN
            [2] => UNKNOWN
            [3] => UNKNOWN
            [4] => UNKNOWN
            [5] => UNKNOWN
            [6] => UNKNOWN
        )

)

ป.ล. แต่มันก็ไ่ม่ใช่วิธีที่ดีหรอกนะ :/
« Last Edit: January 28, 2008, 04:37:47 PM by Patrickz » Logged

Patrickz
Global Moderator
Sr. Member
*****
Posts: 274


View Profile WWW
« Reply #5 on: January 29, 2008, 02:11:47 PM »

ปรับแก้ใหม่ sip peers คุณ tumrmutk  คงไม่ได้ทดสอบใช้งานจริง   sip peers ผมเป็นแบบนี้
ดังนั้นใช้ pattern ^(\S*)\s*(\S*)\s*(\S)\s*(\S)\s*(\S*)\s*(\S*)/m แน่นอนกว่า
<?PHP
$peers = <<<DATA
MySIPGateway/1234567        192.168.10.10               5060     Unmonitored
7002/7002                  192.168.10.11     D   N      63120    UNREACHABLE
7001                       (Unspecified)    D   N      0        UNKNOWN
7000/7000                  192.168.10.25     D   N      30716    OK (103 ms)           
DATA;

preg_match_all("/^(\S*)\s*(\S*)\s*(\S)\s*(\S)\s*(\S*)\s*(\S*)/m", $peers, $result, PREG_PATTERN_ORDER);
print_r($result);
?>
Logged

tumrmutk
Newbie
*
Posts: 3


View Profile Email
« Reply #6 on: January 31, 2008, 05:26:17 PM »

ผมขอบคุณ K.Patrickz มากเลยนะครับ
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.12 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
SEM | Asterisk | สถานที่ท่องเที่ยว | สัมมนา SEM