652 logger for in/out Xuc messages (Ami, webscocket)
Prepare logger:
- for all incoming and outgoing Xuc messages (AMI, WebSockets)
- log as JSON
- for incomming messages also log internal representation after parsing JSON
- prepare logging to separate file inside ./logs/
- turned off by default
- can be enabled selectively for channel, channel+direction, chqannel+direction+user
Closes #652
Sample log content:
15:38:27.745 xucevents.cti.in.aaaa {"function":"updateconfig","listname":"users","tipbxid":"xivo","timenow":1.485268707737405E9,"tid":"1","config":{"enablednd":false,"destrna":"","enablerna":0,"firstname":"aaaa","lastname":"aaaa","enableunc":0,"destbusy":"1001","enablebusy":0,"voicemailid":1,"incallfilter":0,"destunc":"","enablevoicemail":1,"xivo_uuid":"2d5813d9-d72a-423c-9941-8bcde39c8785","enablexfer":1,"fullname":"aaaa aaaa","agentid":5,"mobilephonenumber":"01230041305","linelist":["1"]},"class":"getlist"} -> org.xivo.cti.message.UserConfigUpdate@619839db[userId=1,dndEnabled=false,naFwdEnabled=false,naFwdDestination=,uncFwdEnabled=false,uncFwdDestination=,busyFwdEnabled=false,busyFwdDestination=1001,firstName=aaaa,lastName=aaaa,fullName=aaaa aaaa,mobileNumber=01230041305,agentId=5,lineIds=[1],voiceMailId=1,voiceMailEnabled=true]
15:38:27.752 xucevents.cti.out.aaaa {"tipbxid":"xivo","function":"updatestatus","listname":"voicemails","class":"getlist","commandid":57,"tid":"1"}
15:38:27.752 xucevents.ws.out.aaaa {"msgType":"UserConfigUpdate","ctiMessage":{"userId":1,"dndEnabled":false,"naFwdEnabled":false,"naFwdDestination":"","uncFwdEnabled":false,"uncFwdDestination":"","busyFwdEnabled":false,"busyFwdDestination":"1001","firstName":"aaaa","lastName":"aaaa","fullName":"aaaa aaaa","mobileNumber":"01230041305","agentId":5,"lineIds":[1],"voiceMailId":1,"voiceMailEnabled":true}}
15:38:27.752 xucevents.ws.out.aaaa {"msgType":"AgentStateEvent","ctiMessage":{"name":"AgentReady","agentId":5,"phoneNb":"1000","since":3517,"queues":[4,2,1,5],"cause":"available"}}
15:38:27.758 xucevents.cti.in.aaaa {"function":"updatestatus","listname":"voicemails","tipbxid":"xivo","timenow":1.485268707748413E9,"status":{"new":"4"},"tid":"1","class":"getlist"} -> org.xivo.cti.message.VoiceMailStatusUpdate@3bb9ae2d[voiceMailId=1,newMessages=4,waitingMessages=0,oldMessages=0]
15:38:27.759 xucevents.ws.out.aaaa {"msgType":"VoiceMailStatusUpdate","ctiMessage":{"voiceMailId":1,"newMessages":4,"waitingMessages":0,"oldMessages":0}}
15:38:29.850 xucevents.ws.in.aaaa {"claz":"web","command":"dial","destination":"1001","variables":{}} -> Dial(1001,Map())
15:38:29.883 xucevents.cti.in.xuc {"function":"updatestatus","listname":"phones","tipbxid":"xivo","timenow":1.485268709874328E9,"status":{"hintstatus":"8"},"tid":"1","class":"getlist"} -> org.xivo.cti.message.PhoneStatusUpdate@c243233[lineId=1,hintStatus=8]
Sample log content pretty-printed:
15:56:07.895 xucevents.cti.out.xuc {
"class": "login_id",
"commandid": 6,
"company": "default",
"ident": "xucXuC",
"userlogin": "xuc",
"version": "9999",
"xivoversion": "2.1"
}
15:56:19.890 xucevents.ws.out.aaaa {
"msgType" : "PhoneStatusUpdate",
"ctiMessage" : {
"status" : "AVAILABLE"
}
}
15:56:30.190 xucevents.ws.in.aaaa {
"claz" : "web",
"command" : "dial",
"destination" : "1001",
"variables" : { }
} -> Dial(1001,Map())
15:56:30.225 xucevents.cti.in.aaaa {
"function" : "updatestatus",
"listname" : "phones",
"tipbxid" : "xivo",
"timenow" : 1.48526979021173E9,
"status" : {
"hintstatus" : "8"
},
"tid" : "1",
"class" : "getlist"
} -> org.xivo.cti.message.PhoneStatusUpdate@6cee3eb6[lineId=1,hintStatus=8]