From e5df1f71959f1b02dbf7d4edc9215fe108bf0b59 Mon Sep 17 00:00:00 2001 From: Herman van den Berg Date: Wed, 21 Sep 2016 09:04:36 +0200 Subject: [PATCH] add events DialEndEvent, QueueCallerJoinEvent, QueueCallerLeaveEvent for further Asterisk 13 support --- Asterisk.2013/Asterisk.NET/AsterNET.csproj | 3 ++ .../Manager/Event/DialBeginEvent.cs | 10 ++--- .../Manager/Event/DialEndEvent.cs | 18 +++++++++ .../Manager/Event/QueueCallerJoinEvent.cs | 15 +++++++ .../Manager/Event/QueueCallerLeaveEvent.cs | 15 +++++++ .../Asterisk.NET/Manager/ManagerConnection.cs | 39 +++++++++++++++++++ Asterisk.2013/ChangeLog.txt | 3 ++ 7 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 Asterisk.2013/Asterisk.NET/Manager/Event/DialEndEvent.cs create mode 100644 Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerJoinEvent.cs create mode 100644 Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerLeaveEvent.cs diff --git a/Asterisk.2013/Asterisk.NET/AsterNET.csproj b/Asterisk.2013/Asterisk.NET/AsterNET.csproj index 5b835a9..b2305c7 100644 --- a/Asterisk.2013/Asterisk.NET/AsterNET.csproj +++ b/Asterisk.2013/Asterisk.NET/AsterNET.csproj @@ -232,8 +232,11 @@ + + + diff --git a/Asterisk.2013/Asterisk.NET/Manager/Event/DialBeginEvent.cs b/Asterisk.2013/Asterisk.NET/Manager/Event/DialBeginEvent.cs index 4c11454..1d3b588 100644 --- a/Asterisk.2013/Asterisk.NET/Manager/Event/DialBeginEvent.cs +++ b/Asterisk.2013/Asterisk.NET/Manager/Event/DialBeginEvent.cs @@ -1,11 +1,9 @@ namespace AsterNET.Manager.Event { - /// - /// A dial begin event is triggered whenever a phone attempts to dial someone.
- /// This event is implemented in apps/app_dial.c.
- /// Available since Asterisk 1.2. - ///
- public class DialBeginEvent : DialEvent + /// + /// A dial begin event is triggered whenever when a dial action has started.
+ ///
+ public class DialBeginEvent : DialEvent { /// /// Creates a new DialBeginEvent. diff --git a/Asterisk.2013/Asterisk.NET/Manager/Event/DialEndEvent.cs b/Asterisk.2013/Asterisk.NET/Manager/Event/DialEndEvent.cs new file mode 100644 index 0000000..d02e366 --- /dev/null +++ b/Asterisk.2013/Asterisk.NET/Manager/Event/DialEndEvent.cs @@ -0,0 +1,18 @@ +namespace AsterNET.Manager.Event +{ + /// + /// A dial begin event is triggered whenever when a dial action has completed.
+ ///
+ public class DialEndEvent : DialEvent + { + /// + /// Creates a new DialEndEvent. + /// + public DialEndEvent(ManagerConnection source) + : base(source) + { + } + + public string Forward { get; set; } + } +} \ No newline at end of file diff --git a/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerJoinEvent.cs b/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerJoinEvent.cs new file mode 100644 index 0000000..0416417 --- /dev/null +++ b/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerJoinEvent.cs @@ -0,0 +1,15 @@ +namespace AsterNET.Manager.Event +{ + /// + /// A QueueCallerJoinEvent is triggered when a channel joins a queue.
+ ///
+ public class QueueCallerJoinEvent : QueueEvent + { + public string Position { get; set; } + + public QueueCallerJoinEvent(ManagerConnection source) + : base(source) + { + } + } +} \ No newline at end of file diff --git a/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerLeaveEvent.cs b/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerLeaveEvent.cs new file mode 100644 index 0000000..dff535a --- /dev/null +++ b/Asterisk.2013/Asterisk.NET/Manager/Event/QueueCallerLeaveEvent.cs @@ -0,0 +1,15 @@ +namespace AsterNET.Manager.Event +{ + /// + /// A QueueCallerLeaveEvent is triggered when a channel leaves a queue.
+ ///
+ public class QueueCallerLeaveEvent : QueueEvent + { + public string Position { get; set; } + + public QueueCallerLeaveEvent(ManagerConnection source) + : base(source) + { + } + } +} \ No newline at end of file diff --git a/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs b/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs index bbc75a5..1644c4c 100644 --- a/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs +++ b/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs @@ -96,6 +96,9 @@ namespace AsterNET.Manager public delegate void BridgeEnterEventHandler(object sender, Event.BridgeEnterEvent e); public delegate void BridgeLeaveEventHandler(object sender, Event.BridgeLeaveEvent e); public delegate void DialBeginEventHandler(object sender, Event.DialBeginEvent e); + public delegate void DialEndEventHandler(object sender, Event.DialEndEvent e); + public delegate void QueueCallerJoinEventHandler(object sender, Event.QueueCallerJoinEvent e); + public delegate void QueueCallerLeaveEventHandler(object sender, Event.QueueCallerLeaveEvent e); @@ -492,6 +495,21 @@ namespace AsterNET.Manager ///
public event DialBeginEventHandler DialBegin; + /// + /// Raised when a dial action has completed.
+ ///
+ public event DialEndEventHandler DialEnd; + + /// + /// Raised when a caller joins a Queue.
+ ///
+ public event QueueCallerJoinEventHandler QueueCallerJoin; + + /// + /// Raised when a caller leaves a Queue.
+ ///
+ public event QueueCallerLeaveEventHandler QueueCallerLeave; + #endregion #region Constructor - ManagerConnection() @@ -602,6 +620,9 @@ namespace AsterNET.Manager Helper.RegisterEventHandler(registeredEventHandlers, 91, typeof(BridgeLeaveEvent)); Helper.RegisterEventHandler(registeredEventHandlers, 92, typeof(BlindTransferEvent)); Helper.RegisterEventHandler(registeredEventHandlers, 93, typeof(DialBeginEvent)); + Helper.RegisterEventHandler(registeredEventHandlers, 94, typeof(DialEndEvent)); + Helper.RegisterEventHandler(registeredEventHandlers, 95, typeof(QueueCallerJoinEvent)); + Helper.RegisterEventHandler(registeredEventHandlers, 96, typeof(QueueCallerLeaveEvent)); #endregion @@ -1226,6 +1247,24 @@ namespace AsterNET.Manager DialBegin(this, (DialBeginEvent)e); } break; + case 94: + if (DialEnd != null) + { + DialEnd(this, (DialEndEvent)e); + } + break; + case 95: + if (QueueCallerJoin != null) + { + QueueCallerJoin(this, (QueueCallerJoinEvent)e); + } + break; + case 96: + if (QueueCallerLeave != null) + { + QueueCallerLeave(this, (QueueCallerLeaveEvent)e); + } + break; default: if (UnhandledEvent != null) UnhandledEvent(this, e); diff --git a/Asterisk.2013/ChangeLog.txt b/Asterisk.2013/ChangeLog.txt index 4162b4f..35dc944 100644 --- a/Asterisk.2013/ChangeLog.txt +++ b/Asterisk.2013/ChangeLog.txt @@ -1,3 +1,6 @@ +21.09.2016 (herman1vdb) + Added events DialEndEvent, QueueCallerJoinEvent, QueueCallerLeaveEvent for further Asterisk 13 support + 20.09.2016 (herman1vdb) Added DialBeginEvent