Archivio per la Categoria 'Programmazione'

GTK Porting Asterisk CTI

English Version
astcti_gtk.jpg astcti_gtk_lin.jpg

Ho iniziato da qualche settimana una ristrutturazione generale di Asterisk CTI. La nuova versione, per la quale un rilascio è previsto orientativamente per i primi mesi del 2009, rappresenta una rivoluzione rispetto alla prima versione del progetto.

Le principali novità sono:

  • Approccio completamente rinnovato: centralizzazione sul server della configurazione dei servizi e dei client abilitati ad essere notificati delle chiamate, nonchè degli applicativi da lanciare sulle postazioni.
  • Software completamente riscritto in C# con mono, usando le librerie GTK. Questo consentirà di avere un software realmente multipiattaforma.
  • Client, denominato AstCTIClient, riscritto in GTK e multipiattaforma.
  • Tutta la configurazione potrà essere gestita da un software chiamato AstCTIConfigurator. e verrà salvata in un database MySQL.
  • Le configurazioni verranno salvate in un file XML caricato all’avvio da AstCTIServer: questo renderà il server indipendente da eventuali failures del database MySQL.
  • Supporto multilanguage.

Naturalmente si tratta di un progetto Open Source sotto licenza GPL e a breve provvederò a caricare i sorgenti su una apposita pagina di progetto su google-code. Attendo vostri commenti, feedback e, sopratutto una partecipazione al progetto!

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tag: Sistemi di Call Center | Centralino Voip | Consulente Asterisk Napoli | Centralino Telefonico | Voip | Asterisk CTI | PBX | Telefoni IP | Networking | Linux


Sviluppo di IVR, sistemi di callcenter, PBX Voip.

Invoke

Prima o poi vi capiterà di sviluppare una applicazione che faccia uso dei Threads per svolgere operazioni in background.
Magari se non avete mai utilizzato i Threads, vi consiglio questo articolo (in inglese) An Introduction to Programming with C# Threads

Il problema dell’Invoke si presenta nel momento in cui cercate di aggiornare la UI di una Form da un thread. Infatti .NET consente l’invocazione delle funzioni dell’oggetto System.Windows.Forms.Control solo dal thread in cui l’oggetto è stato creato. Per aggirare l’ostacolo abbiamo bisogno di utilizzare le funzioni Control.Invoke (chiamata sincrona) or Control.BeginInvoke (chiamata asincrona). Normalmente, il nostro approccio sarebbe quello di scrivere tante delegates per quanti sono gli oggetti da invocare o metodi da aggiornare:
delegate void AggiungiListboxDelegate(string msg);
[...]
if (this.InvokeRequired) {
Invoke(new AggiungiListboxDelegate(AggiungiAListBox), new object[] { itm } );
}
else
{
AggiungiAListBox(itm);
}

Esiste invece un metodo più semplice ed utilizzabile in modo generico nella maggior parte dei casi. Scriviamo delle delegates generiche che ricevono:

  • o l’oggetto, il nome della property da valorizzare e il nuovo valore da assegnare
  • o l’oggetto, il nome del metodo da invocare e i parametri da passare al metodo

delegate void SetPropertyDelegate(object ctl, string objName, object newValue);
delegate void SetMethodDelegate(object obj, string methodName, object[] parameters);
[...]

void SetProperty(object ctl, string propName, object newValue) {
Type t = ctl.GetType();
PropertyInfo pi = t.GetProperty(propName);

if (pi != null) {
pi.SetValue(ctl,newValue,null);
}
}
void SetMethod(object ctl, string methodName, object[] parameters) {
Type t = ctl.GetType();
MethodInfo mi = t.GetMethod(methodName);

if (mi != null) {
mi.Invoke(ctl, parameters);
}
}
Un esempio di utilizzo:

Invoke(new SetPropertyDelegate(SetProperty), new object[] { (object)lblErrMessage, "Text", errmsg });

oppure

Invoke(new SetMethodDelegate(SetMethod), new object[] { (object)this, "Close", (new object[] {}) } );

A voi l’onere di migliorare l’idea :)

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tag: Sistemi di Call Center | Centralino Voip | Consulente Asterisk Napoli | Centralino Telefonico | Voip | Asterisk CTI | PBX | Telefoni IP | Networking | Linux


Sviluppo di IVR, sistemi di callcenter, PBX Voip.