Ok so I've come up with a temporary fix for the XMPP delay issue. I found a python library for sending messages via XMPP and it works quite good. I tested it on Windows but it should work on linux and unix. Below are the instructions for Windows.
- Download and install Python 2.6.6 from here: https://www.python.org/download/releases/2.6.6/
- Download and install xmpppy 0.4.0 from here: http://downloads.sourceforge.net/project/xmpppy/xmpppy/0.4.0/xmpppy-0.4.0.win32.exe
- Create a folder any where to hold the sendXMPP.py script. I used C:\NetXMS\XMPP_FIX\
File: sendXMPP.py (not my code, its modified example code on the xmpppy project site)
#!/usr/bin/python
# \$Id: xsend.py,v 1.8 2006/10/06 12:30:42 normanr Exp \$
import sys,os,xmpp,time
if len(sys.argv) < 2:
print("Syntax: xsend JID text")
sys.exit(0)
tojid=sys.argv[1]
text=' '.join(sys.argv[2:])
jidparams={}
jidparams['jid']='[email protected]'
jidparams['password'] = 'LOGN_PASSWORD'
jid=xmpp.protocol.JID(jidparams['jid'])
cl=xmpp.Client(jid.getDomain(),debug=True)
con=cl.connect(('YOUR_XMPP_SERVER_HERE',5222), use_srv=False)
if not con:
print("could not connect!")
sys.exit()
print("connected with",con)
auth=cl.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
if not auth:
print("could not authenticate!")
sys.exit()
print("authenticated using",auth)
# cl.SendInitPresence(requestRoster=0) # you may need to uncomment this for old server
id=cl.send(xmpp.protocol.Message(tojid,text))
print("sent message with id",id)
time.sleep(1) # some older servers will not send the message if you disconnect immediately after sending
cl.disconnect()
- Take the above code and create a sendXMPP.py file in the folder created in step 3. Make sure to edit the script to use your own login, password and xmpp server.
- Inside netxms add an action and fill out the fields as follows:
Name: External Send XMPP
Type: Execute command on management server
Command: C:\\Python26\\python.exe C:\\NetXMS\\XMPP_FIX\\sendXMPP.py "ACCOUNT_TO_SEND_TO" "%m"
Note: Your python path and sendXMPP.py path might be different so change the paths in the command accordingly.
- Now add the action you just created in the desired event processing policy and it should be ready to go.
If you want to send to multiple accounts at once you will have to either create multiple actions for each account or modify the python script.
I don't have time at the moment to try it on linux. Maybe you could give it a go ofca.