от Дафчо Табаков (dafo)(5-08-2004)

рейтинг (53)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Съдържание
  • Преди всичко
  • Необходими програми
  • Инсталиране
  • Работа
  • Полезни връзки

  • Понякога се налага да отсъстваме от дома или по обясними причини да изключим звъненето на всякакви телефони. За да не се изплъзнат повикванията много често се използва телефонен секретар. В това ръководство няма да става дума за секретарка със стройно и пищно тяло, а как Линукс може да ни помогне в офиса и у дома като услужливо приема телефонни обаждания. При наличието на различни некомутируеми достъпи до Интернет, често старият dial-up модем прашясва на някой слот или е захвърлен в смачкан кашон. В повечето случаи тези модеми имат data,fax и voice функции.
    Няма да се впускам в подробности как се инсталира модем под Linux има достатъчно документи в мрежата. За повече информация вижте Modem HOWTO. Най-облагодетелствани сме собствениците на външни модеми. Моят е Acorp 33600 , включва се в серийния порт и е доста стар. Освен модем и UNIX-like операционна система ни трябва и Perl - мощен език, който повечето дистрибуции инсталират по подразбиране.

    Най-лесно можем да разберем дали модемът поддържа voice е като използваме minicom програмата.
    Примерен код на bash
    $minicom
     Въвеждаме AT+FCLASS=?
     Резултатът 8 (80) показва, че има гласови функции.



    Необходими програми:

    Софтуерът, който върши черната работа е mgetty+sendfax, в който има и vgetty програмата, която осъществява voice функциите. Може да се изтегли от тук.
    Понеже vgetty е конзолно приложение, ще използваме графична програма за по-голямо удобство. Програмата, на която съм се спрял е VOCP, интернет адресът е http://www.vocpsystem.com.
    Това е гъвкав софтуер с много възможности - обслужване на факсове, гласова поща, известяване с e-mail, text-to-speech функции, възможност за проверяване на пощата през цифров телефон, както и web.

    Стига с хвалбите, сега сериозната част.


    Няма нужда да се инсталират поотделно mgetty и VOCP. С помощта на Perl скрипт (VOCP е основно съвкупност от мощни perl скриптове) се компилира „закърпена“ версия на vgetty. Стъпките се следните :
    Разархивираме VOCP, примерно в /tmp
    $tar -xjf VOCP-0.9.3.tar.bz2 -C /tmp

    Превключваме на потребител-администратор
    $su
     Password: .....

    След това се предвижваме до папката със скрипта
    #cd /tmp/vocp-0.9.3/prog/dependencies/mgetty-patch/

    и стартираме файла
    #./install_patched_vgetty.pl

    Ако има преди това инсталирани Mgetty/vgetty излиза предупреждение, потърсете дали нямате подобен пакет софтуер на твърдия диск. Премахнете го със съответните за дистрибуцията инструменти.
    Ако не се открият mgetty инсталаторът пита за пътя до mgetty source, така че го въведете
    /path/to/mgetty-1.1.30.tar.gz

    Последва компилиране и въпрос дали да се инсталира „закърпената“ версия на m/vgetty, като се отговаря „Y“
    Необходими са някои настройки, които се правят ръчно. Отваря се файлът /usr/local/etc/mgetty+sendfax/voice.conf Нещата, които ни интересуват са:
    voice.conf
    voice_devices посочете правилното ttyS устройство (модем - ttyS0, ttyS1, HCF/HSF имат подобни устройства)
     
     voice_shell сложете пътя до perl (напр. /usr/bin/perl)
     
     call_program сложете VOCP стартиращия файл( /usr/local/vocp/bin/vocp.pl)
     
     rings брой позвънявания, след които модемът отговаря.

    Може да разгледате останалата част на файла, има много коментари, които обясняват настройките. Ако сте любознателни, хвърлете едно око и на mgetty.config в същата директория.
    Остава да включим vgetty при стартирането на системата. Това става като се добави подобен ред в /etc/inittab:
    /etc/inittab
    s1:345:respawn:/usr/local/sbin/vgetty ttyS0 (ttyS е за COM1, за вашия случай може да е друго)

    Изпълняваме командата
    #init q

    …и остава да разберем дали е vgetty работи:
    #ps waux|grep vgetty
     Резултатът трябва да е подобен на това:
     root      3240  0.2  0.2  1628  680 ?        Ss   22:23   0:00 /usr/local/sbin/vgetty ttyS0

    Тестване на vgetty:
    Примерен код на bash
    #vm devicetest
     
     Test Dialup Line, Int. Mic. and Int. Speaker: not supported by vm/vgetty-modemdriver
     Test Dialup Line, Ext. Mic. and Ext. Speaker: not supported by vm/vgetty-modemdriver
     Test Dialup Line and Local Handset: not supported by vm/vgetty-modemdriver
     Test Dialup Line and Int. Speaker: not supported by vm/vgetty-modemdriver
     Test Dialup Line and Ext. Speaker: not supported by vm/vgetty-modemdriver
     Test Local Handset: OK
     Test Int. Speaker: OK
     Test Ext. Speaker: not supported by vm/vgetty-modemdriver
     Test Int. Microphone: not supported by vm/vgetty-modemdriver
     Test Ext. Microphone: OK
     Test Dialup Line: OK
     Test No Device: OK

    От резултатът става ясно, че може да записвам от външен микрофон, а да просвирвам от вътрешният говорител на модема.
    Тестване с готов файл (Този го намерих от LICQ-http://www.licq.org)
    #wavtopvf Online.wav test.pvf
     Reading Wave file: Microsoft PCM format, 1 channel, 11025 samp/sec
     11025 byte/sec, 1 block align, 8 bits/samp, 15873 data bytes
     
     #pvftormd Rockwell 4 test.pvf test.rmd
     pvftormd: Unsupported sample speed (11025)
     pvftormd: Rockwell modems only support 7200 samples per second

    В този случай има нужда от промяна на честотата на семплиране, за да се конвертира в rmd файл
    #pvfspeed -s 7200 test.pvf tess.pvf

    Накрая се конвертира успешно
    #pvftormd Rockwell 4 tess.pvf test.rmd

    Просвирваме през говорителя на модема
    #vm play -d 6 test.rmd

    За подробности по параметрите на vm и другите команди, стартирайте с -h и четете внимателно.

    Тестване чрез запис пред микрофон. Микрофонът е включен в модема.
    Примерен код на bash
    #vm record -d 3 rec.rmd
     Записът се прекъсва с CRTL+C или ако се укаже дължина с параметъра -L (брой секунди)

    Просвирването е аналогично
    Примерен код на bash
    #vm play -d 6 rec.rmd

    Тестване през звуковата карта:
    Примерен код на bash
    #rmdtopvf test.rmd | pvfspeed -s 8000 | pvftobasic > /dev/audio

    Трябва да се чуе записът през изхода на звуковата карта.

    Ако нещо не е наред прегледайте журналните файлове - /var/log/vm.log и /var/log/vgetty.ttySX


    Остава да се инсталират VOCP приложенията, които действат като обвивка и улесняват потребителя с графичен интерфейс. За да работи нормално са необходими няколко Perl модула, описани в документацията на VOCP.
    Примерен код на bash
    # cd /tmp/vocp-0.9.3/
     # perl ./install_vocp.pl
    Пита се дали сте съгласни с GNU/GPL лицензът, след това има въпрос за тип на инсталацията. Изберете 1 (full install) ако инсталирате за първи път.
    Следва въпрос къде е програмата pvftormd, ако горните стъпки за m/vgetty са изпълнени по подразбиране е в /usr/local/bin.
    После се пита за тип модем и вид компресия. При мен е Rockwell 4, вашият може да е различен.
    Ако получавате грешки от рода на :
    /usr/bin/pvftormd: Unsupported sample speed (8000)
     /usr/bin/pvftormd: Rockwell modems only support 7200 samples
    то е необходимо да се конвертира честотата на семплиране на звуковите файлове
    Примерен код на bash
    #perl modify_sample_rate.pl XXXX /usr/local/bin
     XXXX е необходимата честота, например 7200 
     Последният аргумент показва къде се намира pvfspeed командата

    След успешното конвертиране се стартира инсталационният скрипт отново
    # perl ./install_vocp.pl

    И се отговаря пак на същите въпроси аналогично.

    Идва времето и на Perl модулите:
    Module: Audio::DSP ...         FOUND.
     Module: Crypt::Blowfish ...    FOUND.
     Module: Crypt::CBC ...         FOUND.
     Module: MIME::Parser ...       FOUND.
     Module: Modem::Vgetty ...      FOUND.
     Module: Tk ...                 FOUND.
     Module: Tk::JPEG ...           FOUND.
     Module: XML::Mini ...          FOUND.

    Ако не бъдат открити необходимите Perl модули, има възможност автоматично чрез CPAN да се инсталират или ръчно. Изборът е изцяло ваш, добре е да имате всичките тези модули, за да работят различните функции на VOCP.
    Примерно Audio::DSP може да се инсталира така :
    Примерен код на bash
    #perl -MCPAN -e 'install Audio::DSP'

    Поредният въпрос е дали искате да използвате Text-to-speech, и има ли инсталиран Festival TTS Engine. Тук аз съм отговорил No, защото не съм се занимавал достатъчно с този тип софтуер засега.
    Следващият въпрос е какво да е името на групата, която ще се ползва за повишаване на сигурността. Аз съм избрал vocp.
    С това инсталацията приключва, остават леки настройки и пълноценно използване. Инсталираният софтуер се намира в /usr/local/vocp/.
    Конфигурационните файлове се намират в /etc/vocp. На първо време се редактира /etc/vocp/vocp.conf
    Важните параметри са
    pvftooldir /usr/local/bin
     
     rmdformat Rockwell
     
     rmdcompression 4
     
     rmdsample 8000
     
     programs email /usr/lib/sendmail
     
     email_attach_message 0
     
     message_in_email_format ogg

    Има добри коментари в самия файл, които улесняват избора на стойността на параметъра. Трябва да се имат в предвид настройките, които сме разбрали при самото инсталиране - тип модем, компресия, честота на семплиране и т.н. В моя случай стойностите са тези от таблицата по-горе, като не използвам mail server, така са по подразбиране.

    Преди да запуснем окончателно VOCP може да настроим пощенските кутии.

    Те са различни типове, като обяснения има в /usr/local/vocp/doc/box-types.txt, както и на страницата на продукта.
    Кутията по подразбиране е 001, което лесно може да се смени от /etc/vocp/vocp.conf
    За улеснение има графичен редактор на кутии:
    Примерен код на bash
    /usr/local/vocp/bin/boxconf.pl &

    Тук е онагледено :



    А тук са възможностите за настройки.
    Първо на кутия №001



    После на кутия 100, която всъщност е входящата за съобщения на моята машина.



    Настройките на кутиите по подразбиране са направени с цел да има различни възможности при обаждане - за смяна на езика, за изпращане на съобщение до пейджър и т.н. Ако не искате толкова сложна система при настройките на кутия 001 в полето AutoJump: пишете номера на кутия от mail тип. Така директно системата ще записва съобщения в този номер кутия.
    Това, което ще ни интересува е Message полето. В него се указва кое съобщение да се просвири при работа на тази кутия.
    Съобщенията се намират в директория /var/spool/voice/messages. Може да се запише поздрав по няколко варианта.
    Първият е да се запише със звуковата карта и после да се конвертира, както е описано при тестването на vgetty.
    Вторият е да се запише директно от модема (описанието пак е по-горе при тестването).
    Може да се запише и чрез телефона, като се обадите на телефонния си номер от друг телефон. За този вариант ще стане дума по-късно.
    Както се вижда на кутия №001 съм сложил съобщение greet.rmd, което гласи, че ме няма и ако искат да оставят съобщение на секретаря.
    Самият интерфейс е лек и функционален. Стартира се с :
    Примерен код на bash
    /usr/local/vocp/bin/xvocp.pl &
    Първо излиза прозорец, на който се пита за паролата на кутията. Това е важен момент, паролите могат да бъдат текст, цифри, да са криптирани с помощта на cryptpass.pl скрипта. Паролата е важна, заради възможността да се проверяват съобщенията от друг телефон и т.н.
    Секретарят изглежда така:


    …и има бутони за управление (просвирване на съобщение, изтриване и т.н.), за експортиране в ogg/mp3 и други, които ще разучите при използването на програмата.
    Друга полезна програма от пакета е CallCenter. Стартира се така:
    Примерен код на bash
    /usr/local/vocp/bin/callcenter.pl &


    По подразбиране е минимизирана, има бутони за стартиране на xVOCP, трансфер към VOCP, преглед на журналния файл с обажданията, стартиране на факс приложението VOCPhax. Ако имате CallerID, за което трябва да се плати допълнително на телекома ни, се изписва търсещият ни номер.
    Допълнителна екстра е, че може да се свържете със системата на отдалечена машина чрез secure shell:
    Примерен код на bash
    ssh -C потребител@име_на_машина /usr/local/vocp/bin/callcenter.pl
    Още малко за CallerID - ако имате включено и модемът го поддържа, то лесно могат да се направят филтри за входящите съобщения.
    Други възможности на VOCP са:
  • Изпращане и получаване на факсове, за което ще трябва сами да прочетете в документацията на проекта.
  • Възможност за проверка на съобщенията през web интерфейс. За целта трябва да има работещ web сървър, например Apache.
  • Проверяване на съобщения през телефон.
  • За целта се обадете на телефона, където слуша VOCP. Влезте в специалната кутия №999 като наберете 999 и после добавите знака #. Следва въпрос за номер на входяща кутия - в моя случай е 100 и после парола. Паролата може да е с букви и/или цифри, като в документацията подробно е описано как се въвеждат.
    Командите се въвеждат с клавишите на телефона:
    1XX   Просвирване на съобщение №XX
     3XX   Изтриване на съобщение XX
     5XX   Дата на съобщение XX
     7   Записване на  поздрав (за тази кутия)
     8   Слушане на поздрав
     9   Помощно съобщение
     0   Изход
    С комбинацията нула-нула се преглеждат/изтриват всички съобщения.

    В общи линии това е предостатъчно, за да имате пълноценен телефонен секретар и то без допълнителни разходи. Който иска да се занимава с допълнителните възможности на VOCP може да прочете съдържанието на директорията /usr/local/vocp/doc, както и да посети Интернет страницата на проекта http://www.vocpsystem.com

    Накрая, както винаги слагам връзки към места, където се намират програмите и помощ по въпроса.
    Mgetty - http://www.leo.org/~doering/mgetty
    VOCP - http://www.vocpsystem.com
    Modem HOWTO - http://www.tldp.org/HOWTO/Modem-HOWTO.html
    GOOGLE - http://www.google.com
    Apache - http://www.apache.org
    PERL - http://www.perl.org/
    CPAN - http://cpan.org
    Линукс за българи - http://www.linux-bg.org


    << IPv6. Не се плашете | Опазвайте ОС от инсталацията >>