Archive for May 2007

Asterisk2BillingDa poco, dopo piu o meno 1 anno di apparente fermo, e’ uscita la nuova versione 1.3 di questo software, una volta a2billing.

In tutto questo tempo il progetto non era morto come sembrava, ma semplicemente l’autore ha deciso di riordinare e riscrivere parti del codice, anche il sito web e’ stato rinnovato, e sostituito con Trac (quanto mi piace quel software =)

Premetto che per lavoro ho spesso a che fare con la vecchia versione di a2b, e spesso abbiamo dovuto apportare modifiche al software per supplire a limiti o errori.

Io non l’ho mai apprezzato anzi, ne per le funzionalita’ ne per l’implementazione, questa nuova versione ha una lista di feture bella lunga (cito le piu significative):

IVR FEATURES :
* Caller ID & Card Number and SIP/IAX2 Friend authentication
* Multi-Language support - force specific language, give a menu for language choices
* Customize the IVR rapidly, chose to play Balance, Time to call, Intro prompt, etc…
* Recording of all calls
* Support call at Zero-Cost & Negative cost
* Auto creation card option for new callerID
* Web based, DID & CID based Call Back
* Top-up account via IVR menu.

WEB MANAGEMENT INTERFACE :

* BILLING MANAGEMENT & REPORTING
o Reporting statistics: CDR ; Maximum Concurrent calls ; Graphing ; Profit Margin analysis

* POWERFULL RATE-ENGINE
o LCR(Least cost routing) & LCD (Least Cost Dialling) management
o Billing Increment: Progressively different rates through the call
o Scheduled Rates (days/hours of the weeks - PEAK & OFF-PEAK)

* REPORTING
o Earnings calculation and markup/margin on report
o Monthly traffic reports (pie chart)
o Daily load
o Criteria definition for reporting

* OTHERS
o E-Product : allows interaction with third party ecommerce platforms in order to create cards such as OS-commerce
o Email activation to verify customer email address.
o SOAP-Webservice : Create Card, Remove card, Update… See WSDL : A2Billing_UI/api/SOAP/soap-card-server.php?wsdl
o Call-back, Web based, DDI based, CID based and URL / Text triggered Call back
o Call-back triggered through multiple asterisk servers.
o API to display ratecard on own website

CUSTOMER INTERFACE :
* Web based callback

Questa nuova versione non l’ho ancora provata, on-line e’ presente una demo, e le forum sono gia presenti dei bug

Per quanto riguarda il codice, sembra che abbia riscritto parte del codice, anche se le sue HDForm sono rimaste :/, in compenso ha introdotto Smarty per i template, jquery e poco piu…

Nei prossimi giorni dovro’ testarlo e vi sapro dare qualche informazione in piu. Se atete informazioni a riguardo i commenti sono ben accetti :)

Piccola intro su PickUp, tale applicazione permette ad un interno di rispondere al telefono di un altro interno il cui telefono sta squillando, senza doversi alzare dalla sedia per intendersi :)

Tipicamente la persona che desidera rispondere al telefono digita un codice piu il numero dell’interno per cui vuole rispondere, ad esmepio:

*8 + 200

Se usate Asterisk1.2 e utilizzate l’applicazione fornita di default app_pickup, non potete non usare app_pickup2, quest’ultima come la pickup di Asterisk 1.4 permette di specificare piu channel/exten ma aggiunge anche delle decisamente piu utili.

Perche e’ utile specificare piu channel, semplice perche se i nostri interni ad esempio sono sia in IAX2 che SIP e non sappiamo quale sta squillando, non possiamo scrivere qualcosa tipo.


exten => _*8., 1, PickUp(SIP/${EXTEN:2)
exten => _*8., n, PickUp(IAX2/${EXTEN:2)

perchè l’applicazione PickUp se fallisce fa un Hangup, non va percio’ ad eseguire la priorità successiva.

Ecco che con PickUp2 possiamo scrivere:


exten => _*8., 1, PickUp(SIP/${EXTEN:2&IAX2/${EXTEN:2)

Ma questo e’ nulla ancora…

Il problema vero di PickUp e’ che se come accade nel 99% delle volte abbiamo un estensione, tipicamente il nostro numero d’ufficio che fa squillare piu interni, questa applicazione diventa assolutamente inutile, perche in una simile situazione il parametro di pickup non deve piu essere l’estensione dell’interno, ma bensi l’estensione che ha generato la dial.

Questo rende tremendamente inusabile l’applicazione, in quanto una persona sente il telefono vicino a lui suonare, ma non sa se e’ una chiamata che arriva da una dial multipla o una telefonata diretta da un’altro interno, dovrebbe percio’ andare a tentativi.

Ecco che PickUp2 ci viene in aiuto, noi gli diciamo che desideriamo rispondere per conto dell’estensione X e lei si occupa di tutto il resto.

Altre applicazioni aggiunte dalla app_pickup2 sono:

  • PickDown2
  • Steal2

Inoltre l’ultimo update e’ anche piuttosto recente: 2007-01-06

Stavo leggendo gli ultimi ticket presenti nel sistema di tracking di asterisk, trovando qualcosa di interessante e qualcosa meno, quanto sono incappato in questa applicazione scritta da un volenteroso per Asterisk 1.4 0007373: [patch][post-1.4] app_redirect

Ma cerchiamo di capire un po’ melgio, l’applicazione scritta andava a sostituire una fornita da asterisk (quindi forse non e’ il caso piu eclatante) e citandolo :

Similar to app_channelredirect but:

* allows you to specify a device to redirect rather than an exact channel
* allows you to specify two Technology/resources (bridged) and redirect them to two seperate priorities. (essentially unbridging them)

Usage:

redirect(Technology/resource1|Technology/resource2|Exten|Context|Priority1|Priority2|Options)

Technology/resource1 is redirected to priority1
Technology/resource2 is redirected to priority2
options:
a - redirects all channels on specified device instead of single resource.

ed ancora

However when I try this I encounter a bug, I get a thread locking error. I also tried it with the application already in trunk (app_channelredirect) and have exactly the same error, always reproducable

Forse avrebbe potuto segnalare il solo bug dell’app_channelredirect o forse avrebbe potuto anche patchare l’applicazione originale, ad ogni modo questa una delle risposte da digum

timkelly: thanks for contributing and filing a disclaimer. Please review the CODING GUIDELINES file and fix up the app accordingly. Also, new features like these will go into trunk, not 1.2.x once the 1.4 beta branch is forked from the trunk (in the upcoming weeks). Thanks.

le revisioni poi sono state fatte e altre persone hanno scritto

I would like to see this in trunk :)

(preciso che chi ha scritto quella frase ha ruolo “manager”)

vi intaressa sapere come e’ finita?

La prima patch e’ stata mandata il 06-15-06 19:02 il fax 06-16-06 07:46, la prima risposta 06-16-06 09:57, e poi … 03-20-07 14:39 where do we stand with this issue?
(in risposta) 05-28-07 03:35 housekeeping

Risultato, l’app_channelredirect ancora soffre degli stessi problemi, dal 2006 c’e’ un soluzione, ma non viene utilizzata, benché in questo caso _anche_ il fax di disclaimer sia stato inviato, mah.

Devo dire che a volte capisco i fork.

Se desiderate ascoltare la voce degli sviluppatori…

We actually have a conference that we use occasionally, but is always available. It is in the topic of #asterisk-dev on IRC, but was never really announced on this list, I guess. Maybe it would be a good idea to just point your page there.

IAX2/guest@misery.digium.com/asterisk-dev

…discutere di Asterisk, potete collegarvi alla conference room asterisk-dev.

E’ presente anche una pagina, che attraverso un applet vi permette di ascoltarli dal browser, allindirizzo: http://adc.mexuar.com:8080/

Poco tempo fa alla Fiera del Radioamatore a Pordenone avevo visto dagli amici dell’associazione Free-Milk un’integrazione fra Asterisk e un comunissimo citofono; nel loro sito e’ possibile scaricare un pdf con i dettagli del caso.

In breve non vi sono particolari configurazioni da applicare ad asterisk, l’idea alla base consiste un’interfaccia citofonica collegata ad un ATA sip o iax che si voglia.

Davvero una bella idea :)

A volte puo’ essere utile poter registrare selettivamente parte di una conversazione telefonica, alcuni telefoni come ad esempio gli Snom320 hanno un tasto “record” per gli altri e’ possibile abilitare un particolare codice.

Snom320 Record

Vediamo come bisogna fare per abilitare il monitoring su Asterisk.

nel file features.conf, nella sezione featuremap inserire se non presente la chiave automon con la combinazione scelta, nell’esempio “*1


[featuremap]
automon => *1

I file vengono poi salvati in una sotto directory di /var/spool/asterisk o quella da voi specificata dalla variabile astspooldir in asterisk.conf chiamata monitor (alcune distribuzioni che pacchettizzano asterisk non la creano di default )

Il nome dei file e’ nel formato auto-${EPOCH}-caller-calee-(in|out).wav
Epoch rappresenta la data, caller e callee diventano il chan_id del chiamante e del chiamato, mentre in o out determina quale flusso della telefonata e’ registrata nel file. IL formato come vedremo in seguito si puo’ modificare.

Proseguendo la nostra mini guida in extension.conf possiamo inserire nella sezione global alcune variabili per personalizzare il servizio, queste variabili posso anche essere configurate nel da una qualche exten nel caso servisse ovviamente.


TOUCH_MONITOR = valore ;Il valore scritto nella variabile va a sostituire la scritta "caller-callee" nel nome del file

TOUCH_MONITOR_FORMAT = formato; Ridefinisce i lformato con qui vengono salvati i file, di default e' "wav" ma puo' essere modificato con quello preferito supportato da asterisk ad esempio gsm.

Le variabile scritte posso essere anche utilizzate per leggere i valori, alle quali si aggiunge


${TOUCH_MONITOR_OUTPUT} che contiene il nome del file salvato dopo la registrazione.

L’applicazione dial mette poi a disposizione due opzioni “wW” che permettono nell’ordine al chiamto e/o al chiamte di usufruire del servizio


exten => 100, 1, Dial(SIP/100, 30, wW)

Tutto qui. Facile no.

Come abbiamo accennato ogni conversazione viene salvata in due file, uno con il lato chiamante ed uno con quello del chiamato, ovviamente a noi farebbe comodo avere un unico file con entrambe le voci nella giusta sequenza. Asterisk fortunatamente registra una le voci in canali (sinisto e destro) distinti, questo ci permette di riunirli con facilita’ usufruendo del comando soxmix contenuto nelle sox.


soxmix *in.wav *out.wav output.wav

Eventualmente possiamo convertire poi il file in mp3 per salvare spazio


lame --preset voice -v -B 64 -a output.wav output.mp3

Attraverso l’applicazione ControlPlayback potete offrire un servizo per riascoltare le registrazioni con tanto di comandi pause, fast ff, rev etc classi di un player.

Il resto va a fantasia :)

Altre informazioni le potet trovare:

Negli ultimi due giorni in mantis sono passate parecchi fix e patch, due secondo me molto interessanti sono:

* 0009785: [patch] Add ‘e’ extension to handle application errors

Al momento quando si verifica un errore nel dialplan, Asterisk chiude i canali, con questa patch viene aggiunta un estensione speciale come ad esmepio ‘i’ che ci permette di gestire questi errori

* 0007494: [patch][post 1.4] Decoding / Encoding / sending AOC-D messages (”Advice of charge”)

Questa patch per le libpri e chan_zap permette di forwardare “AOC-D” durante la conversaione.

YapTle.com ha rilasciato uno script per Firefox in grado di riconoscere i numeri di telefono in una pagina web, e cliccando su di essi avvia una chiamata attraverso asterisk. Lo script e’ simpatico, ovviamente richiede l’accesso al manager, vale la perna provarlo.

PbxPrompts ha rilasciato delle voci femminili in Inglese, il pacchetto free (con update gratuiti per 1 anno) ha 100 messaggi.

Asteriskit.com.au gli stessi di AsterFax per intendersi, hanno rilasciato “The receptionist console“, una console post operatore per Win/Mac/Linux, la versione “Free” gestisce un massimo di 7 interni.

In un intervista The Future of Open Source VoIP is Asterisk 1.6 a Flamming vengono date alcune anticipazioni sulla prossima 1.6.

A quanto pare F. sta’ gia’ lavorando al ramo 1.6 che dovrebbe vedere la luce verso la fine dell’anno.
Tra i lavori in corso si sta lavorando sulla riduzione dei thread/uso di memoria, al fine di aumentare il numero delle chiamata concorrenti, i risultati ottenuti sino ad ora mostrano un incremento del 100/200%. Una mogliorata gestione degli eventi e in modo da offrire piu dettagli relativi ai CDR.

A quanto parte pero’ i punti salienti sembrano essere Cluster e Failover, non male :)

Voxy - the only way to integrate VoiceXML applications in Asterisk. Configure your dial plan with the URL of your VoiceXML application and it’s done.

Web-MeetMe is a suite of PHP pages to allow for scheduling and managing conferences on an Asterisk PBX.