Built motion from commit 06df96e on branch develop.
[motion.git] / server / config / ami / agent.js
1 var moment = require('moment');
2
3 function Agent() {
4   console.log('Agent Initialization...');
5 }
6
7 Agent.prototype.called = function(evt) {
8   evt.lastevent = 'called';
9   evt.agentcalledAt = moment().format("YYYY-MM-DD HH:mm:ss");
10   createAgent(evt);
11 }
12
13 Agent.prototype.connect = function(evt) {
14   evt.lastevent = 'connect';
15   evt.agentconnectAt = moment().format("YYYY-MM-DD HH:mm:ss");
16   updateAgents(evt);
17   updateAgents({
18     agentringnoanswer: true,
19     agentringnoanswerAt: moment().format("YYYY-MM-DD HH:mm:ss"),
20     reason: 'answered_elsewhere',
21     lastevent: 'answered_elsewhere'
22   }, {
23     uniqueid: evt.uniqueid,
24     destuniqueid: {
25       $ne: evt.destuniqueid
26     },
27     reason: null
28   })
29 }
30
31 Agent.prototype.complete = function(evt) {
32   evt.lastevent = 'complete';
33   evt.agentcomplete = true;
34   evt.agentcompleteAt = moment().format("YYYY-MM-DD HH:mm:ss");
35   updateAgents(evt);
36 }
37
38 Agent.prototype.dump = function(evt) {
39   evt.lastevent = 'dump';
40
41   evt.agentdump = true;
42   evt.agentdumpAt = moment().format("YYYY-MM-DD HH:mm:ss");
43   updateAgents(evt);
44 }
45
46 Agent.prototype.ringnoanswer = function(evt) {
47   evt.lastevent = 'rejected';
48   evt.agentringnoanswer = true;
49   evt.agentringnoanswerAt = moment().format("YYYY-MM-DD HH:mm:ss");
50   evt.reason = 'rejected';
51   updateAgents(evt);
52 }
53
54 Agent.prototype.callerabandon = function(evt) {
55   evt.lastevent = 'abandoned';
56   evt.agentringnoanswer = true;
57   evt.agentringnoanswerAt = moment().format("YYYY-MM-DD HH:mm:ss");
58   evt.reason = 'abandoned';
59   updateAgents(evt, {
60     uniqueid: evt.uniqueid,
61     reason: null
62   });
63 }
64
65 function createAgent(evt) {
66   var agent = require('../../models').ReportAgent;
67   agent
68     .create(evt)
69     .then(function(agent) {
70       console.log('[report] agent begin created');
71     })
72     .catch(function(err) {
73       console.error('[report] agent ' + err);
74     });
75 }
76
77 function updateAgents(evt, where) {
78   var agent = require('../../models').ReportAgent;
79   agent
80     .update(evt, {
81       where: (where) ? where : {
82         uniqueid: evt.uniqueid,
83         destuniqueid: evt.destuniqueid
84       },
85       individualHooks: true
86     })
87     .then(function(agent) {
88       console.log('[agent] agent')
89     })
90     .catch(function(err) {
91       console.error('[agent] agent error: ' + err);
92     });
93 }
94
95 module.exports = Agent;