Adrenalin\’s Blog

Martie 1, 2010

Bip la telefon din linie de comandă

Filed under: Unix, voip — Adrenalin @ 13:35

Prima zi de primăvara, dispoziție bună am decis să fac niște share.

Sa zicem ca avem nevoie să putem suna la un telefon prin linia de comandă, se poate chiar de făcut play la un fisier audio (poate chiar creat dinamic cu un sintetizator de voce) cînd se ridică telefonul, dar p/u necesitățile mele și cîteva sunete îmi sunt suficiente ca să-mi atragă atenția ;) Apropo este posibilitate să trimiteți SMS-uri din linie de comandă prin HTTP&curl (dacă cineva e interesat, pot povesti, e mai ieftin de cît să cumpărați monitorizare si alerte sms).
Asta ne-ar permite să facem alerte automatizate cînd ceva serios se întîmplă. Plus beepurile nu cheltuie banii.

De ce avem nevoie:

  • Voip client linie de comandă, PJSUA (care intră în componeța pachetului PJSip)
  • Cont la vre-un VOIP provider cu SIP, dacă aveți vre-un cont la vre-o unu deja, cautați la ei pe site undeva setările SIP, exemplu voipdiscount, setări. Dacă veți dori să sunați pe fix, evident că va trebui să puneți ceva pe cont.

Instalarea PJSUA

Așa deci să începe cu instalarea PJSUA, dacă nu aveți în sistemul de pachete, pjsip nu are multe dependențe deaceea se instalează ușor. [ref]

wget http://www.pjsip.org/release/1.0.1/pjproject-1.0.1.tar.bz2
bzip2 -d pjproject-1.0.1.tar.bz2
tar xvf pjproject-1.0.1.tar
cd pjproject-1.0.1
./configure
make dep
make
sudo make install
sudo cp ./pjsip-apps/bin/pjsua-i686-pc-linux-gnu /usr/local/bin/pjsua

Configurarea PJSUA

Creați undeva un fișierul de configurare, exemplu în /etc/sip.cfg [man pjsua] și puneți asta în el:

--id sip:utilizator_voip_discount@sip.voipdiscount.com
--registrar sip:sip.voipdiscount.com
--realm *
--username utilizator_voip_discount
--password parola_voip_discount

Acum ca să sunăm pe cineva pe fix:
/usr/local/bin/pjsua --app-log-level=3 --config-file /etc/sip.cfg --null-audio --max-calls 1 sip:+373...@sip.voipdiscount.com

Automatizare prin utilizarea expect

Acum de exemplu ca să punem receptorul peste 12 secunde, de menționat că pînă se conectează trece ceva timp, deaceea in 12 secunde se include si timpul de conectare la sip server, vom avea nevoie de expect, scriptul de mai jos se execută ca și un script bash, puneți-l în bip.sh de exemplu:

#!/usr/bin/expect --
set timeout 15
set addr [lindex $argv 0]
spawn /usr/local/bin/pjsua --app-log-level=3 --config-file /etc/sip.cfg --null-audio --max-calls 1 sip:+373...@sip.voipdiscount.com
sleep 12
send "h\n"
expect {
"DISCONNCTD" {
exit
}
timeout {
send "h\n"
exit
}
eof {
exit
}
}

pjsua e un client interactiv in linie de comanda, h semnifică punerea receptorului. În mod normal timeout-ul de la expect trebuie sa trimită la timeout-ut asta, dar din motive neclare nu prea merge, deaceea fac cu sleep și apoi send care merge.
Apropo expect e un tools genial p/u automatizare.

Îl făcem executabil
chmod +x bip.sh
Executăm cu nr-ul la care dorim să făcem bip
./bip.sh +373…@sip.voipdiscount.com

Acum nu vă rămîne să apelați bip.sh din careva alt script cînd se întîmplă ceva.

Idee de ameliorare a scriptului de mai sus. Se poate de afișat mai multe detalii la conectare (scotind app-log-level), expect are o functie care se cheama expect, astfel el poate astepta pentru anumit cuvint chee pentru a continua, astfel inainte de sleep putem astepta anumit mesaj de conectare.

Mai multe exemple cu pjsua p/u play la audio și combinat cu nagios găsiți aici.

Acum veți afla primul dacă s-a întîmplat ceva, chiar și la 2 de noapte ;o)

Anunțuri

2 comentarii »

  1. ca sa mearga trebuie ca fixul sa fie si el voice over ip? nu poti suna la orice numar? de exemplu pe mobil

    Comentariu de maz loo — Noiembrie 4, 2010 @ 23:00

  2. @max, orice numar, doar ca tre sa ai minute pe voipdiscount.com

    Comentariu de ADrenalin — Noiembrie 17, 2010 @ 9:48


RSS feed for comments on this post. TrackBack URI

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

Creează un sit web gratuit sau un blog la WordPress.com.

%d blogeri au apreciat asta: