一、OS環境:
服務器:CentOS Linux release 7.2.1511 (Core)
聲卡 :
[root@localhost ~]# lspci |grep -i audio 00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
安裝包 :
首先去pjsip官網http://www.pjsip.org/download.htm下載安裝包,我下載的是pjproject-2.7.2.tar.bz,下載地址:http://www.pjsip.org/release/2.7.2/pjproject-2.7.2.tar.bz2
二、安裝步驟
解壓
cd /media/ tar -xjvf pjproject-2.7.2.tar.bz2
進入安裝目錄源碼編譯
cd pjproject-2.7.2/ ./configure make dep make make install
編譯完成后目錄如下
三、PJSUA的使用
1、簡單點對點
- 啟動: $ ./pjsua
- 呼叫:$ ./pjsua sip:192.168.0.10
- 默認端口:5060
2、向服務器注冊
單帳戶注冊:
- $ ./pjsua --id sip:alice@example.com --registrar sip:example.com
- --realm * --username alice --password secret
多帳戶注冊:
- $ ./pjsua --id sip:bob@provider1.com --registrar sip:provider1.com
- --realm provider.1.com --username bob --password secret
- --next-account
- --id sip:bob@provider2.com --registrar sip:provider2.com
- --realm provider2.com --username bob --password secret
3、自動應答並播放wav文件
- $ pjsua --play-file PROMPT.WAV --auto-answer 200 --auto-play --auto-loop
- --max-calls 100
4、從文件加載:
文件(alice.cfg)內容:
- # This is a comment in the config file.
- --id sip:alice@example.com
- --registrar sip:example.com
- --realm *
- --username alice
- --password secret
使用:
$ ./pjsua --config-file alice.cfg
四、執行撥打測試
編寫test.cfg文件
cd /media/pjproject-2.7.2/pjsip-apps/bin vi test.cfg
注:123456為分機號碼 / 192.168.2.11 為注冊服務器ip 8823824 為分機密碼 ,編碼使用g711
--id sip:123456@192.168.2.11
--registrar sip:192.168.2.11
--realm *
--username 123456
--password 8823824
--add-codec G711
--null-audio
--auto-loop
寫好配置文件后執行,再輸入號碼撥打測試即可
cd /media/pjproject-2.7.2/pjsip-apps/bin ./pjsua-x86_64-unknown-linux-gnu --config-file test.cfg
光標處輸入需要撥打的手機號碼,格式如下
sip:手機號碼@192.168.2.11
五、編寫腳本,做計划任務做自動呼叫
直接貼執行腳本
注:1.wav為上傳的一個語音文件,主要用於接通后播放這個錄音文件,"sleep"表示間隔時間(單位:毫秒)
#!/bin/bash pkill -9 pjsua DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" /usr/bin/expect <<-EOF set timeout 30 spawn $DIR/pjsua --config-file $DIR/15094938.cfg --play-file $DIR/1.wav expect "*registration success*" send "sleep 5000\n" send "m\n" send "sip:1234567890@192.168.2.11\n" expect "*CONFIRMED*" #expect "*DISCONNECTED*" send "sleep 10000\n" send "quit\n" interact expect eof EOF
計划任務執行
00 08 * * * /mnt/test/15094938.sh|tee /mnt/test/logs/`date +\%d`d_15094938.log
參考資料:http://www.shuyangyang.com.cn/jishuliangongfang/qitajishu/2013-07-01/90.html
https://www.cnblogs.com/yangmingxianshen/p/7967040.html
http://codingstandards.iteye.com/blog/833695