ในตอนนี้เราจะเก็บข้อมูล users (extensions) ในฐานข้อมูล mariadb แล้ว freeswitch server จะใช้

โมดูล mod_xml_rpc ดึงข้อมูลนี้มาใช้งาน ผ่าน web server + mariadb

 

1. ติดตั้ง mariadb server

#apt install mariadb-server mariadb-client

#mysql_secure_installation

 

2. ติดตั้ง adminer เพื่อจัดการ mariadb ผ่านหน้าเว็บ

#apt install apache2 php libapache2-mod-php php-curl php-cli php-mysql php-gd

#wget "http://www.adminer.org/latest.php" -O /var/www/html/adminer.php

#chown www-data.www-data /var/www/html/adminer.php

#chmod 755 /var/www/html/adminer.php

 

3. Set password สำหรับ 'root'@'localhost'

#mysql -urooot -p

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost'=PASSWORD("new_password");

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> exit;

เปิด web browser connect ไปที่

http://192.168.10.250/adminer.php

System = MySQL

Server = localhost

Username = root

Password = new_password

Database = mysql

 

4. ใช้ adminer สร้างฐานข้อมูล freeswitch, table directory, user fsuser, password fspassword ตามรายละเอียดข้างล่าง

 

 

5. แก้ไฟล์ get_directory.php ในตอนที่แล้ว ให้เป็นตามนี้

===============

<?php

 

$con=mysqli_connect("localhost","fsuser","fspassword","freeswitch");

 

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

  exit();

}

 

$sql = "SELECT number, domain, password, name, myvar1, myvar2, myvar3 FROM directory ORDER BY number";

$users = mysqli_query($con,$sql);

 

?>

 

<document type="freeswitch/xml">

    <section name="directory">

        <domain name="192.168.10.250">

            <params>

                <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})$

            </params>

            <groups>

                <group name="default">

                    <users>

                        <?php

                            foreach($users as $user) {

                        ?>

                        <user id="<?php echo $user['number']; ?>">

                            <params>

                                <param name="password" value="<?php echo $user['password']; ?>"/>

                                <param name="vm-password" value="<?php echo $user['myvar1']; ?>"/>

                            </params>

                            <variables>

                                <variable name="accountcode" value="<?php echo $user['myvar2']; ?>"/>

                                <variable name="user_context" value="default"/>

                                <variable name="effective_caller_id_name" value="<?php echo $user['name']; ?>"/>

                                <variable name="effective_caller_id_number" value="<?php echo $user['number']; ?>"/>

                                <variable name="outbound_caller_id_name" value="<?php echo $user['name']; ?>"/>

                                <variable name="outbound_caller_id_number" value="<?php echo $user['number']; ?>"/>

                                <variable name="mySuperVariable" value="<?php echo $user['myvar3']; ?>" />

                            </variables>

                        </user>

                        <?php } ?>

                    </users>

                </group>

            </groups>

        </domain>

    </section>

</document>

 

<?php 

// Free result set

mysqli_free_result($users);

mysqli_close($con);

?>

===============

 

6. ทดสอบ

register โทรศัพท์ 2 เครื่อง เข้ากับ freeswitch server extension = 1000 และ extension = 1001

แล้วลองโทรหากัน