Friday, September 25, 2009

New version for Tenora Conference application

Citind pe lista Asterisk-users despre o incercare de instalare a uni dialpan de tip n-way mi-am facut timp saptamana aceasta sa sa ma uit peste aplicatia de conferinte pe care o avem instalata pe centrala noastra (Centos+Asterisk+FreePBX).

Este adevarat ca nu am facut prea multe verificari ale acestei aplicatii cand am facut upgrade-ul de la Asterisk 1.2 la 1.4 insa acum am vazut ca aveam o problema in partea de log: variabila de canal ${TIMESTAMP} nu mai este disponibila in versiunea1.4a astfel incat a trebuit sa o inlocuiesc cu ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.

Toata partea care tine de log a fost rescrisa si am adaugat facilitatea unui participant de tip administrator de a putea introduce in conferinta un alt participant, care va fi apelat de catre centrala Asterisk. Aceasta facilitate a fost ceruta de mai mult timp insa deabia acum a putut fi implementata.

Initial am configurat in [applicationmap] secventele "*9" (pentru introducere in conferinta) si "*7" (pentru renuntare) insa testele facute ulterior au (re)adus in discutie faptul ca transmiterea de DTMF-uri prin reteaua GSM este intarziata.

Cu alte cuvinte: transmiterea unei secvente DTMF este intarziata la fiecare cod cu un delay de aproximativ 1.5-2 secunde. Aceasta face ca secventa "*9" sa fie interpretata de Asterisk ca doua secvente distincte "*" si "9", cele doua DTMF-uri fiind detectate separat rezultatul final fiind ca sistemul nu va executa codul de dialplan dorit. Aceasta problema nu afecteaza citirea unor variabile (Read), unde exista posibilitatea setarii numarului maxim de digiti si a unui timer de inactivitate.

Log Asterisk pentru citirea unei variabile (100)
[Sep 25 12:41:10] DEBUG[21921] chan_dahdi.c: DTMF digit: 1 on DAHDI/20-1
[Sep 25 12:41:12] DEBUG[21921] chan_dahdi.c: DTMF digit: 0 on DAHDI/20-1
[Sep 25 12:41:13] DEBUG[21921] chan_dahdi.c: DTMF digit: 0 on DAHDI/20-1
[Sep 25 12:41:14] DEBUG[21921] chan_dahdi.c: DTMF digit: # on DAHDI/20-1

Log Asterisk pentru receptionarea secventei DTMF *9 tastata de pe un telefon mobil
[Sep 24 17:42:36] DEBUG[13098] channel.c: Got DTMF begin on channel (DAHDI/26-1)
[Sep 24 17:42:36] DEBUG[13098] chan_dahdi.c: DTMF digit: * on DAHDI/26-1
[Sep 24 17:42:36] DEBUG[13098] channel.c: Got DTMF end on channel (DAHDI/26-1)
[Sep 24 17:42:38] DEBUG[13098] channel.c: Got DTMF begin on channel (DAHDI/26-1)
[Sep 24 17:42:38] DEBUG[13098] chan_dahdi.c: DTMF digit: 9 on DAHDI/26-1
[Sep 24 17:42:38] DEBUG[13098] channel.c: Got DTMF end on channel (DAHDI/26-1)

Desigur ca primul pas ar fi fost sa verific daca exista un timer pentru "Features Applications" si pe care sa-l pot mari insa abordarea a fost mai simpla: schimbarea secventele mentionate mai sus prin eleiminarea unui digit ("*"). Testele efectuate ulterior au aratat ca aceasta schimbare (secvente cu un singur cod DTMF) a fost benefica.

Explicatia este ca DTMF-urile se transmit de telefoanele mobile in mod OUT-BAND catre MSC-uri iar acestea transmite informatia IN-BAND. Rata de transmise din MSC este fixa, astfel incat daca utilizatorul introduce o secventa DTMF mai rapida, tonurile corspunzatoare codurilor DTMF vor fi injectate in canalul audio cu pauza setata in MSC. In masura in care voi gasi mai multe informatii le voi adauga ulterior.

Continuind cu verificarea codului s-a observat ca modul in care se facea inregistrarea discutiilor purtate in camera de conferinta virtuala era gresit. Apelul aplicatiei de conferinta (MeetMe) utiliza optiunea "r" pentru fiecare participant. Cand se intra in camera de conferinta se activa optiunea de inregistrare a convorbirilor intr-un fisier, numele acestuia fiind personalizat. Insa daca acel participant "iese" mai devreme / "intra" mai tarziu din/in conferinta, inregistrarea va fi trunchiata. Ca sa nu mai vorbim de aspectul ca vor fi mai multe inregistrari (pentru fiecare participant), multe dintre ele fiind in paralel - deci o incarcare suplimentara a sistemului.

Este clar ca aceasta abordare a fost gresita si am schimbat-o prin renuntarea la optiunea "r" pentru fiecare participant si introducerea in conferinta a unui participant fals. Acesta va fi de tip "listen" (doar ascultare) si va fi singurul ce va inregistra conferinta, pana la sfarsitul ei. Sfarsitul acesteia se face cand ultimul participant iese din camera de conferinta. Pentru a fi sigur ca ceva nu scapa de sub control s-a limitat la 3600 de secunde (1 ora) durata maxima a inregistrarii pe care utilizatorul fals o face.

Nu pot decat sa sper ca noua versiune (0.6) va fi mult mai folosita decat pana acum.

Wednesday, September 16, 2009

How to read/change the ISO volume ID

Am cautat destul de mult timp un utilitar Linux de tip CLI (Command Line Interface) care sa ma ajute sa modific eticheta unui disk CD/DVD (label sau volume ID). Scopul era sa incrementez un contor pentru a putea tine evidenta cate rescrieri fac pe un disk de tip RW.

Daca pentru partea de citire am gasit utilitarul isoinfo (care face parte din pachetul cdrecord) nu am reusit sa rezolv partea de scriere. Dupa cautari insistente am gasit un script in perl care citeste informatiile de identificare (primary volume descriptor) dintr-un fisier de tip iso. Plecand de la acest script am reusit sa rezolv si partea de scriere.

Scriptul se poate descarca de aici iar modul de apelare este urmatorul:
isolabel [iso_file/device] [read/write] [new_label]
Orice fel de observatii sau comentarii sunt binevenite.

Tuesday, September 15, 2009

Totul are un inceput

Ziua mea de nastere, inceputul de an scolar plus ceva timp liber au reusit sa ma faca sa ajung si eu in lumea blog-urilor. Probabil nu o sa supravietuiesc prea mult insa totul are un inceput.

De mult vroiam sa pot sa impartasesc, mai usor decat pe site-ul meu, unele dintre ideile/proiectele la care lucrez sau diferitele "peripetii" prin care am trecut pana acum. Asa ca astazi am trecut la "atac" iar primul pas a fost sa recuperez blog-ul creat acum ceva timp si pe care nu am postat niciodata.

Al doilea pas - sa-i gasesc un titlu. Nu m-am gandit prea mult si am venit cu prima propunere: E pur si muove! Dar supriza: titlue este folosit deja de altcineva (ce surpriza - chiar si template-ul seamana - probabil luna Septembrie ne-a inspirat pe amandoi) astfel incat trebuie sa ma gandesc din nou. Nu depun armele si vin cu a doua propunere: Always there is a solution!

18:20 - deja intarzii acasa - iar cei doi copii ai mei probabil ma asteapta nerabdatori ca sa iasa cu bicicletele/rolele pe afara. Asa cum am scris in titlu - totul are un inceput astfel incat de azi sper sa adaug macar o inregistrare pe saptamana.