Da aggiungere alla fine di "/etc/asterisk/xmpp.conf":
sendtodialplan=yes ;; this will take send unsolicited incoming xmpp messages into the dialplan
context=incoming-xmpp ;; this sets the context those incoming messages are sent to
da aggiungere alla fine di "/etc/asterisk/extensions.conf":
[incoming-xmpp]
;
; incoming jabber xmpp messages & commands - by pilovis
exten => s,1,Noop(Incoming Jabber message)
exten => s,n,Set(JabberResponse=${JABBER_RECEIVE(asterisk,mittente@suoxmpp.com)})
; inoltro messaggio ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto messaggio XMPP: ${JabberResponse}
;
; sezione per ricevere comandi
exten => s,n,GotoIf($["${JabberResponse}" = "On"]?On) ; rileva testo On nel messaggio
exten => s,n,GotoIf($["${JabberResponse}" = "Off"]?Off) : rileva testo Off nel messaggio
exten => s,n,Hangup()
;
; esecuzione comando On
exten => s,n(On),Wait(1)
; inoltro comando ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto comando XMPP On: ${JabberResponse}
exten => s,n,System(/root/script.on.sh)
exten => s,n,Hangup()
;
; esecuzione comando Off
exten => s,n(Off),Wait(1)
; inoltro comando ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto comando XMPP Off: ${JabberResponse}
exten => s,n,System(/root/script.off.sh)
exten => s,n,Hangup()
Nota:
i comandi in questo esempio devono essere esclusivamente On oppure Off, qualsiasi altra lettera, numero o parola prima o dopo, non fa scattare il trigger che lancia i comandi, comunque tutti i messaggi ricevuti da questo mittente, siano essi comandi o meno, vengono sempre inoltrati a
io@mioxmpp.com, se sono comandi validi arriveranno due messaggi, il secondo e' la conferma di avvenuta attivazione del comando On oppure Off, es: Ricevuto comando XMPP On, i due messaggi possono avere anche destinatari diversi, volendo il destinatario dei messaggi di avvenuta attivazione comando puo' essere il mittente che lo ha inviato (
mittente@suoxmpp.com), in modo da ricevere una conferma di avvenuta attivazione.
Inoltre, per ovvi motivi di sicurezza, i messaggi e comandi possono arrivare solo da "mittente@suoxmpp.com", qualsiasi altro messaggio o comando ricevuto da altri utenti XMPP viene ignorato.
Volendo si possono aggiungere comandi a piacere seguendo la sintassi di cui sopra, esempio:
;...
sezione per ricevere comandi
exten => s,n,GotoIf($["${JabberResponse}" = "On"]?On) ; rileva testo On nel messaggio
exten => s,n,GotoIf($["${JabberResponse}" = "Off"]?Off) : rileva testo Off nel messaggio
exten => s,n,GotoIf($["${JabberResponse}" = "Reboot"]?Reboot) ; rileva testo Reboot nel messaggio
exten => s,n,Hangup()
;
; esecuzione comando On
exten => s,n(On),Wait(1)
; inoltro comando ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto comando XMPP On: ${JabberResponse}
exten => s,n,System(/root/script.on.sh)
exten => s,n,Hangup()
;
; esecuzione comando Off
exten => s,n(Off),Wait(1)
; inoltro comando ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto comando XMPP Off: ${JabberResponse}
exten => s,n,System(/root/script.off.sh)
exten => s,n,Hangup()
;
; esecuzione comando Reboot
exten => s,n(Reboot),Wait(1)
; inoltro comando ricevuto ad altro utente xmpp
exten => s,n,JabberSend(asterisk,io@mioxmpp.com,Ricevuto comando XMPP Reboot: ${JabberResponse}
exten => s,n,System(/sbin/reboot)
exten => s,n,Hangup()