send voice recording from freepbx

หลังจากทำระบบ โทรมา ไม่รับสายใน xxวินาที ให้โอนเข้าระบบฝากขอ้ความ จากนั้นให้ระบบ ส่งe-mail หาเจ้าของ extensions

อย่าลืมแก้

vi /etc/asterisk/vm_email.inc

เพื่อแก้ไขไม่ให้เกิดข้อความนี้

Visit http://AMPWEBADDRESS/recordings/index.php to check your voicemail with a web browser.

asterisk, Vtiger and hylafax on Debian lenny

Debian lenny

# lspci

01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 01)
04:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
04:02.0 Non-VGA unclassified device: Motorola Wildcard X100P

# cat /etc/apt/sources.list
deb ftp://ftp.debianclub.org/debian lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main
# aptitude update ; aptitude upgrade -y

Asterisk 1.8

# aptitude install bison ncurses-dev libssl-dev zlib1g-dev initrd-tools cvs procps libxml2-dev make build-essential linux-headers-$(uname -r) -y

1. LibPri
# cd /usr/src
/usr/src# wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.5.tar.gz
/usr/src# tar xvzf libpri-1.4.11.5.tar.gz
/usr/src# cd libpri-1.4.11.5
/usr/src/
libpri-1.4.11.5# make
/usr/src/libpri-1.4.11.5# make install
/usr/src/libpri-1.4.11.5# make install

2. DAHDI
# cd /usr/src
/usr/src# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.4.0+2.4.0.tar.gz
/usr/src# tar xvzf dahdi-linux-complete-2.4.0+2.4.0.tar.gz
/usr/src# cd dahdi-linux-complete-2.4.0+2.4.0
/usr/src/dahdi-linux-complete-2.4.0+2.4.0# make
/usr/src/dahdi-linux-complete-2.4.0+2.4.0# make install
/usr/src/dahdi-linux-complete-2.4.0+2.4.0# make config

3. Asterisk
# cd /usr/src
/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.2.2.tar.gz
/usr/src# tar xvzf asterisk-1.8.2.2.tar.gz
/usr/src# cd asterisk-1.8.2.2
/usr/src/asterisk-1.8.2.2# ./configure
/usr/src/asterisk-1.8.2.2# make
/usr/src/asterisk-1.8.2.2# make install
/usr/src/asterisk-1.8.2.2# make samples
/usr/src/asterisk-1.8.2.2# make config

# dahdi_genconf
#  dahdi_cfg -vv

asterickvtiger*CLI> core show version
Asterisk 1.8.2.2 built by root @ astiger on a i686 running Linux on 2011-01-25 10:22:42 UTC

Vtiger

vtiger CRM 5.2.1
# aptitude install binutils cpp flex gcc  libarchive-zip-perl libc6-dev libcompress-zlib-perl libpcre3 libpopt-dev lynx m4 make  ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev gcc libpng12-dev libjpeg62-dev libfreetype6-dev libssl-dev libxml2-dev libxml2 php5-mysql php5-imap php5-gd unzip php5 apache2 mysql-server libapache2-mod-auth-mysql  libapache2-mod-php5 php5-cli php5-common php5-cgi -y
# nano /etc/php5/conf.d/vtiger.ini
insert

; vTiger PHP configuration.
safe_mode                       = off
memory_limit                    = 64M
max_execution_time              = 600
output_buffering                = On
post_max_size                   = 18M
upload_max_filesize             = 10M
allow_call_time_pass_reference  = On
error_reporting                 = E_WARNING & ~E_NOTICE
; Unsecure vtiger recommendations.
; display_errors = On
; error_reporting = E_WARNING & ~E_NOTICE & ~E_DEPRECATED
; log_errors = Off

# mysql -u root -p

mysql> CREATE DATABASE vtiger DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL ON vtiger.* TO ‘vtigeruser’@’localhost’ IDENTIFIED BY ‘YourPassword’;

# cd /var/www
/var/www# wget “http://sourceforge.net/projects/vtigercrm/files/vtiger%20CRM%205.2.1/Core%20Product/vtigercrm-5.2.1.tar.gz/download”
/var/www# tar xvzf vtigercrm-5.2.1.tar.gz
/var/www# rm index.html
/var/www# mv vtigercrm/* .
/var/www# chown -R www-data:www-data /var/www/
/var/www# /etc/init.d/apache2 restart

Now open your browser and point to your ip-address or domain name 😉

Hylafax

กำลังเขียน

asterisk make uninstall

# make uninstall-all
rm -f /usr/lib/asterisk/modules/*
rm -f /usr/sbin/*asterisk*
rm -f /usr/sbin/astgenkey
rm -f /usr/sbin/autosupport
rm -rf /usr/include/asterisk
rm -rf /var/lib/asterisk/firmware
rm -f /usr/share/man/man8/asterisk.8
rm -f /usr/share/man/man8/astgenkey.8
rm -f /usr/share/man/man8/autosupport.8
rm -f /usr/share/man/man8/safe_asterisk.8
make -C sounds uninstall
make[1]: Entering directory `/usr/src/asterisk-1.6.2.0-rc3/sounds’
rm -rf /var/lib/asterisk/sounds
rm -rf /var/lib/asterisk/moh
make[1]: Leaving directory `/usr/src/asterisk-1.6.2.0-rc3/sounds’
rm -rf /usr/lib/asterisk
rm -rf /var/lib/asterisk
rm -rf /var/lib/asterisk
rm -rf /var/spool/asterisk
rm -rf /etc/asterisk
rm -rf /var/log/asterisk

ปัญหาเรื่องเสียงของ elastix เมื่อใช้ dynamic ip address

|

Q : คู่สนทนาไม่ได้ยินเสียงพูดของอีกฝ่ายเมื่อติดตั้ง elastix บน ADSL ที่เป็น dynamic IP.
A : เรื่องมันยาว…
โดยปกติเมื่อเราใช้งาน Elastix ที่มี ip จริง เราจะสามารถโทรหากันได้อย่างมีความสุขทั้งฝั่งโทรและฝั่งรับเสียงใสแจ๋ว
แต่เมื่อเราใช้บน ADSL ที่มี ip address เป็นแบบ dynamic ก็จะเกิดปัญหา ได้ยินมั่ง ไม่ได้ยินมั่ง หรือ ไม่ได้ยินเลย

หนึ่งในวิธีแก้ (ปัจจัยของ VoIP มีเยอะดังนั้นขอเรียกว่าเป็นหนึ่งในวิธีแก้)
คือ การทำให้ Elastix รู้จักว่าตัวเองมี ip address อะไรโดยแก้ไขค่า /etc/asterisk/sip_nat.conf

How-to

# vi /etc/asterisk/sip_nat.conf
ใส่ค่าเหล่านี้ลงไป
nat =yes
externip =58.8.8.8
localnet =192.168.1.0/255.255.255.0
qualify =yes
externrefresh =10

ค่า externip จะเป็น ip address ของเราที่ใช้อยู่ขณะนั้น โดยดูได้จากตัว router หรือ http://whatismyip.com
ค่า localnet ให้แก้ไขเป็นวง network ของ Elastix

จบ

แต่เนื่องจาก เราใช้ ADSL นั่นหมายความว่าทุกครั้งที่เรา disconnect แล้ว connect ใหม่ เราจะได้ ip address ใหม่
ดังนั้นเราจึงต้องทำ script สำหรับให้ Elastix เปลี่ยน ip address ให้โดยอัตโนมัติ

# touch /var/lib/asterisk/agi-bin/checkip.pl
# chown asterisk:asterisk /var/lib/asterisk/agi-bin/checkip.pl
# chmod 755 /var/lib/asterisk/agi-bin/checkip.pl
# vi /var/lib/asterisk/agi-bin/checkip.pl
ใส่ค่าเหล่านี้ลงไป

#!/usr/bin/perl
#
# This program gets the current IP address (as assigned by the ISP) from
# whatismyip.org and modifies /etc/asterisk/sip_nat.conf if the external IP
# address has changed. You can Use Webmin to install any missing Perl
# modules, and to invoke the script as cron job that runs every 5 minutes
#
use strict;
use warnings;
use WWW::Mechanize;
use Tie::IxHash;
use Data::Validate::IP qw(is_public_ipv4);
my $s_filepath = “/etc/asterisk/sip_nat.conf”;
my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get(‘http://whatismyip.com/automation/n09230945.asp’);
$mech->success or die ‘Cannot connect to http://whatismyip.com/automation/n09230945.asp’;
my ($ip) = ($mech->content() =~ /(\d+\.\d+\.\d+\.\d+)/);
if (is_public_ipv4($ip)) {
tie my %configvars, ‘Tie::IxHash’;
# The ‘fromdomain’ (& possibly ‘localnet’) values in the next line MUST be changed
%configvars = (‘nat’ => ‘yes’, ‘externip’ => ‘0.0.0.0’,’fromdomain’ => ‘foo.dyndns.com’,’localnet’ => ‘192.168.0.0/255.255.255.0’) ;
open IN,”<$s_filepath”;
while (my $i = ) {
chop $i;
if ($i =~ /=/) {
$i =~ s/\s//g;
my ($key,$value) = split /=/,$i;
$configvars{$key} = $value;
}
}
close IN;
if ($configvars{‘externip’} ne $ip) {
$configvars{‘externip’} = $ip;
open OUT,”>$s_filepath”;
while (my ($key, $value) = each %configvars) {
select OUT;
print “$key=$value\n”;
};
select STDOUT;
close OUT;
`/usr/sbin/asterisk -rx reload`;
};
};

แก้ไข foo.dyndns.com เป็น dynamic dns domain ที่จดไว้ เช่น sourcode.dyndns.org
แก้ไข 192.168.0.0/255.255.255.0 ให้เป็นวง network ของ Elastix

จากนั้น ทำการทดสอบ script
# cd /var/lib/asterisk/agi-bin
# perl checkip.pl

ซึ่งถ้ามันทำงาน มันจะไม่มีอะไรเกิดขึ้น
ซึ่งถ้าท่านผู้อ่านได้ลองทำตามยังไงก็ error แบบนี้

[email protected]:/var/lib/asterisk/agi-bin $ perl checkip.pl
Can’t locate WWW/Mechanize.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at checkip.pl line 11.
BEGIN failed–compilation aborted at checkip.pl line 11.
[email protected]:/var/lib/asterisk/agi-bin $

ถ้าเจอแบบข้างบนแสดงว่ามาถูกทางละ
ให้แก้ไขตามนี้

# yum install perl-Tie-IxHash.noarch
# yum install perl-Net-Netmask.noarch
# wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el5/en/ppc/RPMS.fabian/perl-Data-Validate-IP-0.10-1.el5.rf.noarch.rpm
# rpm -ivh perl-Data-Validate-IP-0.10-1.el5.rf.noarch.rpm

จากนั้นลองทดสอบอีกครั้ง
# cd /var/lib/asterisk/agi-bin
# perl checkip.pl

ครั้งนี้จะไม่เกิด error ละผ่านแน่นอน ถ้าไม่ผ่านให้ย้อนกลับไปทำอีกรอบ !
จากนั้นทำการสร้าง crontab เพื่อให้ script ทำงานทุกชั่วโมง

# crontab -e
ใส่ค่าเหล่านี้ลงไป
0 * * * * perl /var/lib/asterisk/agi-bin/checkip.pl >/dev/null 2>&1

เช็คเพื่อความถูกต้อง
# crontab -l
จะต้องได้ผลลัพย์ออกมาเป็น
0 * * * * perl /var/lib/asterisk/agi-bin/checkip.pl >/dev/null 2>&1

จบ

credit :
http://fonality.com/trixbox/forums/trixbox-forums/help/nat-problems-changed-sipnatconf-and-still-no-audio
http://adminschoice.com/crontab-quick-reference

How to make ystdm8xx work on elastix

อันเนื่องมาจาก blog ก่อนหน้าที่ลอง patch x100p กันไปปรากฏว่า dahdi มองเห็น x100p อย่างสวยงาม
แต่

มันไม่ทำงาน

มันเจอ hardware แต่พอโทรเข้ามันไม่มีการตอบสนอง
อย่ากระนั้นเลย เราลองใช้การ์ดตัวอื่นดีกว่า

ystdm8xx เป็นการ์ดราคาไม่แพงอีกใบหนึ่งที่ค้นเจอในโกดัง
แต่ก็เหมือน x100p ที่ elastix ไม่รู้จัก
นั่นหมายความว่าต้อง patch อีกแล้ว – -*

วิธีทำ

กดโหลดไปอ่านเองนะ http://www.yeastar.com/download/ystdm8xx_linux.pdf

..

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

อยากได้วิธีง่ายๆ ขี้เกียจอ่าน ?

# cd /usr/src

# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.2.0.2.tar.gz

# wget http://www.yeastar.com/download/ystdm-dahdi-2.2.0.2.patch.tar.gz

# tar xzf dahdi-linux-2.2.0.2.tar.gz

# tar xzf ystdm-dahdi-2.2.0.2.patch.tar.gz

# patch -p0 < ystdm-dahdi-2.2.0.2.patch

# cd dahdi-linux-2.2.0.2

# make uninstall

# make clean

# make

# make install

# reboot

จบ !

ปล. สูตรนี้ใช้ได้กับ ystdm16xx ด้วยนะ แค่เปลี่ยน file (หาอ่านดูใน credit นะ)

credit :
http://downloads.asterisk.org/pub/telephony/dahdi-linux/
http://www.yeastar.com/download/ystdm8xx_linux.pdf
http://www.yeastar.com/download/
http://bugs.elastix.org/print_bug_page.php?bug_id=55