Natalino

Picone

Tech machine


Chiamare via asterisk dall’address book dell’osX

novembre 19, 2006Nat0 Comments

Dopo vari smanettamenti e ricerche sono riuscito a terminare lo script tramite il quale è possibile pilotare direttamente l’asterisk per comporre un numero di telefono. Praticamente premendo il tasto dx su un numero di telefono nella rubrica indirizzi ho aggiunto una voce chiamata “Chiama con Asterisk” che invia il numero al centralino e fa squillare il telefono.
Per attivare la funzione bisogna copiare lo script (modificando in modo corretto le variabili a metà del file) in un file nella cartella “Address Book Plug-Ins” che si trova nella cartella Libreria.

L’effetto è il seguente:
asterisk_osx_addressbook

Questi sono i parametri che ho usato nello script e che vanno adattati alle diverse esigenze:

  • mynumber -> 501 -> Numero dell’interno da far squillare
  • username -> AstTapi -> Nome utente da usare per accedere all’interfaccia manager dell’asterisk
  • passwd -> AstTapi -> Password da usare per accedere all’interfaccia manager dell’asterisk
  • remotehost -> 192.168.74.250 -> Indirizzo IP del server asterisk
    using terms from application "Address Book"
    on action property
    return "phone"
    end action property
    on action title for p with e
    return "Chiama con Asterisk"
    end action title
    on should enable action for p with e
    if value of e is missing value then
    return false
    else
    return true
    end if
    end should enable action
    on perform action for p with e
    set telephone to value of e
    set resultList to DialOut(telephone)
    return true
    end perform action
    end using terms from
    
    to searchReplace(thisText, searchTerm, replacement)
    set AppleScript's text item delimiters to searchTerm
    set thisText to thisText's text items
    set AppleScript's text item delimiters to replacement
    set thisText to "" & thisText
    set AppleScript's text item delimiters to {""}
    return thisText
    end searchReplace
    
    on DialOut(telephone)
    --	Numero dell'interno
    set mynumber to "501"
    --	Utente per accedere all'interfaccia manager dell'asterisk
    set username to "AstTapi"
    --	Password per accedere all'interfaccia manager dell'asterisk
    set passwd to "AstTapi"
    --	Indirizzo ip o nome del server asterisk
    set remotehost to "192.168.74.250"
    --	Questo serve per rimuovere il prefisso internazionale dal numero
    set telephone to searchReplace(telephone, "+39", "")
    
    --	display dialog "Confermi chiamata a " & telephone
    
    set expectscript to "set timeout 20
    spawn telnet " & remotehost & " 5038;
    expect \"Asterisk Call Manager/1.0\";
    send \"Action: login
    Username: " & username & "
    Secret: " & passwd & "
    
    \";
    expect \"Message: Authentication accepted\";
    send \"Action: Originate
    Channel: SIP/" & mynumber & "
    Context: from-internal
    Exten: 9" & telephone & "
    Priority: 1
    Timeout: 30000
    
    \";
    send \"Action: logoff
    
    \";
    "
    set risultato to display dialog "Confermi chiamata a " & telephone
    
    if button returned of risultato = "OK" then
    set results to do shell script "/usr/bin/expect -c '" & expectscript & "'"
    end if
    end DialOut