Hlasov� modem


Obsah


�vod

Hlasov� modem je b�n� modem, kter� nav�c um� p�ehr�vat do telefonn� linky digit�ln� zvukov� sign�l a tak� opa�n� p�ed�vat po��ta�i digitalizovan� zvuk z telefonn� linky. D�le umo��uje zvuky z linky rozpozn�vat (ticho, vyzv�n�c� a obsazovac� t�ny, DTMF t�ny). Pou��v� se p�edev��m jako telefonn� z�znamn�k. P�i p��choz�m hovoru software rozpozn�, jde-li o datov�, faxov� nebo hlasov� vol�n�. V posledn� jmenovan�m p��pad� pak do telefonu p�ehraje zpr�vu pro volaj�c� a umo�n� zanechat hlasov� vzkaz. Mezi nejzn�m�j�� oblu�n� programy pat�� vgetty (jako sou��st mgetty) nebo mvm.


Instalace vgetty

Po rozbalen� bal�ku zm�nit policy.h-dist na policy.h a podle pot�eb jej nakonfigurovat a spustit make. Pot� se p�epnout do adres��e voice a op�t spustit make. Nakonec spustit make install. Pokud instalujete z RPM-ka, naistalujte bal�ky mgetty-x.x.xx.rpm a mgetty-voice-x.x.xx.rpm.


Konfigurace

Voice.conf najdete bu� v /etc/mgetty nebo /etc/mgetty+sendfax. Pokud jste vgetty kompilovali, m��e se konfigura�n� soubor nach�zet v /usr/local/lib nebo /usr/local/etc. Nejd�le�it�j�� ��dky jsou


Hlasov� shell (vgetty)

Vgetty nav�e spojen� s volaj�c� stranou po $rings zazvon�n�ch a za�ne p�ehr�vat uv�tac� zpr�vu ($message_list ve voice.conf). P�i p�ehr�v�n� modem p�ed�v� p��choz� DTMF t�ny vgetty. Pokud vgetty dostane sekvenci *��sla#, jedn� se o DTMF p��kaz. V takov�m p��pad� p�estane p�ehr�vat �vodn� vzkaz a spust� $dtmf_program s parametrem ��sla (pokud je ve voice.conf specifikov�n). Dostane-li vgetty na vstup od modemu pouze ��slo, op�t p�estane p�ehr�vat a sna�� se nav�zat datov� spojen� a kdy� neusp�je, pokus� se je�te o faxov� spojen�. P�ijde-li pouze znak "#", vgetty jednodu�e zav�s�. Pokud b�hem p�ehr�v�n� nep�ijde ��dn� DTMF t�n, vy�le vgetty p�pnut� a za�ne nahr�vat vzkaz volaj�c�ho. N�hr�v�n� kon��, p�ijde-li DTMF t�n (jak je pops�no v��e, v takov�m p��pad� se nahr�n� zpr�va ma�e), pokud je p�ekro�eno $record_max_len nebo kdy� volaj�c� zav�s�. Po ukon�en� t�to procedury vgetty spust� $message_program (pokud je definov�n ve voice.conf) s n�zvem nahran� zpr�vy jako parametrem. Vgetty pojmenov�v� ka�dou nahranou zpr�vu jinak.


Hlasov� shell (vgetty)

Vgetty nav�e spojen� po $rings a spust� skript $call_program. Po ukon�en� tohoto skriptu vgetty pokra�uje podle n�vratov�ho k�du skriptu: P�i spu�t�n� skriptu mu vgetty p�ed� sv� PID (pou��v� se pro komunikaci) a d�le ��sla dvou deskriptor�, kter� ukazuj� na dv� roury, slou��c� ke komunikaci mezi vgetty a shellem. Shell pak m��e vgetty p�ed�vat sv� p��kazy pomoc� jednoduch�ho znakov�ho protokolu a naopak vgetty p�ed�v� shellu informace stavu linky. P�i psan� takov�ho skriptu si dejte pozor, aby ka�d� nahran� zpr�va dostala jin� jm�no.


Uv�tac� zpr�va

Uv�tac� zpr�va mus� b�t ve form�tu, kter�mu rozum� v� modem. Tak�e ji m��ete nahr�t bu� pomoc� mikrofonu p��kazem vm record -m soubor.rmdn nebo p�ev�st ji� existuj�c� zpr�vu do form�tu .rmd (pomoc� pvf tools).


Zdroje




P��klad hlasov�ho shellu (skriptu)

send "ENABLE EVENTS" ANSWER=`receive` if [ "$ANSWER" != "READY" ]; then echo "$0: something's wrong" >&2 exit 1 fi if [ -f demo.rmd ]; then send "PLAY demo.rmd" fi while true; do ANSWER=`receive` case $ANSWER in PLAYING) ANSWER=`receive` case $ANSWER in READY) send "PLAY demo.rmd";; RECEIVED_DTMF) send "STOP"; proc_dtmf;; BUSY_TONE) send "STOP"; receive; send "GOODBYE"; receive; exit 0;; FAX_CALLING_TONE) send "STOP"; receive; send "GOODBYE"; receive; exit 2;; esac;; esac done </plaintext></a></body></html>