martedì 22 aprile 2014

freepbx: come ripristinare interfaccia web che non appare più dopo crash

può capitare che dopo un crash l'interfaccia web non risulti più raggiungibile.
questo accade spesso perchè il servizio di mysql non riesce a ripartire.
per risolvere basta rimuovere il file /var/lib/mysql/mysql.sock e riavviare.

freepbx: rimuovere moduli disinstallati - Not Installed (Locally available)

in module admin, dopo aver disinstallato i moduli che non occorrono gli stessi vengono comunque elencati come Not Installed (Locally available).
per farli sparire del tutto basta andare in  /var/www/html/admin/modules e rimuovere la cartella del modulo

asterisk: paginebianche.it come sorgente di CID superfecta

cid superfecta permette di ricevere il nome del chiamante cercando in vari database. lo script non è più fornito con il modulo di paginebianche.it per motivi di copyright. chi volesse sperimentare le espressioni regolari può testare come funzionava il modulo (e poi rimuoverlo per non violare la legge).

-andare in /var/www/html/admin/modules/superfecta/sources e creare un file chiamato source-PagineBianche_IT.module

- aprire il file e incollarci il codice seguente

<?php

class PagineBianche_IT extends superfecta_base {

    public $description = "http://www.paginebianche.it - These listings include data from the Italian PagineBianche.";
    public $version_requirement = "2.11";

    function get_caller_id($thenumber, $run_param=array()) {

            $this->DebugPrint("Searching PagineBianche - {$thenumber} ... ");
            $url = "http://www.paginebianche.it/ricerca-da-numero?qs={$thenumber}";
#            $this->DebugPrint("{$url}");
         
            if ($this->SearchURL($url, '=<h2.class\=\"rgs\"[^>]*>(.*)</h2>=siU' , $match)) {
                $caller_id = $this->ExtractMatch($match);
 
#    $this->DebugPrint("{$caller_id}");  
 
     if ($this->SearchURL($url, '=class\=\"locality\"*>(.*)</span>=siU', $match1))
$caller_id .= " - ";
$caller_id .= $this->ExtractMatch($match1);
#                $caller_id .= " - {$thenumber}:";
# $caller_id .= $thenumber;

#    $this->DebugPrint("{$caller_id}");
}
        return($caller_id);
    }

}

freepbx: abilitare motore di sintesi vocale googleTTS

-scaricare il file perl da http://zaf.github.io/asterisk-googletts/ decomprimerlo e copiare il file googletts.cli. pl in /var/lib/asterisk/agi-bin
-entrare in ssh, dare chmod 777 e chown asterisk:asterisk al file e poi lanciarlo: se da errori di moduli perl mancanti, installare gli stessi da yum
-dare ilcomando di test per vedere se ci sono errori perl ./googletts-cli.pl -t "test sintesi" -o test.wav
-se la console da come errore un errore su HTTPS "Crypt::SSLeay or IO::Socket::SSL not installed"
dare i seguenti comandi
perl -MCPAN -e shell
install IO::Socket::SSL
rispondere si alle domande e terminare la configurazione di perl

-editare il file propolys-tts.agi modificando la sezione switch come segue

switch ($engine) {
        case 'text2wave':
                exec($enginebin." -f 8000 -o $wavefile $voice $textfile");
                break;
        case 'flite':
                exec($enginebin." -f $textfile -o $wavefile");
                break;
        case 'swift':
                exec($enginebin." -p audio/channels=1,audio/sampling-rate=8000 -o $wavefile -f $textfile");
                break;
        case 'googleTTS':
                exec($enginebin." -l it -f $textfile -r 8000 -o $wavefile");
                break;
        default:
        }

-aprire freepbx e andare in settings -> text to speech engines, cliccare su "add engine" dare come nome al  motore googleTTS e mettere /var/lib/asterisk/agi-bin/googletts-cli.pl come percorso poi salvare

-andare in application -> text to speech e scegliere nella tendina choose an engine il motore google appena aggiunto. se la tendina è vuota si deve disinstallare e reinstallare il modulo text to speech da admin -> module admin.
nel campo text scrivere il testo che si vuole sia letto: FONDAMENTALE SCRIVERE IL TESTO SENZA PREMERE INVIO, IN CASO CONTRARIO LA SINTESI NON FUNZIONERA'.

la linea di codice  exec($enginebin." -l it -f $textfile -r 8000 -o $wavefile"); comprende il parametro della lingua. pertanto inserendo piu volte il motore con nomi diversi e aggiungendo case ulteriori con diverse lingue è possibile realizzare annunci multilingua 


Post in evidenza

RISOLVERE PROBLEMA DISCONNESSIONE UNITA DI RETE

- lato server disattivare il timeout delle condivisioni dando da cmd il seguente comando net config server /autodisconnect:-1 - portare...