diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..f4b35bd --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [seiggy, skrusty] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dd84ea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..c6bd85d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: +- package-ecosystem: nuget + directory: "/" + schedule: + interval: daily + time: "10:00" + open-pull-requests-limit: 10 + diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..763507f --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '20 17 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'csharp' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/dotnet-core.yml b/.github/workflows/dotnet-core.yml new file mode 100644 index 0000000..3cc52d1 --- /dev/null +++ b/.github/workflows/dotnet-core.yml @@ -0,0 +1,32 @@ +name: .NET Core + +on: + push: + branches: [ master ] + # pull_request: + # branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 7.0.x + - name: Install dependencies + run: dotnet restore + - name: Build + run: dotnet build --configuration Release --no-restore + - name: Test + run: dotnet test --no-restore --verbosity normal + - name: Create NuGet Packages + run: dotnet pack --configuration Release --include-symbols --include-source + - name: Publish NuGet Packages + run: | + dotnet nuget add source https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json --username ${{ github.repository_owner }} --password ${{ github.token }} --store-password-in-clear-text --name github + dotnet nuget push "Arke.ARI/**/*.nupkg" --source github --skip-duplicate + dotnet nuget push "Arke.ARI/**/*.nupkg" -k ${{ secrets.NUGET_ORG_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 0000000..e08cf58 --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,25 @@ +name: Pull Request Validation + +on: + # push: + # branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 7.0.x + - name: Install dependencies + run: dotnet restore + - name: Build + run: dotnet build --configuration Release --no-restore + - name: Test + run: dotnet test --no-restore --verbosity normal diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e2b6220..0000000 --- a/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: csharp -sudo: required -dist: trusty -matrix: - include: - - dotnet: 2.1.300 - mono: latest - env: DOTNETCORE=1 - install: - - dotnet restore AsterNET.ARI.NetStandard/AsterNET.ARI.NetStandard.csproj - - nuget restore AsterNET.ARI.sln - script: - - dotnet build AsterNET.ARI.NetStandard -c Release - - dotnet publish AsterNET.ARI.NetStandard -c Release - - xbuild /p:Configuration=Release AsterNET.ARI/AsterNET.ARI.csproj diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cde8b65 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "dotnet.defaultSolution": "Arke.ARI.sln" +} \ No newline at end of file diff --git a/AsterNET.ARI.sln b/Arke.ARI.sln similarity index 84% rename from AsterNET.ARI.sln rename to Arke.ARI.sln index 99f9523..30df837 100644 --- a/AsterNET.ARI.sln +++ b/Arke.ARI.sln @@ -1,9 +1,9 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26730.16 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsterNET.ARI", "AsterNET.ARI\AsterNET.ARI.csproj", "{F4C8C633-2207-4C25-89A8-4D23D9CFA964}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Arke.ARI", "Arke.ARI\Arke.ARI.csproj", "{F4C8C633-2207-4C25-89A8-4D23D9CFA964}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{FBB847F2-AC1C-47DD-B5F7-37C160743F53}" EndProject @@ -17,29 +17,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Package.nuspec = Package.nuspec EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleBridge", "Samples\SimpleBridge\SimpleBridge.csproj", "{4E7F6185-4433-4C75-96A6-8859411577CC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleBridge", "Samples\SimpleBridge\SimpleBridge.csproj", "{4E7F6185-4433-4C75-96A6-8859411577CC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleConf", "Samples\SimpleConfExample\SimpleConf.csproj", "{BD04EEB4-0475-4D2F-ADA9-76E4F55BB5BB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleConf", "Samples\SimpleConfExample\SimpleConf.csproj", "{BD04EEB4-0475-4D2F-ADA9-76E4F55BB5BB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleRecordAndPlayback", "Samples\SimpleRecordAndPlayback\SimpleRecordAndPlayback.csproj", "{F8C2150F-7D48-4E30-AE9A-E2354E5A536D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleRecordAndPlayback", "Samples\SimpleRecordAndPlayback\SimpleRecordAndPlayback.csproj", "{F8C2150F-7D48-4E30-AE9A-E2354E5A536D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleTestApplication", "Samples\SimpleTestApplication\SimpleTestApplication.csproj", "{1DD784F3-809C-465E-9F3B-8575705A5C6C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestApplication", "Samples\SimpleTestApplication\SimpleTestApplication.csproj", "{1DD784F3-809C-465E-9F3B-8575705A5C6C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ARICodeGen", "CodeGeneratror\ARICodeGen\ARICodeGen.csproj", "{9A6809EF-E0C7-4552-98FA-2D75A33CCFE3}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AsyncSamples", "AsyncSamples", "{31012840-0DA0-4F79-8C4E-952D1422DD0A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleBridgeAsync", "AsyncSamples\SimpleBridgeAsync\SimpleBridgeAsync.csproj", "{C9AE28E1-5D6E-4995-A40D-FFB9A3B39CE1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleBridgeAsync", "AsyncSamples\SimpleBridgeAsync\SimpleBridgeAsync.csproj", "{C9AE28E1-5D6E-4995-A40D-FFB9A3B39CE1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleConfAsync", "AsyncSamples\SimpleConfAsync\SimpleConfAsync.csproj", "{BEDEAA1C-0513-4CFB-8B5C-794E4C682820}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleConfAsync", "AsyncSamples\SimpleConfAsync\SimpleConfAsync.csproj", "{BEDEAA1C-0513-4CFB-8B5C-794E4C682820}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleRecordAndPlaybackAsync", "AsyncSamples\SimpleRecordAndPlaybackAsync\SimpleRecordAndPlaybackAsync.csproj", "{DEE23389-A37D-484F-BB35-E63CF7977C7E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleRecordAndPlaybackAsync", "AsyncSamples\SimpleRecordAndPlaybackAsync\SimpleRecordAndPlaybackAsync.csproj", "{DEE23389-A37D-484F-BB35-E63CF7977C7E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleTestApplicationAsync", "AsyncSamples\SimpleTestApplicationAsync\SimpleTestApplicationAsync.csproj", "{55979546-152E-4157-9AA3-839F6E3CE4E8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleTestApplicationAsync", "AsyncSamples\SimpleTestApplicationAsync\SimpleTestApplicationAsync.csproj", "{55979546-152E-4157-9AA3-839F6E3CE4E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RecordingSample", "RecordingSample\RecordingSample.csproj", "{830E8CF5-E8DD-4E2E-82FA-6433E3BF174B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsterNET.ARI.NetStandard", "AsterNET.ARI.NetStandard\AsterNET.ARI.NetStandard.csproj", "{431A2DF3-F413-4FC4-A6E3-FEA97212FD9C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RecordingSample", "RecordingSample\RecordingSample.csproj", "{830E8CF5-E8DD-4E2E-82FA-6433E3BF174B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -86,10 +84,6 @@ Global {830E8CF5-E8DD-4E2E-82FA-6433E3BF174B}.Debug|Any CPU.Build.0 = Debug|Any CPU {830E8CF5-E8DD-4E2E-82FA-6433E3BF174B}.Release|Any CPU.ActiveCfg = Release|Any CPU {830E8CF5-E8DD-4E2E-82FA-6433E3BF174B}.Release|Any CPU.Build.0 = Release|Any CPU - {431A2DF3-F413-4FC4-A6E3-FEA97212FD9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {431A2DF3-F413-4FC4-A6E3-FEA97212FD9C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {431A2DF3-F413-4FC4-A6E3-FEA97212FD9C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {431A2DF3-F413-4FC4-A6E3-FEA97212FD9C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AsterNET.ARI/ARIClient.cs b/Arke.ARI/ARIClient.cs similarity index 95% rename from AsterNET.ARI/ARIClient.cs rename to Arke.ARI/ARIClient.cs index 88b2231..23565a6 100644 --- a/AsterNET.ARI/ARIClient.cs +++ b/Arke.ARI/ARIClient.cs @@ -1,15 +1,15 @@ using System; using System.Diagnostics; using System.Threading; -using AsterNET.ARI.Actions; -using AsterNET.ARI.Dispatchers; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Middleware.Default; -using AsterNET.ARI.Models; +using Arke.ARI.Actions; +using Arke.ARI.Dispatchers; +using Arke.ARI.Middleware; +using Arke.ARI.Middleware.Default; +using Arke.ARI.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace AsterNET.ARI +namespace Arke.ARI { public enum EventDispatchingStrategy { @@ -149,7 +149,7 @@ private void _eventProducer_OnMessageReceived(object sender, MessageEventArgs e) // load the message var jsonMsg = (JObject)JToken.Parse(e.Message); var eventName = jsonMsg.SelectToken("type").Value(); - var type = Type.GetType("AsterNET.ARI.Models." + eventName + "Event"); + var type = Type.GetType("Arke.ARI.Models." + eventName + "Event"); var evnt = (type != null) ? (Event)JsonConvert.DeserializeObject(e.Message, type) @@ -166,7 +166,7 @@ private void _eventProducer_OnMessageReceived(object sender, MessageEventArgs e) { FireEvent(evnt.Type, evnt, this); } - catch(Exception ex) + catch (Exception ex) { // Handle any exceptions that were thrown by the invoked event handler if (!UnhandledException(this, ex)) @@ -222,7 +222,7 @@ public bool Connected get { return _eventProducer.State == ConnectionState.Open; } } - public void Connect(bool autoReconnect = true, int autoReconnectDelay = 5) + public virtual void Connect(bool autoReconnect = true, int autoReconnectDelay = 5) { lock (_syncRoot) { @@ -235,7 +235,7 @@ public void Connect(bool autoReconnect = true, int autoReconnectDelay = 5) _eventProducer.Connect(_subscribeAllEvents, _ssl); } - public void Disconnect() + public virtual void Disconnect() { lock (_syncRoot) { diff --git a/AsterNET.ARI/ARIException.cs b/Arke.ARI/ARIException.cs similarity index 95% rename from AsterNET.ARI/ARIException.cs rename to Arke.ARI/ARIException.cs index e24bd65..1f528bb 100644 --- a/AsterNET.ARI/ARIException.cs +++ b/Arke.ARI/ARIException.cs @@ -1,6 +1,6 @@ using System; -namespace AsterNET.ARI +namespace Arke.ARI { /// /// An excpetion within the ARI framework diff --git a/Arke.ARI/ARI_1_0/ARIClient.cs b/Arke.ARI/ARI_1_0/ARIClient.cs new file mode 100644 index 0000000..31b5d38 --- /dev/null +++ b/Arke.ARI/ARI_1_0/ARIClient.cs @@ -0,0 +1,434 @@ + /* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Models; + +namespace Arke.ARI +{ + public delegate void DeviceStateChangedEventHandler(IAriClient sender, DeviceStateChangedEvent e); + public delegate void PlaybackStartedEventHandler(IAriClient sender, PlaybackStartedEvent e); + public delegate void PlaybackContinuingEventHandler(IAriClient sender, PlaybackContinuingEvent e); + public delegate void PlaybackFinishedEventHandler(IAriClient sender, PlaybackFinishedEvent e); + public delegate void RecordingStartedEventHandler(IAriClient sender, RecordingStartedEvent e); + public delegate void RecordingFinishedEventHandler(IAriClient sender, RecordingFinishedEvent e); + public delegate void RecordingFailedEventHandler(IAriClient sender, RecordingFailedEvent e); + public delegate void ApplicationMoveFailedEventHandler(IAriClient sender, ApplicationMoveFailedEvent e); + public delegate void ApplicationReplacedEventHandler(IAriClient sender, ApplicationReplacedEvent e); + public delegate void BridgeCreatedEventHandler(IAriClient sender, BridgeCreatedEvent e); + public delegate void BridgeDestroyedEventHandler(IAriClient sender, BridgeDestroyedEvent e); + public delegate void BridgeMergedEventHandler(IAriClient sender, BridgeMergedEvent e); + public delegate void BridgeVideoSourceChangedEventHandler(IAriClient sender, BridgeVideoSourceChangedEvent e); + public delegate void BridgeBlindTransferEventHandler(IAriClient sender, BridgeBlindTransferEvent e); + public delegate void BridgeAttendedTransferEventHandler(IAriClient sender, BridgeAttendedTransferEvent e); + public delegate void ChannelCreatedEventHandler(IAriClient sender, ChannelCreatedEvent e); + public delegate void ChannelDestroyedEventHandler(IAriClient sender, ChannelDestroyedEvent e); + public delegate void ChannelEnteredBridgeEventHandler(IAriClient sender, ChannelEnteredBridgeEvent e); + public delegate void ChannelLeftBridgeEventHandler(IAriClient sender, ChannelLeftBridgeEvent e); + public delegate void ChannelStateChangeEventHandler(IAriClient sender, ChannelStateChangeEvent e); + public delegate void ChannelDtmfReceivedEventHandler(IAriClient sender, ChannelDtmfReceivedEvent e); + public delegate void ChannelDialplanEventHandler(IAriClient sender, ChannelDialplanEvent e); + public delegate void ChannelCallerIdEventHandler(IAriClient sender, ChannelCallerIdEvent e); + public delegate void ChannelUsereventEventHandler(IAriClient sender, ChannelUsereventEvent e); + public delegate void ChannelHangupRequestEventHandler(IAriClient sender, ChannelHangupRequestEvent e); + public delegate void ChannelVarsetEventHandler(IAriClient sender, ChannelVarsetEvent e); + public delegate void ChannelHoldEventHandler(IAriClient sender, ChannelHoldEvent e); + public delegate void ChannelUnholdEventHandler(IAriClient sender, ChannelUnholdEvent e); + public delegate void ChannelTalkingStartedEventHandler(IAriClient sender, ChannelTalkingStartedEvent e); + public delegate void ChannelTalkingFinishedEventHandler(IAriClient sender, ChannelTalkingFinishedEvent e); + public delegate void ContactStatusChangeEventHandler(IAriClient sender, ContactStatusChangeEvent e); + public delegate void PeerStatusChangeEventHandler(IAriClient sender, PeerStatusChangeEvent e); + public delegate void EndpointStateChangeEventHandler(IAriClient sender, EndpointStateChangeEvent e); + public delegate void DialEventHandler(IAriClient sender, DialEvent e); + public delegate void StasisEndEventHandler(IAriClient sender, StasisEndEvent e); + public delegate void StasisStartEventHandler(IAriClient sender, StasisStartEvent e); + public delegate void TextMessageReceivedEventHandler(IAriClient sender, TextMessageReceivedEvent e); + public delegate void ChannelConnectedLineEventHandler(IAriClient sender, ChannelConnectedLineEvent e); + public delegate void UnhandledEventHandler(object sender, Arke.ARI.Models.Event eventMessage); + + + public interface IAriEventClient + { + event DeviceStateChangedEventHandler OnDeviceStateChangedEvent; + event PlaybackStartedEventHandler OnPlaybackStartedEvent; + event PlaybackContinuingEventHandler OnPlaybackContinuingEvent; + event PlaybackFinishedEventHandler OnPlaybackFinishedEvent; + event RecordingStartedEventHandler OnRecordingStartedEvent; + event RecordingFinishedEventHandler OnRecordingFinishedEvent; + event RecordingFailedEventHandler OnRecordingFailedEvent; + event ApplicationMoveFailedEventHandler OnApplicationMoveFailedEvent; + event ApplicationReplacedEventHandler OnApplicationReplacedEvent; + event BridgeCreatedEventHandler OnBridgeCreatedEvent; + event BridgeDestroyedEventHandler OnBridgeDestroyedEvent; + event BridgeMergedEventHandler OnBridgeMergedEvent; + event BridgeVideoSourceChangedEventHandler OnBridgeVideoSourceChangedEvent; + event BridgeBlindTransferEventHandler OnBridgeBlindTransferEvent; + event BridgeAttendedTransferEventHandler OnBridgeAttendedTransferEvent; + event ChannelCreatedEventHandler OnChannelCreatedEvent; + event ChannelDestroyedEventHandler OnChannelDestroyedEvent; + event ChannelEnteredBridgeEventHandler OnChannelEnteredBridgeEvent; + event ChannelLeftBridgeEventHandler OnChannelLeftBridgeEvent; + event ChannelStateChangeEventHandler OnChannelStateChangeEvent; + event ChannelDtmfReceivedEventHandler OnChannelDtmfReceivedEvent; + event ChannelDialplanEventHandler OnChannelDialplanEvent; + event ChannelCallerIdEventHandler OnChannelCallerIdEvent; + event ChannelUsereventEventHandler OnChannelUsereventEvent; + event ChannelHangupRequestEventHandler OnChannelHangupRequestEvent; + event ChannelVarsetEventHandler OnChannelVarsetEvent; + event ChannelHoldEventHandler OnChannelHoldEvent; + event ChannelUnholdEventHandler OnChannelUnholdEvent; + event ChannelTalkingStartedEventHandler OnChannelTalkingStartedEvent; + event ChannelTalkingFinishedEventHandler OnChannelTalkingFinishedEvent; + event ContactStatusChangeEventHandler OnContactStatusChangeEvent; + event PeerStatusChangeEventHandler OnPeerStatusChangeEvent; + event EndpointStateChangeEventHandler OnEndpointStateChangeEvent; + event DialEventHandler OnDialEvent; + event StasisEndEventHandler OnStasisEndEvent; + event StasisStartEventHandler OnStasisStartEvent; + event TextMessageReceivedEventHandler OnTextMessageReceivedEvent; + event ChannelConnectedLineEventHandler OnChannelConnectedLineEvent; + event UnhandledEventHandler OnUnhandledEvent; + } + + + /// + /// + /// + public class BaseAriClient : IAriEventClient + { + + #region Events + public virtual event DeviceStateChangedEventHandler OnDeviceStateChangedEvent; + public virtual event PlaybackStartedEventHandler OnPlaybackStartedEvent; + public virtual event PlaybackContinuingEventHandler OnPlaybackContinuingEvent; + public virtual event PlaybackFinishedEventHandler OnPlaybackFinishedEvent; + public virtual event RecordingStartedEventHandler OnRecordingStartedEvent; + public virtual event RecordingFinishedEventHandler OnRecordingFinishedEvent; + public virtual event RecordingFailedEventHandler OnRecordingFailedEvent; + public virtual event ApplicationMoveFailedEventHandler OnApplicationMoveFailedEvent; + public virtual event ApplicationReplacedEventHandler OnApplicationReplacedEvent; + public virtual event BridgeCreatedEventHandler OnBridgeCreatedEvent; + public virtual event BridgeDestroyedEventHandler OnBridgeDestroyedEvent; + public virtual event BridgeMergedEventHandler OnBridgeMergedEvent; + public virtual event BridgeVideoSourceChangedEventHandler OnBridgeVideoSourceChangedEvent; + public virtual event BridgeBlindTransferEventHandler OnBridgeBlindTransferEvent; + public virtual event BridgeAttendedTransferEventHandler OnBridgeAttendedTransferEvent; + public virtual event ChannelCreatedEventHandler OnChannelCreatedEvent; + public virtual event ChannelDestroyedEventHandler OnChannelDestroyedEvent; + public virtual event ChannelEnteredBridgeEventHandler OnChannelEnteredBridgeEvent; + public virtual event ChannelLeftBridgeEventHandler OnChannelLeftBridgeEvent; + public virtual event ChannelStateChangeEventHandler OnChannelStateChangeEvent; + public virtual event ChannelDtmfReceivedEventHandler OnChannelDtmfReceivedEvent; + public virtual event ChannelDialplanEventHandler OnChannelDialplanEvent; + public virtual event ChannelCallerIdEventHandler OnChannelCallerIdEvent; + public virtual event ChannelUsereventEventHandler OnChannelUsereventEvent; + public virtual event ChannelHangupRequestEventHandler OnChannelHangupRequestEvent; + public virtual event ChannelVarsetEventHandler OnChannelVarsetEvent; + public virtual event ChannelHoldEventHandler OnChannelHoldEvent; + public virtual event ChannelUnholdEventHandler OnChannelUnholdEvent; + public virtual event ChannelTalkingStartedEventHandler OnChannelTalkingStartedEvent; + public virtual event ChannelTalkingFinishedEventHandler OnChannelTalkingFinishedEvent; + public virtual event ContactStatusChangeEventHandler OnContactStatusChangeEvent; + public virtual event PeerStatusChangeEventHandler OnPeerStatusChangeEvent; + public virtual event EndpointStateChangeEventHandler OnEndpointStateChangeEvent; + public virtual event DialEventHandler OnDialEvent; + public virtual event StasisEndEventHandler OnStasisEndEvent; + public virtual event StasisStartEventHandler OnStasisStartEvent; + public virtual event TextMessageReceivedEventHandler OnTextMessageReceivedEvent; + public virtual event ChannelConnectedLineEventHandler OnChannelConnectedLineEvent; + public virtual event UnhandledEventHandler OnUnhandledEvent; + public virtual event UnhandledExceptionEventHandler OnUnhandledException; + #endregion + + protected bool UnhandledException(object sender, Exception exception) + { + if (OnUnhandledException != null) + { + OnUnhandledException(sender, new UnhandledExceptionEventArgs(exception, false)); + return true; + } + return false; + } + + protected void FireEvent(string eventName, object eventArgs, IAriClient sender) + { + + switch(eventName) + { + + + case "DeviceStateChanged": + if(OnDeviceStateChangedEvent != null) + OnDeviceStateChangedEvent(sender, (DeviceStateChangedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "PlaybackStarted": + if(OnPlaybackStartedEvent != null) + OnPlaybackStartedEvent(sender, (PlaybackStartedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "PlaybackContinuing": + if(OnPlaybackContinuingEvent != null) + OnPlaybackContinuingEvent(sender, (PlaybackContinuingEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "PlaybackFinished": + if(OnPlaybackFinishedEvent != null) + OnPlaybackFinishedEvent(sender, (PlaybackFinishedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "RecordingStarted": + if(OnRecordingStartedEvent != null) + OnRecordingStartedEvent(sender, (RecordingStartedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "RecordingFinished": + if(OnRecordingFinishedEvent != null) + OnRecordingFinishedEvent(sender, (RecordingFinishedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "RecordingFailed": + if(OnRecordingFailedEvent != null) + OnRecordingFailedEvent(sender, (RecordingFailedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ApplicationMoveFailed": + if(OnApplicationMoveFailedEvent != null) + OnApplicationMoveFailedEvent(sender, (ApplicationMoveFailedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ApplicationReplaced": + if(OnApplicationReplacedEvent != null) + OnApplicationReplacedEvent(sender, (ApplicationReplacedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeCreated": + if(OnBridgeCreatedEvent != null) + OnBridgeCreatedEvent(sender, (BridgeCreatedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeDestroyed": + if(OnBridgeDestroyedEvent != null) + OnBridgeDestroyedEvent(sender, (BridgeDestroyedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeMerged": + if(OnBridgeMergedEvent != null) + OnBridgeMergedEvent(sender, (BridgeMergedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeVideoSourceChanged": + if(OnBridgeVideoSourceChangedEvent != null) + OnBridgeVideoSourceChangedEvent(sender, (BridgeVideoSourceChangedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeBlindTransfer": + if(OnBridgeBlindTransferEvent != null) + OnBridgeBlindTransferEvent(sender, (BridgeBlindTransferEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "BridgeAttendedTransfer": + if(OnBridgeAttendedTransferEvent != null) + OnBridgeAttendedTransferEvent(sender, (BridgeAttendedTransferEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelCreated": + if(OnChannelCreatedEvent != null) + OnChannelCreatedEvent(sender, (ChannelCreatedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelDestroyed": + if(OnChannelDestroyedEvent != null) + OnChannelDestroyedEvent(sender, (ChannelDestroyedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelEnteredBridge": + if(OnChannelEnteredBridgeEvent != null) + OnChannelEnteredBridgeEvent(sender, (ChannelEnteredBridgeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelLeftBridge": + if(OnChannelLeftBridgeEvent != null) + OnChannelLeftBridgeEvent(sender, (ChannelLeftBridgeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelStateChange": + if(OnChannelStateChangeEvent != null) + OnChannelStateChangeEvent(sender, (ChannelStateChangeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelDtmfReceived": + if(OnChannelDtmfReceivedEvent != null) + OnChannelDtmfReceivedEvent(sender, (ChannelDtmfReceivedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelDialplan": + if(OnChannelDialplanEvent != null) + OnChannelDialplanEvent(sender, (ChannelDialplanEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelCallerId": + if(OnChannelCallerIdEvent != null) + OnChannelCallerIdEvent(sender, (ChannelCallerIdEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelUserevent": + if(OnChannelUsereventEvent != null) + OnChannelUsereventEvent(sender, (ChannelUsereventEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelHangupRequest": + if(OnChannelHangupRequestEvent != null) + OnChannelHangupRequestEvent(sender, (ChannelHangupRequestEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelVarset": + if(OnChannelVarsetEvent != null) + OnChannelVarsetEvent(sender, (ChannelVarsetEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelHold": + if(OnChannelHoldEvent != null) + OnChannelHoldEvent(sender, (ChannelHoldEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelUnhold": + if(OnChannelUnholdEvent != null) + OnChannelUnholdEvent(sender, (ChannelUnholdEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelTalkingStarted": + if(OnChannelTalkingStartedEvent != null) + OnChannelTalkingStartedEvent(sender, (ChannelTalkingStartedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelTalkingFinished": + if(OnChannelTalkingFinishedEvent != null) + OnChannelTalkingFinishedEvent(sender, (ChannelTalkingFinishedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ContactStatusChange": + if(OnContactStatusChangeEvent != null) + OnContactStatusChangeEvent(sender, (ContactStatusChangeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "PeerStatusChange": + if(OnPeerStatusChangeEvent != null) + OnPeerStatusChangeEvent(sender, (PeerStatusChangeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "EndpointStateChange": + if(OnEndpointStateChangeEvent != null) + OnEndpointStateChangeEvent(sender, (EndpointStateChangeEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "Dial": + if(OnDialEvent != null) + OnDialEvent(sender, (DialEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "StasisEnd": + if(OnStasisEndEvent != null) + OnStasisEndEvent(sender, (StasisEndEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "StasisStart": + if(OnStasisStartEvent != null) + OnStasisStartEvent(sender, (StasisStartEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "TextMessageReceived": + if(OnTextMessageReceivedEvent != null) + OnTextMessageReceivedEvent(sender, (TextMessageReceivedEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + + + case "ChannelConnectedLine": + if(OnChannelConnectedLineEvent != null) + OnChannelConnectedLineEvent(sender, (ChannelConnectedLineEvent)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + default: + if(OnUnhandledEvent!=null) + OnUnhandledEvent(this, (Event)eventArgs); + else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event) eventArgs); + break; + } + } + } +} diff --git a/AsterNET.ARI/ARI_1_0/Actions/ARIBaseAction.cs b/Arke.ARI/ARI_1_0/Actions/ARIBaseAction.cs similarity index 82% rename from AsterNET.ARI/ARI_1_0/Actions/ARIBaseAction.cs rename to Arke.ARI/ARI_1_0/Actions/ARIBaseAction.cs index ad9056f..082a8a9 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/ARIBaseAction.cs +++ b/Arke.ARI/ARI_1_0/Actions/ARIBaseAction.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; -using AsterNET.ARI.Middleware; +using Arke.ARI.Middleware; -namespace AsterNET.ARI +namespace Arke.ARI { public class ARIBaseAction { @@ -32,12 +32,12 @@ protected IRestCommandResult Execute(IRestCommand command) protected async Task> ExecuteTask(IRestCommand command) where T : new() { - return await _consumer.ProcessRestTaskCommand(command); + return await _consumer.ProcessRestCommandAsync(command); } protected async Task ExecuteTask(IRestCommand command) { - return await _consumer.ProcessRestTaskCommand(command); + return await _consumer.ProcessRestCommandAsync(command); } } } \ No newline at end of file diff --git a/AsterNET.ARI/ARI_1_0/Actions/ApplicationsActions.cs b/Arke.ARI/ARI_1_0/Actions/ApplicationsActions.cs similarity index 60% rename from AsterNET.ARI/ARI_1_0/Actions/ApplicationsActions.cs rename to Arke.ARI/ARI_1_0/Actions/ApplicationsActions.cs index 9a62759..6218359 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/ApplicationsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/ApplicationsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class ApplicationsActions : ARIBaseAction, IApplicationsActions @@ -22,7 +22,7 @@ public ApplicationsActions(IActionConsumer consumer) /// /// List all applications.. /// - public List List() + public virtual List List() { string path = "applications"; var request = GetNewRequest(path, HttpMethod.GET); @@ -42,7 +42,7 @@ public List List() /// Get details of an application.. /// /// Application's name - public Application Get(string applicationName) + public virtual Application Get(string applicationName) { string path = "applications/{applicationName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -67,7 +67,7 @@ public Application Get(string applicationName) /// /// Application's name /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - public Application Subscribe(string applicationName, string eventSource) + public virtual Application Subscribe(string applicationName, string eventSource) { string path = "applications/{applicationName}/subscription"; var request = GetNewRequest(path, HttpMethod.POST); @@ -98,7 +98,7 @@ public Application Subscribe(string applicationName, string eventSource) /// /// Application's name /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - public Application Unsubscribe(string applicationName, string eventSource) + public virtual Application Unsubscribe(string applicationName, string eventSource) { string path = "applications/{applicationName}/subscription"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -126,11 +126,42 @@ public Application Unsubscribe(string applicationName, string eventSource) throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); } } + /// + /// Filter application events types.. Allowed and/or disallowed event type filtering can be done. The body (parameter) should specify a JSON key/value object that describes the type of event filtering needed. One, or both of the following keys can be designated:

"allowed" - Specifies an allowed list of event types
"disallowed" - Specifies a disallowed list of event types

Further, each of those key's value should be a JSON array that holds zero, or more JSON key/value objects. Each of these objects must contain the following key with an associated value:

"type" - The type name of the event to filter

The value must be the string name (case sensitive) of the event type that needs filtering. For example:

{ "allowed": [ { "type": "StasisStart" }, { "type": "StasisEnd" } ] }

As this specifies only an allowed list, then only those two event type messages are sent to the application. No other event messages are sent.

The following rules apply:

* If the body is empty, both the allowed and disallowed filters are set empty.
* If both list types are given then both are set to their respective values (note, specifying an empty array for a given type sets that type to empty).
* If only one list type is given then only that type is set. The other type is not updated.
* An empty "allowed" list means all events are allowed.
* An empty "disallowed" list means no events are disallowed.
* Disallowed events take precedence over allowed events if the event type is specified in both lists. + ///
+ /// Application's name + /// Specify which event types to allow/disallow + public virtual Application Filter(string applicationName, object filter = null) + { + string path = "applications/{applicationName}/eventFilter"; + var request = GetNewRequest(path, HttpMethod.PUT); + if (applicationName != null) + request.AddUrlSegment("applicationName", applicationName); + if (filter != null) + { + request.AddParameter("application/json", new { filter = filter }, ParameterType.RequestBody); + } + + var response = Execute(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 400: + throw new AriException("Bad request.", (int)response.StatusCode); + case 404: + throw new AriException("Application does not exist.", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } /// /// List all applications.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "applications"; var request = GetNewRequest(path, HttpMethod.GET); @@ -149,7 +180,7 @@ public async Task> ListAsync() /// /// Get details of an application.. /// - public async Task GetAsync(string applicationName) + public virtual async Task GetAsync(string applicationName) { string path = "applications/{applicationName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -172,7 +203,7 @@ public async Task GetAsync(string applicationName) /// /// Subscribe an application to a event source.. Returns the state of the application after the subscriptions have changed /// - public async Task SubscribeAsync(string applicationName, string eventSource) + public virtual async Task SubscribeAsync(string applicationName, string eventSource) { string path = "applications/{applicationName}/subscription"; var request = GetNewRequest(path, HttpMethod.POST); @@ -201,7 +232,7 @@ public async Task SubscribeAsync(string applicationName, string eve /// /// Unsubscribe an application from an event source.. Returns the state of the application after the subscriptions have changed /// - public async Task UnsubscribeAsync(string applicationName, string eventSource) + public virtual async Task UnsubscribeAsync(string applicationName, string eventSource) { string path = "applications/{applicationName}/subscription"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -229,6 +260,35 @@ public async Task UnsubscribeAsync(string applicationName, string e throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); } } + /// + /// Filter application events types.. Allowed and/or disallowed event type filtering can be done. The body (parameter) should specify a JSON key/value object that describes the type of event filtering needed. One, or both of the following keys can be designated:

"allowed" - Specifies an allowed list of event types
"disallowed" - Specifies a disallowed list of event types

Further, each of those key's value should be a JSON array that holds zero, or more JSON key/value objects. Each of these objects must contain the following key with an associated value:

"type" - The type name of the event to filter

The value must be the string name (case sensitive) of the event type that needs filtering. For example:

{ "allowed": [ { "type": "StasisStart" }, { "type": "StasisEnd" } ] }

As this specifies only an allowed list, then only those two event type messages are sent to the application. No other event messages are sent.

The following rules apply:

* If the body is empty, both the allowed and disallowed filters are set empty.
* If both list types are given then both are set to their respective values (note, specifying an empty array for a given type sets that type to empty).
* If only one list type is given then only that type is set. The other type is not updated.
* An empty "allowed" list means all events are allowed.
* An empty "disallowed" list means no events are disallowed.
* Disallowed events take precedence over allowed events if the event type is specified in both lists. + ///
+ public virtual async Task FilterAsync(string applicationName, object filter = null) + { + string path = "applications/{applicationName}/eventFilter"; + var request = GetNewRequest(path, HttpMethod.PUT); + if (applicationName != null) + request.AddUrlSegment("applicationName", applicationName); + if (filter != null) + { + request.AddParameter("application/json", new { filter = filter }, ParameterType.RequestBody); + } + + var response = await ExecuteTask(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 400: + throw new AriException("Bad request.", (int)response.StatusCode); + case 404: + throw new AriException("Application does not exist.", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } } } diff --git a/AsterNET.ARI/ARI_1_0/Actions/AsteriskActions.cs b/Arke.ARI/ARI_1_0/Actions/AsteriskActions.cs similarity index 89% rename from AsterNET.ARI/ARI_1_0/Actions/AsteriskActions.cs rename to Arke.ARI/ARI_1_0/Actions/AsteriskActions.cs index 61fd4cf..5d4e43d 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/AsteriskActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/AsteriskActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class AsteriskActions : ARIBaseAction, IAsteriskActions @@ -25,7 +25,7 @@ public AsteriskActions(IActionConsumer consumer) /// The configuration class containing dynamic configuration objects. /// The type of configuration object to retrieve. /// The unique identifier of the object to retrieve. - public List GetObject(string configClass, string objectType, string id) + public virtual List GetObject(string configClass, string objectType, string id) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -56,7 +56,7 @@ public List GetObject(string configClass, string objectType, string /// The type of configuration object to create or update. /// The unique identifier of the object to create or update. /// The body object should have a value that is a list of ConfigTuples, which provide the fields to update. Ex. [ { "attribute": "directmedia", "value": "false" } ] - public List UpdateObject(string configClass, string objectType, string id, Dictionary fields = null) + public virtual List UpdateObject(string configClass, string objectType, string id, Dictionary fields = null) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -94,7 +94,7 @@ public List UpdateObject(string configClass, string objectType, str /// The configuration class containing dynamic configuration objects. /// The type of configuration object to delete. /// The unique identifier of the object to delete. - public void DeleteObject(string configClass, string objectType, string id) + public virtual void DeleteObject(string configClass, string objectType, string id) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -122,7 +122,7 @@ public void DeleteObject(string configClass, string objectType, string id) /// Gets Asterisk system information.. /// /// Filter information returned - public AsteriskInfo GetInfo(string only = null) + public virtual AsteriskInfo GetInfo(string only = null) { string path = "asterisk/info"; var request = GetNewRequest(path, HttpMethod.GET); @@ -141,9 +141,28 @@ public AsteriskInfo GetInfo(string only = null) } } /// + /// Response pong message.. + /// + public virtual AsteriskPing Ping() + { + string path = "asterisk/ping"; + var request = GetNewRequest(path, HttpMethod.GET); + + var response = Execute(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// List Asterisk modules.. /// - public List ListModules() + public virtual List ListModules() { string path = "asterisk/modules"; var request = GetNewRequest(path, HttpMethod.GET); @@ -163,7 +182,7 @@ public List ListModules() /// Get Asterisk module information.. /// /// Module's name - public Module GetModule(string moduleName) + public virtual Module GetModule(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -189,7 +208,7 @@ public Module GetModule(string moduleName) /// Load an Asterisk module.. /// /// Module's name - public void LoadModule(string moduleName) + public virtual void LoadModule(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -211,7 +230,7 @@ public void LoadModule(string moduleName) /// Unload an Asterisk module.. /// /// Module's name - public void UnloadModule(string moduleName) + public virtual void UnloadModule(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -235,7 +254,7 @@ public void UnloadModule(string moduleName) /// Reload an Asterisk module.. /// /// Module's name - public void ReloadModule(string moduleName) + public virtual void ReloadModule(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -258,7 +277,7 @@ public void ReloadModule(string moduleName) /// /// Gets Asterisk log channel information.. /// - public List ListLogChannels() + public virtual List ListLogChannels() { string path = "asterisk/logging"; var request = GetNewRequest(path, HttpMethod.GET); @@ -279,7 +298,7 @@ public List ListLogChannels() /// /// The log channel to add /// levels of the log channel - public void AddLog(string logChannelName, string configuration) + public virtual void AddLog(string logChannelName, string configuration) { string path = "asterisk/logging/{logChannelName}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -305,7 +324,7 @@ public void AddLog(string logChannelName, string configuration) /// Deletes a log channel.. /// /// Log channels name - public void DeleteLog(string logChannelName) + public virtual void DeleteLog(string logChannelName) { string path = "asterisk/logging/{logChannelName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -327,7 +346,7 @@ public void DeleteLog(string logChannelName) /// Rotates a log channel.. /// /// Log channel's name - public void RotateLog(string logChannelName) + public virtual void RotateLog(string logChannelName) { string path = "asterisk/logging/{logChannelName}/rotate"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -349,7 +368,7 @@ public void RotateLog(string logChannelName) /// Get the value of a global variable.. /// /// The variable to get - public Variable GetGlobalVar(string variable) + public virtual Variable GetGlobalVar(string variable) { string path = "asterisk/variable"; var request = GetNewRequest(path, HttpMethod.GET); @@ -374,7 +393,7 @@ public Variable GetGlobalVar(string variable) /// /// The variable to set /// The value to set the variable to - public void SetGlobalVar(string variable, string value = null) + public virtual void SetGlobalVar(string variable, string value = null) { string path = "asterisk/variable"; var request = GetNewRequest(path, HttpMethod.POST); @@ -398,7 +417,7 @@ public void SetGlobalVar(string variable, string value = null) /// /// Retrieve a dynamic configuration object.. /// - public async Task> GetObjectAsync(string configClass, string objectType, string id) + public virtual async Task> GetObjectAsync(string configClass, string objectType, string id) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -425,7 +444,7 @@ public async Task> GetObjectAsync(string configClass, string o /// /// Create or update a dynamic configuration object.. /// - public async Task> UpdateObjectAsync(string configClass, string objectType, string id, Dictionary fields = null) + public virtual async Task> UpdateObjectAsync(string configClass, string objectType, string id, Dictionary fields = null) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -460,7 +479,7 @@ public async Task> UpdateObjectAsync(string configClass, strin /// /// Delete a dynamic configuration object.. /// - public async Task DeleteObjectAsync(string configClass, string objectType, string id) + public virtual async Task DeleteObjectAsync(string configClass, string objectType, string id) { string path = "asterisk/config/dynamic/{configClass}/{objectType}/{id}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -487,7 +506,7 @@ public async Task DeleteObjectAsync(string configClass, string objectType, strin /// /// Gets Asterisk system information.. /// - public async Task GetInfoAsync(string only = null) + public virtual async Task GetInfoAsync(string only = null) { string path = "asterisk/info"; var request = GetNewRequest(path, HttpMethod.GET); @@ -506,9 +525,28 @@ public async Task GetInfoAsync(string only = null) } } /// + /// Response pong message.. + /// + public virtual async Task PingAsync() + { + string path = "asterisk/ping"; + var request = GetNewRequest(path, HttpMethod.GET); + + var response = await ExecuteTask(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// List Asterisk modules.. /// - public async Task> ListModulesAsync() + public virtual async Task> ListModulesAsync() { string path = "asterisk/modules"; var request = GetNewRequest(path, HttpMethod.GET); @@ -527,7 +565,7 @@ public async Task> ListModulesAsync() /// /// Get Asterisk module information.. /// - public async Task GetModuleAsync(string moduleName) + public virtual async Task GetModuleAsync(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -552,7 +590,7 @@ public async Task GetModuleAsync(string moduleName) /// /// Load an Asterisk module.. /// - public async Task LoadModuleAsync(string moduleName) + public virtual async Task LoadModuleAsync(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -573,7 +611,7 @@ public async Task LoadModuleAsync(string moduleName) /// /// Unload an Asterisk module.. /// - public async Task UnloadModuleAsync(string moduleName) + public virtual async Task UnloadModuleAsync(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -596,7 +634,7 @@ public async Task UnloadModuleAsync(string moduleName) /// /// Reload an Asterisk module.. /// - public async Task ReloadModuleAsync(string moduleName) + public virtual async Task ReloadModuleAsync(string moduleName) { string path = "asterisk/modules/{moduleName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -619,7 +657,7 @@ public async Task ReloadModuleAsync(string moduleName) /// /// Gets Asterisk log channel information.. /// - public async Task> ListLogChannelsAsync() + public virtual async Task> ListLogChannelsAsync() { string path = "asterisk/logging"; var request = GetNewRequest(path, HttpMethod.GET); @@ -638,7 +676,7 @@ public async Task> ListLogChannelsAsync() /// /// Adds a log channel.. /// - public async Task AddLogAsync(string logChannelName, string configuration) + public virtual async Task AddLogAsync(string logChannelName, string configuration) { string path = "asterisk/logging/{logChannelName}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -663,7 +701,7 @@ public async Task AddLogAsync(string logChannelName, string configuration) /// /// Deletes a log channel.. /// - public async Task DeleteLogAsync(string logChannelName) + public virtual async Task DeleteLogAsync(string logChannelName) { string path = "asterisk/logging/{logChannelName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -684,7 +722,7 @@ public async Task DeleteLogAsync(string logChannelName) /// /// Rotates a log channel.. /// - public async Task RotateLogAsync(string logChannelName) + public virtual async Task RotateLogAsync(string logChannelName) { string path = "asterisk/logging/{logChannelName}/rotate"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -705,7 +743,7 @@ public async Task RotateLogAsync(string logChannelName) /// /// Get the value of a global variable.. /// - public async Task GetGlobalVarAsync(string variable) + public virtual async Task GetGlobalVarAsync(string variable) { string path = "asterisk/variable"; var request = GetNewRequest(path, HttpMethod.GET); @@ -728,7 +766,7 @@ public async Task GetGlobalVarAsync(string variable) /// /// Set the value of a global variable.. /// - public async Task SetGlobalVarAsync(string variable, string value = null) + public virtual async Task SetGlobalVarAsync(string variable, string value = null) { string path = "asterisk/variable"; var request = GetNewRequest(path, HttpMethod.POST); diff --git a/AsterNET.ARI/ARI_1_0/Actions/BridgesActions.cs b/Arke.ARI/ARI_1_0/Actions/BridgesActions.cs similarity index 78% rename from AsterNET.ARI/ARI_1_0/Actions/BridgesActions.cs rename to Arke.ARI/ARI_1_0/Actions/BridgesActions.cs index 9979e77..fc656dc 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/BridgesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/BridgesActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class BridgesActions : ARIBaseAction, IBridgesActions @@ -22,7 +22,7 @@ public BridgesActions(IActionConsumer consumer) /// /// List all active bridges in Asterisk.. /// - public List List() + public virtual List List() { string path = "bridges"; var request = GetNewRequest(path, HttpMethod.GET); @@ -41,10 +41,10 @@ public List List() /// /// Create a new bridge.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media). + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single). /// Unique ID to give to the bridge being created. /// Name to give to the bridge being created. - public Bridge Create(string type = null, string bridgeId = null, string name = null) + public virtual Bridge Create(string type = null, string bridgeId = null, string name = null) { string path = "bridges"; var request = GetNewRequest(path, HttpMethod.POST); @@ -69,10 +69,10 @@ public Bridge Create(string type = null, string bridgeId = null, string name = n /// /// Create a new bridge or updates an existing one.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media) to set. + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single) to set. /// Unique ID to give to the bridge being created. /// Set the name of the bridge. - public Bridge CreateWithId(string bridgeId, string type = null, string name = null) + public virtual Bridge CreateWithId(string bridgeId, string type = null, string name = null) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -98,7 +98,7 @@ public Bridge CreateWithId(string bridgeId, string type = null, string name = nu /// Get bridge details.. /// /// Bridge's id - public Bridge Get(string bridgeId) + public virtual Bridge Get(string bridgeId) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -122,7 +122,7 @@ public Bridge Get(string bridgeId) /// Shut down a bridge.. If any channels are in this bridge, they will be removed and resume whatever they were doing beforehand. /// /// Bridge's id - public void Destroy(string bridgeId) + public virtual void Destroy(string bridgeId) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -146,7 +146,10 @@ public void Destroy(string bridgeId) /// Bridge's id /// Ids of channels to add to bridge /// Channel's role in the bridge - public void AddChannel(string bridgeId, string channel, string role = null) + /// Absorb DTMF coming from this channel, preventing it to pass through to the bridge + /// Mute audio from this channel, preventing it to pass through to the bridge + /// Do not present the identity of the newly connected channel to other bridge members + public virtual void AddChannel(string bridgeId, string channel, string role = null, bool? absorbDTMF = null, bool? mute = null, bool? inhibitConnectedLineUpdates = null) { string path = "bridges/{bridgeId}/addChannel"; var request = GetNewRequest(path, HttpMethod.POST); @@ -156,6 +159,12 @@ public void AddChannel(string bridgeId, string channel, string role = null) request.AddParameter("channel", channel, ParameterType.QueryString); if (role != null) request.AddParameter("role", role, ParameterType.QueryString); + if (absorbDTMF != null) + request.AddParameter("absorbDTMF", absorbDTMF, ParameterType.QueryString); + if (mute != null) + request.AddParameter("mute", mute, ParameterType.QueryString); + if (inhibitConnectedLineUpdates != null) + request.AddParameter("inhibitConnectedLineUpdates", inhibitConnectedLineUpdates, ParameterType.QueryString); var response = Execute(request); if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) return; @@ -179,7 +188,7 @@ public void AddChannel(string bridgeId, string channel, string role = null) /// /// Bridge's id /// Ids of channels to remove from bridge - public void RemoveChannel(string bridgeId, string channel) + public virtual void RemoveChannel(string bridgeId, string channel) { string path = "bridges/{bridgeId}/removeChannel"; var request = GetNewRequest(path, HttpMethod.POST); @@ -206,11 +215,62 @@ public void RemoveChannel(string bridgeId, string channel) } } /// + /// Set a channel as the video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants.. + /// + /// Bridge's id + /// Channel's id + public virtual void SetVideoSource(string bridgeId, string channelId) + { + string path = "bridges/{bridgeId}/videoSource/{channelId}"; + var request = GetNewRequest(path, HttpMethod.POST); + if (bridgeId != null) + request.AddUrlSegment("bridgeId", bridgeId); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + var response = Execute(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Bridge or Channel not found", (int)response.StatusCode); + case 409: + throw new AriException("Channel not in Stasis application", (int)response.StatusCode); + case 422: + throw new AriException("Channel not in this Bridge", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// + /// Removes any explicit video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants. When no explicit video source is set, talk detection will be used to determine the active video stream.. + /// + /// Bridge's id + public virtual void ClearVideoSource(string bridgeId) + { + string path = "bridges/{bridgeId}/videoSource"; + var request = GetNewRequest(path, HttpMethod.DELETE); + if (bridgeId != null) + request.AddUrlSegment("bridgeId", bridgeId); + var response = Execute(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Bridge not found", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// Play music on hold to a bridge or change the MOH class that is playing.. /// /// Bridge's id /// Channel's id - public void StartMoh(string bridgeId, string mohClass = null) + public virtual void StartMoh(string bridgeId, string mohClass = null) { string path = "bridges/{bridgeId}/moh"; var request = GetNewRequest(path, HttpMethod.POST); @@ -236,7 +296,7 @@ public void StartMoh(string bridgeId, string mohClass = null) /// Stop playing music on hold to a bridge.. This will only stop music on hold being played via POST bridges/{bridgeId}/moh. /// /// Bridge's id - public void StopMoh(string bridgeId) + public virtual void StopMoh(string bridgeId) { string path = "bridges/{bridgeId}/moh"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -265,7 +325,7 @@ public void StopMoh(string bridgeId) /// Number of milliseconds to skip before playing. Only applies to the first URI if multiple media URIs are specified. /// Number of milliseconds to skip for forward/reverse operations. /// Playback Id. - public Playback Play(string bridgeId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) + public virtual Playback Play(string bridgeId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) { string path = "bridges/{bridgeId}/play"; var request = GetNewRequest(path, HttpMethod.POST); @@ -306,7 +366,7 @@ public Playback Play(string bridgeId, string media, string lang = null, int? off /// For sounds, selects language for sound. /// Number of milliseconds to skip before playing. Only applies to the first URI if multiple media URIs are specified. /// Number of milliseconds to skip for forward/reverse operations. - public Playback PlayWithId(string bridgeId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) + public virtual Playback PlayWithId(string bridgeId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) { string path = "bridges/{bridgeId}/play/{playbackId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -349,7 +409,7 @@ public Playback PlayWithId(string bridgeId, string playbackId, string media, str /// Action to take if a recording with the same name already exists. /// Play beep when recording begins /// DTMF input to terminate recording. - public LiveRecording Record(string bridgeId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) + public virtual LiveRecording Record(string bridgeId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) { string path = "bridges/{bridgeId}/record"; var request = GetNewRequest(path, HttpMethod.POST); @@ -393,7 +453,7 @@ public LiveRecording Record(string bridgeId, string name, string format, int? ma /// /// List all active bridges in Asterisk.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "bridges"; var request = GetNewRequest(path, HttpMethod.GET); @@ -412,7 +472,7 @@ public async Task> ListAsync() /// /// Create a new bridge.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - public async Task CreateAsync(string type = null, string bridgeId = null, string name = null) + public virtual async Task CreateAsync(string type = null, string bridgeId = null, string name = null) { string path = "bridges"; var request = GetNewRequest(path, HttpMethod.POST); @@ -437,7 +497,7 @@ public async Task CreateAsync(string type = null, string bridgeId = null /// /// Create a new bridge or updates an existing one.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - public async Task CreateWithIdAsync(string bridgeId, string type = null, string name = null) + public virtual async Task CreateWithIdAsync(string bridgeId, string type = null, string name = null) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -462,7 +522,7 @@ public async Task CreateWithIdAsync(string bridgeId, string type = null, /// /// Get bridge details.. /// - public async Task GetAsync(string bridgeId) + public virtual async Task GetAsync(string bridgeId) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -485,7 +545,7 @@ public async Task GetAsync(string bridgeId) /// /// Shut down a bridge.. If any channels are in this bridge, they will be removed and resume whatever they were doing beforehand. /// - public async Task DestroyAsync(string bridgeId) + public virtual async Task DestroyAsync(string bridgeId) { string path = "bridges/{bridgeId}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -506,7 +566,7 @@ public async Task DestroyAsync(string bridgeId) /// /// Add a channel to a bridge.. /// - public async Task AddChannelAsync(string bridgeId, string channel, string role = null) + public virtual async Task AddChannelAsync(string bridgeId, string channel, string role = null, bool? absorbDTMF = null, bool? mute = null, bool? inhibitConnectedLineUpdates = null) { string path = "bridges/{bridgeId}/addChannel"; var request = GetNewRequest(path, HttpMethod.POST); @@ -516,6 +576,12 @@ public async Task AddChannelAsync(string bridgeId, string channel, string role = request.AddParameter("channel", channel, ParameterType.QueryString); if (role != null) request.AddParameter("role", role, ParameterType.QueryString); + if (absorbDTMF != null) + request.AddParameter("absorbDTMF", absorbDTMF, ParameterType.QueryString); + if (mute != null) + request.AddParameter("mute", mute, ParameterType.QueryString); + if (inhibitConnectedLineUpdates != null) + request.AddParameter("inhibitConnectedLineUpdates", inhibitConnectedLineUpdates, ParameterType.QueryString); var response = await ExecuteTask(request); if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) return; @@ -537,7 +603,7 @@ public async Task AddChannelAsync(string bridgeId, string channel, string role = /// /// Remove a channel from a bridge.. /// - public async Task RemoveChannelAsync(string bridgeId, string channel) + public virtual async Task RemoveChannelAsync(string bridgeId, string channel) { string path = "bridges/{bridgeId}/removeChannel"; var request = GetNewRequest(path, HttpMethod.POST); @@ -564,9 +630,57 @@ public async Task RemoveChannelAsync(string bridgeId, string channel) } } /// + /// Set a channel as the video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants.. + /// + public virtual async Task SetVideoSourceAsync(string bridgeId, string channelId) + { + string path = "bridges/{bridgeId}/videoSource/{channelId}"; + var request = GetNewRequest(path, HttpMethod.POST); + if (bridgeId != null) + request.AddUrlSegment("bridgeId", bridgeId); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + var response = await ExecuteTask(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Bridge or Channel not found", (int)response.StatusCode); + case 409: + throw new AriException("Channel not in Stasis application", (int)response.StatusCode); + case 422: + throw new AriException("Channel not in this Bridge", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// + /// Removes any explicit video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants. When no explicit video source is set, talk detection will be used to determine the active video stream.. + /// + public virtual async Task ClearVideoSourceAsync(string bridgeId) + { + string path = "bridges/{bridgeId}/videoSource"; + var request = GetNewRequest(path, HttpMethod.DELETE); + if (bridgeId != null) + request.AddUrlSegment("bridgeId", bridgeId); + var response = await ExecuteTask(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Bridge not found", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// Play music on hold to a bridge or change the MOH class that is playing.. /// - public async Task StartMohAsync(string bridgeId, string mohClass = null) + public virtual async Task StartMohAsync(string bridgeId, string mohClass = null) { string path = "bridges/{bridgeId}/moh"; var request = GetNewRequest(path, HttpMethod.POST); @@ -591,7 +705,7 @@ public async Task StartMohAsync(string bridgeId, string mohClass = null) /// /// Stop playing music on hold to a bridge.. This will only stop music on hold being played via POST bridges/{bridgeId}/moh. /// - public async Task StopMohAsync(string bridgeId) + public virtual async Task StopMohAsync(string bridgeId) { string path = "bridges/{bridgeId}/moh"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -614,7 +728,7 @@ public async Task StopMohAsync(string bridgeId) /// /// Start playback of media on a bridge.. The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.) /// - public async Task PlayAsync(string bridgeId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) + public virtual async Task PlayAsync(string bridgeId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) { string path = "bridges/{bridgeId}/play"; var request = GetNewRequest(path, HttpMethod.POST); @@ -649,7 +763,7 @@ public async Task PlayAsync(string bridgeId, string media, string lang /// /// Start playback of media on a bridge.. The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.) /// - public async Task PlayWithIdAsync(string bridgeId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) + public virtual async Task PlayWithIdAsync(string bridgeId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) { string path = "bridges/{bridgeId}/play/{playbackId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -684,7 +798,7 @@ public async Task PlayWithIdAsync(string bridgeId, string playbackId, /// /// Start a recording.. This records the mixed audio from all channels participating in this bridge. /// - public async Task RecordAsync(string bridgeId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) + public virtual async Task RecordAsync(string bridgeId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) { string path = "bridges/{bridgeId}/record"; var request = GetNewRequest(path, HttpMethod.POST); diff --git a/AsterNET.ARI/ARI_1_0/Actions/ChannelsActions.cs b/Arke.ARI/ARI_1_0/Actions/ChannelsActions.cs similarity index 82% rename from AsterNET.ARI/ARI_1_0/Actions/ChannelsActions.cs rename to Arke.ARI/ARI_1_0/Actions/ChannelsActions.cs index 37d4a36..820d9ca 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/ChannelsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/ChannelsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class ChannelsActions : ARIBaseAction, IChannelsActions @@ -22,7 +22,7 @@ public ChannelsActions(IActionConsumer consumer) /// /// List all active channels in Asterisk.. /// - public List List() + public virtual List List() { string path = "channels"; var request = GetNewRequest(path, HttpMethod.GET); @@ -55,7 +55,7 @@ public List List() /// The unique id to assign the second channel when using local channels. /// The unique id of the channel which is originating this one. /// The format name capability list to use if originator is not specified. Ex. "ulaw,slin16". Format names can be found with "core show codecs". - public Channel Originate(string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) + public virtual Channel Originate(string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) { string path = "channels"; var request = GetNewRequest(path, HttpMethod.POST); @@ -98,6 +98,8 @@ public Channel Originate(string endpoint, string extension = null, string contex { case 400: throw new AriException("Invalid parameters for originating a channel.", (int)response.StatusCode); + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -113,7 +115,8 @@ public Channel Originate(string endpoint, string extension = null, string contex /// The unique id to assign the second channel when using local channels. /// Unique ID of the calling channel /// The format name capability list to use if originator is not specified. Ex. "ulaw,slin16". Format names can be found with "core show codecs". - public Channel Create(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + public virtual Channel Create(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null, Dictionary variables = null) { string path = "channels/create"; var request = GetNewRequest(path, HttpMethod.POST); @@ -131,6 +134,10 @@ public Channel Create(string endpoint, string app, string appArgs = null, string request.AddParameter("originator", originator, ParameterType.QueryString); if (formats != null) request.AddParameter("formats", formats, ParameterType.QueryString); + if (variables != null) + { + request.AddParameter("application/json", new { variables = variables }, ParameterType.RequestBody); + } var response = Execute(request); @@ -138,6 +145,8 @@ public Channel Create(string endpoint, string app, string appArgs = null, string return response.Data; switch ((int)response.StatusCode) { + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -147,7 +156,7 @@ public Channel Create(string endpoint, string app, string appArgs = null, string /// Channel details.. /// /// Channel's id - public Channel Get(string channelId) + public virtual Channel Get(string channelId) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -184,7 +193,7 @@ public Channel Get(string channelId) /// The unique id to assign the second channel when using local channels. /// The unique id of the channel which is originating this one. /// The format name capability list to use if originator is not specified. Ex. "ulaw,slin16". Format names can be found with "core show codecs". - public Channel OriginateWithId(string channelId, string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string otherChannelId = null, string originator = null, string formats = null) + public virtual Channel OriginateWithId(string channelId, string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string otherChannelId = null, string originator = null, string formats = null) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -227,6 +236,8 @@ public Channel OriginateWithId(string channelId, string endpoint, string extensi { case 400: throw new AriException("Invalid parameters for originating a channel.", (int)response.StatusCode); + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -236,13 +247,16 @@ public Channel OriginateWithId(string channelId, string endpoint, string extensi /// Delete (i.e. hangup) a channel.. /// /// Channel's id - /// Reason for hanging up the channel - public void Hangup(string channelId, string reason = null) + /// The reason code for hanging up the channel for detail use. Mutually exclusive with 'reason'. See detail hangup codes at here. https://wiki.asterisk.org/wiki/display/AST/Hangup+Cause+Mappings + /// Reason for hanging up the channel for simple use. Mutually exclusive with 'reason_code'. + public virtual void Hangup(string channelId, string reason_code = null, string reason = null) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.DELETE); if (channelId != null) request.AddUrlSegment("channelId", channelId); + if (reason_code != null) + request.AddParameter("reason_code", reason_code, ParameterType.QueryString); if (reason != null) request.AddParameter("reason", reason, ParameterType.QueryString); var response = Execute(request); @@ -267,7 +281,7 @@ public void Hangup(string channelId, string reason = null) /// The extension to continue to. /// The priority to continue to. /// The label to continue to - will supersede 'priority' if both are provided. - public void ContinueInDialplan(string channelId, string context = null, string extension = null, int? priority = null, string label = null) + public virtual void ContinueInDialplan(string channelId, string context = null, string extension = null, int? priority = null, string label = null) { string path = "channels/{channelId}/continue"; var request = GetNewRequest(path, HttpMethod.POST); @@ -298,11 +312,41 @@ public void ContinueInDialplan(string channelId, string context = null, string e } } /// + /// Move the channel from one Stasis application to another.. + /// + /// Channel's id + /// The channel will be passed to this Stasis application. + /// The application arguments to pass to the Stasis application provided by 'app'. + public virtual void Move(string channelId, string app, string appArgs = null) + { + string path = "channels/{channelId}/move"; + var request = GetNewRequest(path, HttpMethod.POST); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + if (app != null) + request.AddParameter("app", app, ParameterType.QueryString); + if (appArgs != null) + request.AddParameter("appArgs", appArgs, ParameterType.QueryString); + var response = Execute(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Channel not found", (int)response.StatusCode); + case 409: + throw new AriException("Channel not in a Stasis application", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// Redirect the channel to a different location.. /// /// Channel's id /// The endpoint to redirect the channel to - public void Redirect(string channelId, string endpoint) + public virtual void Redirect(string channelId, string endpoint) { string path = "channels/{channelId}/redirect"; var request = GetNewRequest(path, HttpMethod.POST); @@ -334,7 +378,7 @@ public void Redirect(string channelId, string endpoint) /// Answer a channel.. /// /// Channel's id - public void Answer(string channelId) + public virtual void Answer(string channelId) { string path = "channels/{channelId}/answer"; var request = GetNewRequest(path, HttpMethod.POST); @@ -360,7 +404,7 @@ public void Answer(string channelId) /// Indicate ringing to a channel.. /// /// Channel's id - public void Ring(string channelId) + public virtual void Ring(string channelId) { string path = "channels/{channelId}/ring"; var request = GetNewRequest(path, HttpMethod.POST); @@ -386,7 +430,7 @@ public void Ring(string channelId) /// Stop ringing indication on a channel if locally generated.. /// /// Channel's id - public void RingStop(string channelId) + public virtual void RingStop(string channelId) { string path = "channels/{channelId}/ring"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -417,7 +461,7 @@ public void RingStop(string channelId) /// Amount of time in between DTMF digits (specified in milliseconds). /// Length of each DTMF digit (specified in milliseconds). /// Amount of time to wait after DTMF digits (specified in milliseconds) end. - public void SendDTMF(string channelId, string dtmf = null, int? before = null, int? between = null, int? duration = null, int? after = null) + public virtual void SendDTMF(string channelId, string dtmf = null, int? before = null, int? between = null, int? duration = null, int? after = null) { string path = "channels/{channelId}/dtmf"; var request = GetNewRequest(path, HttpMethod.POST); @@ -456,7 +500,7 @@ public void SendDTMF(string channelId, string dtmf = null, int? before = null, i /// /// Channel's id /// Direction in which to mute audio - public void Mute(string channelId, string direction = null) + public virtual void Mute(string channelId, string direction = null) { string path = "channels/{channelId}/mute"; var request = GetNewRequest(path, HttpMethod.POST); @@ -485,7 +529,7 @@ public void Mute(string channelId, string direction = null) /// /// Channel's id /// Direction in which to unmute audio - public void Unmute(string channelId, string direction = null) + public virtual void Unmute(string channelId, string direction = null) { string path = "channels/{channelId}/mute"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -513,7 +557,7 @@ public void Unmute(string channelId, string direction = null) /// Hold a channel.. /// /// Channel's id - public void Hold(string channelId) + public virtual void Hold(string channelId) { string path = "channels/{channelId}/hold"; var request = GetNewRequest(path, HttpMethod.POST); @@ -539,7 +583,7 @@ public void Hold(string channelId) /// Remove a channel from hold.. /// /// Channel's id - public void Unhold(string channelId) + public virtual void Unhold(string channelId) { string path = "channels/{channelId}/hold"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -566,7 +610,7 @@ public void Unhold(string channelId) /// /// Channel's id /// Music on hold class to use - public void StartMoh(string channelId, string mohClass = null) + public virtual void StartMoh(string channelId, string mohClass = null) { string path = "channels/{channelId}/moh"; var request = GetNewRequest(path, HttpMethod.POST); @@ -594,7 +638,7 @@ public void StartMoh(string channelId, string mohClass = null) /// Stop playing music on hold to a channel.. /// /// Channel's id - public void StopMoh(string channelId) + public virtual void StopMoh(string channelId) { string path = "channels/{channelId}/moh"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -620,7 +664,7 @@ public void StopMoh(string channelId) /// Play silence to a channel.. Using media operations such as /play on a channel playing silence in this manner will suspend silence without resuming automatically. /// /// Channel's id - public void StartSilence(string channelId) + public virtual void StartSilence(string channelId) { string path = "channels/{channelId}/silence"; var request = GetNewRequest(path, HttpMethod.POST); @@ -646,7 +690,7 @@ public void StartSilence(string channelId) /// Stop playing silence to a channel.. /// /// Channel's id - public void StopSilence(string channelId) + public virtual void StopSilence(string channelId) { string path = "channels/{channelId}/silence"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -677,7 +721,7 @@ public void StopSilence(string channelId) /// Number of milliseconds to skip before playing. Only applies to the first URI if multiple media URIs are specified. /// Number of milliseconds to skip for forward/reverse operations. /// Playback ID. - public Playback Play(string channelId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) + public virtual Playback Play(string channelId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) { string path = "channels/{channelId}/play"; var request = GetNewRequest(path, HttpMethod.POST); @@ -720,7 +764,7 @@ public Playback Play(string channelId, string media, string lang = null, int? of /// For sounds, selects language for sound. /// Number of milliseconds to skip before playing. Only applies to the first URI if multiple media URIs are specified. /// Number of milliseconds to skip for forward/reverse operations. - public Playback PlayWithId(string channelId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) + public virtual Playback PlayWithId(string channelId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) { string path = "channels/{channelId}/play/{playbackId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -765,7 +809,7 @@ public Playback PlayWithId(string channelId, string playbackId, string media, st /// Action to take if a recording with the same name already exists. /// Play beep when recording begins /// DTMF input to terminate recording - public LiveRecording Record(string channelId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) + public virtual LiveRecording Record(string channelId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) { string path = "channels/{channelId}/record"; var request = GetNewRequest(path, HttpMethod.POST); @@ -810,7 +854,7 @@ public LiveRecording Record(string channelId, string name, string format, int? m /// /// Channel's id /// The channel variable or function to get - public Variable GetChannelVar(string channelId, string variable) + public virtual Variable GetChannelVar(string channelId, string variable) { string path = "channels/{channelId}/variable"; var request = GetNewRequest(path, HttpMethod.GET); @@ -842,7 +886,7 @@ public Variable GetChannelVar(string channelId, string variable) /// Channel's id /// The channel variable or function to set /// The value to set the variable to - public void SetChannelVar(string channelId, string variable, string value = null) + public virtual void SetChannelVar(string channelId, string variable, string value = null) { string path = "channels/{channelId}/variable"; var request = GetNewRequest(path, HttpMethod.POST); @@ -877,7 +921,7 @@ public void SetChannelVar(string channelId, string variable, string value = null /// Application the snooping channel is placed into /// The application arguments to pass to the Stasis application /// Unique ID to assign to snooping channel - public Channel SnoopChannel(string channelId, string app, string spy = null, string whisper = null, string appArgs = null, string snoopId = null) + public virtual Channel SnoopChannel(string channelId, string app, string spy = null, string whisper = null, string appArgs = null, string snoopId = null) { string path = "channels/{channelId}/snoop"; var request = GetNewRequest(path, HttpMethod.POST); @@ -918,7 +962,7 @@ public Channel SnoopChannel(string channelId, string app, string spy = null, str /// Direction of audio to whisper into /// Application the snooping channel is placed into /// The application arguments to pass to the Stasis application - public Channel SnoopChannelWithId(string channelId, string snoopId, string app, string spy = null, string whisper = null, string appArgs = null) + public virtual Channel SnoopChannelWithId(string channelId, string snoopId, string app, string spy = null, string whisper = null, string appArgs = null) { string path = "channels/{channelId}/snoop/{snoopId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -956,7 +1000,7 @@ public Channel SnoopChannelWithId(string channelId, string snoopId, string app, /// Channel's id /// Channel ID of caller /// Dial timeout - public void Dial(string channelId, string caller = null, int? timeout = null) + public virtual void Dial(string channelId, string caller = null, int? timeout = null) { string path = "channels/{channelId}/dial"; var request = GetNewRequest(path, HttpMethod.POST); @@ -980,11 +1024,90 @@ public void Dial(string channelId, string caller = null, int? timeout = null) throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); } } + /// + /// RTP stats on a channel.. + /// + /// Channel's id + public virtual RTPstat Rtpstatistics(string channelId) + { + string path = "channels/{channelId}/rtp_statistics"; + var request = GetNewRequest(path, HttpMethod.GET); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + + var response = Execute(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Channel cannot be found.", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// + /// Start an External Media session.. Create a channel to an External Media source/sink. + /// + /// The unique id to assign the channel on creation. + /// Stasis Application to place channel into + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + /// Hostname/ip:port of external host + /// Payload encapsulation protocol + /// Transport protocol + /// Connection type (client/server) + /// Format to encode audio in + /// External media direction + /// An arbitrary data field + public virtual Channel ExternalMedia(string app, string external_host, string format, string channelId = null, Dictionary variables = null, string encapsulation = null, string transport = null, string connection_type = null, string direction = null, string data = null) + { + string path = "channels/externalMedia"; + var request = GetNewRequest(path, HttpMethod.POST); + if (channelId != null) + request.AddParameter("channelId", channelId, ParameterType.QueryString); + if (app != null) + request.AddParameter("app", app, ParameterType.QueryString); + if (variables != null) + { + request.AddParameter("application/json", new { variables = variables }, ParameterType.RequestBody); + } + if (external_host != null) + request.AddParameter("external_host", external_host, ParameterType.QueryString); + if (encapsulation != null) + request.AddParameter("encapsulation", encapsulation, ParameterType.QueryString); + if (transport != null) + request.AddParameter("transport", transport, ParameterType.QueryString); + if (connection_type != null) + request.AddParameter("connection_type", connection_type, ParameterType.QueryString); + if (format != null) + request.AddParameter("format", format, ParameterType.QueryString); + if (direction != null) + request.AddParameter("direction", direction, ParameterType.QueryString); + if (data != null) + request.AddParameter("data", data, ParameterType.QueryString); + + var response = Execute(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 400: + throw new AriException("Invalid parameters", (int)response.StatusCode); + case 409: + throw new AriException("Channel is not in a Stasis application; Channel is already bridged", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } /// /// List all active channels in Asterisk.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "channels"; var request = GetNewRequest(path, HttpMethod.GET); @@ -1003,7 +1126,7 @@ public async Task> ListAsync() /// /// Create a new channel (originate).. The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates. /// - public async Task OriginateAsync(string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) + public virtual async Task OriginateAsync(string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) { string path = "channels"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1046,6 +1169,8 @@ public async Task OriginateAsync(string endpoint, string extension = nu { case 400: throw new AriException("Invalid parameters for originating a channel.", (int)response.StatusCode); + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -1054,7 +1179,7 @@ public async Task OriginateAsync(string endpoint, string extension = nu /// /// Create channel.. /// - public async Task CreateAsync(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null) + public virtual async Task CreateAsync(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null, Dictionary variables = null) { string path = "channels/create"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1072,6 +1197,10 @@ public async Task CreateAsync(string endpoint, string app, string appAr request.AddParameter("originator", originator, ParameterType.QueryString); if (formats != null) request.AddParameter("formats", formats, ParameterType.QueryString); + if (variables != null) + { + request.AddParameter("application/json", new { variables = variables }, ParameterType.RequestBody); + } var response = await ExecuteTask(request); @@ -1079,6 +1208,8 @@ public async Task CreateAsync(string endpoint, string app, string appAr return response.Data; switch ((int)response.StatusCode) { + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -1087,7 +1218,7 @@ public async Task CreateAsync(string endpoint, string app, string appAr /// /// Channel details.. /// - public async Task GetAsync(string channelId) + public virtual async Task GetAsync(string channelId) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -1110,7 +1241,7 @@ public async Task GetAsync(string channelId) /// /// Create a new channel (originate with id).. The new channel is created immediately and a snapshot of it returned. If a Stasis application is provided it will be automatically subscribed to the originated channel for further events and updates. /// - public async Task OriginateWithIdAsync(string channelId, string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string otherChannelId = null, string originator = null, string formats = null) + public virtual async Task OriginateWithIdAsync(string channelId, string endpoint, string extension = null, string context = null, long? priority = null, string label = null, string app = null, string appArgs = null, string callerId = null, int? timeout = null, Dictionary variables = null, string otherChannelId = null, string originator = null, string formats = null) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1153,6 +1284,8 @@ public async Task OriginateWithIdAsync(string channelId, string endpoin { case 400: throw new AriException("Invalid parameters for originating a channel.", (int)response.StatusCode); + case 409: + throw new AriException("Channel with given unique ID already exists.", (int)response.StatusCode); default: // Unknown server response throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); @@ -1161,12 +1294,14 @@ public async Task OriginateWithIdAsync(string channelId, string endpoin /// /// Delete (i.e. hangup) a channel.. /// - public async Task HangupAsync(string channelId, string reason = null) + public virtual async Task HangupAsync(string channelId, string reason_code = null, string reason = null) { string path = "channels/{channelId}"; var request = GetNewRequest(path, HttpMethod.DELETE); if (channelId != null) request.AddUrlSegment("channelId", channelId); + if (reason_code != null) + request.AddParameter("reason_code", reason_code, ParameterType.QueryString); if (reason != null) request.AddParameter("reason", reason, ParameterType.QueryString); var response = await ExecuteTask(request); @@ -1186,7 +1321,7 @@ public async Task HangupAsync(string channelId, string reason = null) /// /// Exit application; continue execution in the dialplan.. /// - public async Task ContinueInDialplanAsync(string channelId, string context = null, string extension = null, int? priority = null, string label = null) + public virtual async Task ContinueInDialplanAsync(string channelId, string context = null, string extension = null, int? priority = null, string label = null) { string path = "channels/{channelId}/continue"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1217,9 +1352,36 @@ public async Task ContinueInDialplanAsync(string channelId, string context = nul } } /// + /// Move the channel from one Stasis application to another.. + /// + public virtual async Task MoveAsync(string channelId, string app, string appArgs = null) + { + string path = "channels/{channelId}/move"; + var request = GetNewRequest(path, HttpMethod.POST); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + if (app != null) + request.AddParameter("app", app, ParameterType.QueryString); + if (appArgs != null) + request.AddParameter("appArgs", appArgs, ParameterType.QueryString); + var response = await ExecuteTask(request); + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Channel not found", (int)response.StatusCode); + case 409: + throw new AriException("Channel not in a Stasis application", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// /// Redirect the channel to a different location.. /// - public async Task RedirectAsync(string channelId, string endpoint) + public virtual async Task RedirectAsync(string channelId, string endpoint) { string path = "channels/{channelId}/redirect"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1250,7 +1412,7 @@ public async Task RedirectAsync(string channelId, string endpoint) /// /// Answer a channel.. /// - public async Task AnswerAsync(string channelId) + public virtual async Task AnswerAsync(string channelId) { string path = "channels/{channelId}/answer"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1275,7 +1437,7 @@ public async Task AnswerAsync(string channelId) /// /// Indicate ringing to a channel.. /// - public async Task RingAsync(string channelId) + public virtual async Task RingAsync(string channelId) { string path = "channels/{channelId}/ring"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1300,7 +1462,7 @@ public async Task RingAsync(string channelId) /// /// Stop ringing indication on a channel if locally generated.. /// - public async Task RingStopAsync(string channelId) + public virtual async Task RingStopAsync(string channelId) { string path = "channels/{channelId}/ring"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -1325,7 +1487,7 @@ public async Task RingStopAsync(string channelId) /// /// Send provided DTMF to a given channel.. /// - public async Task SendDTMFAsync(string channelId, string dtmf = null, int? before = null, int? between = null, int? duration = null, int? after = null) + public virtual async Task SendDTMFAsync(string channelId, string dtmf = null, int? before = null, int? between = null, int? duration = null, int? after = null) { string path = "channels/{channelId}/dtmf"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1362,7 +1524,7 @@ public async Task SendDTMFAsync(string channelId, string dtmf = null, int? befor /// /// Mute a channel.. /// - public async Task MuteAsync(string channelId, string direction = null) + public virtual async Task MuteAsync(string channelId, string direction = null) { string path = "channels/{channelId}/mute"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1389,7 +1551,7 @@ public async Task MuteAsync(string channelId, string direction = null) /// /// Unmute a channel.. /// - public async Task UnmuteAsync(string channelId, string direction = null) + public virtual async Task UnmuteAsync(string channelId, string direction = null) { string path = "channels/{channelId}/mute"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -1416,7 +1578,7 @@ public async Task UnmuteAsync(string channelId, string direction = null) /// /// Hold a channel.. /// - public async Task HoldAsync(string channelId) + public virtual async Task HoldAsync(string channelId) { string path = "channels/{channelId}/hold"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1441,7 +1603,7 @@ public async Task HoldAsync(string channelId) /// /// Remove a channel from hold.. /// - public async Task UnholdAsync(string channelId) + public virtual async Task UnholdAsync(string channelId) { string path = "channels/{channelId}/hold"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -1466,7 +1628,7 @@ public async Task UnholdAsync(string channelId) /// /// Play music on hold to a channel.. Using media operations such as /play on a channel playing MOH in this manner will suspend MOH without resuming automatically. If continuing music on hold is desired, the stasis application must reinitiate music on hold. /// - public async Task StartMohAsync(string channelId, string mohClass = null) + public virtual async Task StartMohAsync(string channelId, string mohClass = null) { string path = "channels/{channelId}/moh"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1493,7 +1655,7 @@ public async Task StartMohAsync(string channelId, string mohClass = null) /// /// Stop playing music on hold to a channel.. /// - public async Task StopMohAsync(string channelId) + public virtual async Task StopMohAsync(string channelId) { string path = "channels/{channelId}/moh"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -1518,7 +1680,7 @@ public async Task StopMohAsync(string channelId) /// /// Play silence to a channel.. Using media operations such as /play on a channel playing silence in this manner will suspend silence without resuming automatically. /// - public async Task StartSilenceAsync(string channelId) + public virtual async Task StartSilenceAsync(string channelId) { string path = "channels/{channelId}/silence"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1543,7 +1705,7 @@ public async Task StartSilenceAsync(string channelId) /// /// Stop playing silence to a channel.. /// - public async Task StopSilenceAsync(string channelId) + public virtual async Task StopSilenceAsync(string channelId) { string path = "channels/{channelId}/silence"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -1568,7 +1730,7 @@ public async Task StopSilenceAsync(string channelId) /// /// Start playback of media.. The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.) /// - public async Task PlayAsync(string channelId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) + public virtual async Task PlayAsync(string channelId, string media, string lang = null, int? offsetms = null, int? skipms = null, string playbackId = null) { string path = "channels/{channelId}/play"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1605,7 +1767,7 @@ public async Task PlayAsync(string channelId, string media, string lan /// /// Start playback of media and specify the playbackId.. The media URI may be any of a number of URI's. Currently sound:, recording:, number:, digits:, characters:, and tone: URI's are supported. This operation creates a playback resource that can be used to control the playback of media (pause, rewind, fast forward, etc.) /// - public async Task PlayWithIdAsync(string channelId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) + public virtual async Task PlayWithIdAsync(string channelId, string playbackId, string media, string lang = null, int? offsetms = null, int? skipms = null) { string path = "channels/{channelId}/play/{playbackId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1642,7 +1804,7 @@ public async Task PlayWithIdAsync(string channelId, string playbackId, /// /// Start a recording.. Record audio from a channel. Note that this will not capture audio sent to the channel. The bridge itself has a record feature if that's what you want. /// - public async Task RecordAsync(string channelId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) + public virtual async Task RecordAsync(string channelId, string name, string format, int? maxDurationSeconds = null, int? maxSilenceSeconds = null, string ifExists = null, bool? beep = null, string terminateOn = null) { string path = "channels/{channelId}/record"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1685,7 +1847,7 @@ public async Task RecordAsync(string channelId, string name, stri /// /// Get the value of a channel variable or function.. /// - public async Task GetChannelVarAsync(string channelId, string variable) + public virtual async Task GetChannelVarAsync(string channelId, string variable) { string path = "channels/{channelId}/variable"; var request = GetNewRequest(path, HttpMethod.GET); @@ -1714,7 +1876,7 @@ public async Task GetChannelVarAsync(string channelId, string variable /// /// Set the value of a channel variable or function.. /// - public async Task SetChannelVarAsync(string channelId, string variable, string value = null) + public virtual async Task SetChannelVarAsync(string channelId, string variable, string value = null) { string path = "channels/{channelId}/variable"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1743,7 +1905,7 @@ public async Task SetChannelVarAsync(string channelId, string variable, string v /// /// Start snooping.. Snoop (spy/whisper) on a specific channel. /// - public async Task SnoopChannelAsync(string channelId, string app, string spy = null, string whisper = null, string appArgs = null, string snoopId = null) + public virtual async Task SnoopChannelAsync(string channelId, string app, string spy = null, string whisper = null, string appArgs = null, string snoopId = null) { string path = "channels/{channelId}/snoop"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1778,7 +1940,7 @@ public async Task SnoopChannelAsync(string channelId, string app, strin /// /// Start snooping.. Snoop (spy/whisper) on a specific channel. /// - public async Task SnoopChannelWithIdAsync(string channelId, string snoopId, string app, string spy = null, string whisper = null, string appArgs = null) + public virtual async Task SnoopChannelWithIdAsync(string channelId, string snoopId, string app, string spy = null, string whisper = null, string appArgs = null) { string path = "channels/{channelId}/snoop/{snoopId}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1813,7 +1975,7 @@ public async Task SnoopChannelWithIdAsync(string channelId, string snoo /// /// Dial a created channel.. /// - public async Task DialAsync(string channelId, string caller = null, int? timeout = null) + public virtual async Task DialAsync(string channelId, string caller = null, int? timeout = null) { string path = "channels/{channelId}/dial"; var request = GetNewRequest(path, HttpMethod.POST); @@ -1837,6 +1999,74 @@ public async Task DialAsync(string channelId, string caller = null, int? timeout throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); } } + /// + /// RTP stats on a channel.. + /// + public virtual async Task RtpstatisticsAsync(string channelId) + { + string path = "channels/{channelId}/rtp_statistics"; + var request = GetNewRequest(path, HttpMethod.GET); + if (channelId != null) + request.AddUrlSegment("channelId", channelId); + + var response = await ExecuteTask(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 404: + throw new AriException("Channel cannot be found.", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } + /// + /// Start an External Media session.. Create a channel to an External Media source/sink. + /// + public virtual async Task ExternalMediaAsync(string app, string external_host, string format, string channelId = null, Dictionary variables = null, string encapsulation = null, string transport = null, string connection_type = null, string direction = null, string data = null) + { + string path = "channels/externalMedia"; + var request = GetNewRequest(path, HttpMethod.POST); + if (channelId != null) + request.AddParameter("channelId", channelId, ParameterType.QueryString); + if (app != null) + request.AddParameter("app", app, ParameterType.QueryString); + if (variables != null) + { + request.AddParameter("application/json", new { variables = variables }, ParameterType.RequestBody); + } + if (external_host != null) + request.AddParameter("external_host", external_host, ParameterType.QueryString); + if (encapsulation != null) + request.AddParameter("encapsulation", encapsulation, ParameterType.QueryString); + if (transport != null) + request.AddParameter("transport", transport, ParameterType.QueryString); + if (connection_type != null) + request.AddParameter("connection_type", connection_type, ParameterType.QueryString); + if (format != null) + request.AddParameter("format", format, ParameterType.QueryString); + if (direction != null) + request.AddParameter("direction", direction, ParameterType.QueryString); + if (data != null) + request.AddParameter("data", data, ParameterType.QueryString); + + var response = await ExecuteTask(request); + + if ((int)response.StatusCode >= 200 && (int)response.StatusCode < 300) + return response.Data; + switch ((int)response.StatusCode) + { + case 400: + throw new AriException("Invalid parameters", (int)response.StatusCode); + case 409: + throw new AriException("Channel is not in a Stasis application; Channel is already bridged", (int)response.StatusCode); + default: + // Unknown server response + throw new AriException(string.Format("Unknown response code {0} from ARI.", response.StatusCode), (int)response.StatusCode); + } + } } } diff --git a/AsterNET.ARI/ARI_1_0/Actions/DeviceStatesActions.cs b/Arke.ARI/ARI_1_0/Actions/DeviceStatesActions.cs similarity index 92% rename from AsterNET.ARI/ARI_1_0/Actions/DeviceStatesActions.cs rename to Arke.ARI/ARI_1_0/Actions/DeviceStatesActions.cs index 3872815..24ba74e 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/DeviceStatesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/DeviceStatesActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class DeviceStatesActions : ARIBaseAction, IDeviceStatesActions @@ -22,7 +22,7 @@ public DeviceStatesActions(IActionConsumer consumer) /// /// List all ARI controlled device states.. /// - public List List() + public virtual List List() { string path = "deviceStates"; var request = GetNewRequest(path, HttpMethod.GET); @@ -42,7 +42,7 @@ public List List() /// Retrieve the current state of a device.. /// /// Name of the device - public DeviceState Get(string deviceName) + public virtual DeviceState Get(string deviceName) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -65,7 +65,7 @@ public DeviceState Get(string deviceName) /// /// Name of the device /// Device state value - public void Update(string deviceName, string deviceState) + public virtual void Update(string deviceName, string deviceState) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -91,7 +91,7 @@ public void Update(string deviceName, string deviceState) /// Destroy a device-state controlled by ARI.. /// /// Name of the device - public void Delete(string deviceName) + public virtual void Delete(string deviceName) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -115,7 +115,7 @@ public void Delete(string deviceName) /// /// List all ARI controlled device states.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "deviceStates"; var request = GetNewRequest(path, HttpMethod.GET); @@ -134,7 +134,7 @@ public async Task> ListAsync() /// /// Retrieve the current state of a device.. /// - public async Task GetAsync(string deviceName) + public virtual async Task GetAsync(string deviceName) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -155,7 +155,7 @@ public async Task GetAsync(string deviceName) /// /// Change the state of a device controlled by ARI. (Note - implicitly creates the device state).. /// - public async Task UpdateAsync(string deviceName, string deviceState) + public virtual async Task UpdateAsync(string deviceName, string deviceState) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -180,7 +180,7 @@ public async Task UpdateAsync(string deviceName, string deviceState) /// /// Destroy a device-state controlled by ARI.. /// - public async Task DeleteAsync(string deviceName) + public virtual async Task DeleteAsync(string deviceName) { string path = "deviceStates/{deviceName}"; var request = GetNewRequest(path, HttpMethod.DELETE); diff --git a/AsterNET.ARI/ARI_1_0/Actions/EndpointsActions.cs b/Arke.ARI/ARI_1_0/Actions/EndpointsActions.cs similarity index 91% rename from AsterNET.ARI/ARI_1_0/Actions/EndpointsActions.cs rename to Arke.ARI/ARI_1_0/Actions/EndpointsActions.cs index a7c534d..abeeb5a 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/EndpointsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/EndpointsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class EndpointsActions : ARIBaseAction, IEndpointsActions @@ -22,7 +22,7 @@ public EndpointsActions(IActionConsumer consumer) /// /// List all endpoints.. /// - public List List() + public virtual List List() { string path = "endpoints"; var request = GetNewRequest(path, HttpMethod.GET); @@ -44,7 +44,7 @@ public List List() /// The endpoint resource or technology specific URI to send the message to. Valid resources are sip, pjsip, and xmpp. /// The endpoint resource or technology specific identity to send this message from. Valid resources are sip, pjsip, and xmpp. /// The body of the message - public void SendMessage(string to, string from, string body = null, Dictionary variables = null) + public virtual void SendMessage(string to, string from, string body = null, Dictionary variables = null) { string path = "endpoints/sendMessage"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -76,7 +76,7 @@ public void SendMessage(string to, string from, string body = null, Dictionary /// Technology of the endpoints (sip,iax2,...) - public List ListByTech(string tech) + public virtual List ListByTech(string tech) { string path = "endpoints/{tech}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -101,7 +101,7 @@ public List ListByTech(string tech) /// /// Technology of the endpoint /// ID of the endpoint - public Endpoint Get(string tech, string resource) + public virtual Endpoint Get(string tech, string resource) { string path = "endpoints/{tech}/{resource}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -132,7 +132,7 @@ public Endpoint Get(string tech, string resource) /// ID of the endpoint /// The endpoint resource or technology specific identity to send this message from. Valid resources are sip, pjsip, and xmpp. /// The body of the message - public void SendMessageToEndpoint(string tech, string resource, string from, string body = null, Dictionary variables = null) + public virtual void SendMessageToEndpoint(string tech, string resource, string from, string body = null, Dictionary variables = null) { string path = "endpoints/{tech}/{resource}/sendMessage"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -166,7 +166,7 @@ public void SendMessageToEndpoint(string tech, string resource, string from, str /// /// List all endpoints.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "endpoints"; var request = GetNewRequest(path, HttpMethod.GET); @@ -185,7 +185,7 @@ public async Task> ListAsync() /// /// Send a message to some technology URI or endpoint.. /// - public async Task SendMessageAsync(string to, string from, string body = null, Dictionary variables = null) + public virtual async Task SendMessageAsync(string to, string from, string body = null, Dictionary variables = null) { string path = "endpoints/sendMessage"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -216,7 +216,7 @@ public async Task SendMessageAsync(string to, string from, string body = null, D /// /// List available endoints for a given endpoint technology.. /// - public async Task> ListByTechAsync(string tech) + public virtual async Task> ListByTechAsync(string tech) { string path = "endpoints/{tech}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -239,7 +239,7 @@ public async Task> ListByTechAsync(string tech) /// /// Details for an endpoint.. /// - public async Task GetAsync(string tech, string resource) + public virtual async Task GetAsync(string tech, string resource) { string path = "endpoints/{tech}/{resource}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -266,7 +266,7 @@ public async Task GetAsync(string tech, string resource) /// /// Send a message to some endpoint in a technology.. /// - public async Task SendMessageToEndpointAsync(string tech, string resource, string from, string body = null, Dictionary variables = null) + public virtual async Task SendMessageToEndpointAsync(string tech, string resource, string from, string body = null, Dictionary variables = null) { string path = "endpoints/{tech}/{resource}/sendMessage"; var request = GetNewRequest(path, HttpMethod.PUT); diff --git a/AsterNET.ARI/ARI_1_0/Actions/EventsActions.cs b/Arke.ARI/ARI_1_0/Actions/EventsActions.cs similarity index 90% rename from AsterNET.ARI/ARI_1_0/Actions/EventsActions.cs rename to Arke.ARI/ARI_1_0/Actions/EventsActions.cs index 71c0c41..1decfe8 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/EventsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/EventsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class EventsActions : ARIBaseAction, IEventsActions @@ -24,7 +24,7 @@ public EventsActions(IActionConsumer consumer) /// /// Applications to subscribe to. /// Subscribe to all Asterisk events. If provided, the applications listed will be subscribed to all events, effectively disabling the application specific subscriptions. Default is 'false'. - public Message EventWebsocket(string app, bool? subscribeAll = null) + public virtual Message EventWebsocket(string app, bool? subscribeAll = null) { string path = "events"; var request = GetNewRequest(path, HttpMethod.GET); @@ -51,7 +51,7 @@ public Message EventWebsocket(string app, bool? subscribeAll = null) /// The name of the application that will receive this event /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, deviceState:{deviceName} /// The "variables" key in the body object holds custom key/value pairs to add to the user event. Ex. { "variables": { "key": "value" } } - public void UserEvent(string eventName, string application, string source = null, Dictionary variables = null) + public virtual void UserEvent(string eventName, string application, string source = null, Dictionary variables = null) { string path = "events/user/{eventName}"; var request = GetNewRequest(path, HttpMethod.POST); @@ -85,7 +85,7 @@ public void UserEvent(string eventName, string application, string source = null /// /// WebSocket connection for events.. /// - public async Task EventWebsocketAsync(string app, bool? subscribeAll = null) + public virtual async Task EventWebsocketAsync(string app, bool? subscribeAll = null) { string path = "events"; var request = GetNewRequest(path, HttpMethod.GET); @@ -108,7 +108,7 @@ public async Task EventWebsocketAsync(string app, bool? subscribeAll = /// /// Generate a user event.. /// - public async Task UserEventAsync(string eventName, string application, string source = null, Dictionary variables = null) + public virtual async Task UserEventAsync(string eventName, string application, string source = null, Dictionary variables = null) { string path = "events/user/{eventName}"; var request = GetNewRequest(path, HttpMethod.POST); diff --git a/Arke.ARI/ARI_1_0/Actions/IApplicationsActions.cs b/Arke.ARI/ARI_1_0/Actions/IApplicationsActions.cs new file mode 100644 index 0000000..18b4a2f --- /dev/null +++ b/Arke.ARI/ARI_1_0/Actions/IApplicationsActions.cs @@ -0,0 +1,72 @@ +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Models; +using Arke.ARI; +using System.Threading.Tasks; + +namespace Arke.ARI.Actions +{ + + public interface IApplicationsActions + { + /// + /// List all applications.. + /// + List List(); + /// + /// Get details of an application.. + /// + /// Application's name + Application Get(string applicationName); + /// + /// Subscribe an application to a event source.. Returns the state of the application after the subscriptions have changed + /// + /// Application's name + /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} + Application Subscribe(string applicationName, string eventSource); + /// + /// Unsubscribe an application from an event source.. Returns the state of the application after the subscriptions have changed + /// + /// Application's name + /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} + Application Unsubscribe(string applicationName, string eventSource); + /// + /// Filter application events types.. Allowed and/or disallowed event type filtering can be done. The body (parameter) should specify a JSON key/value object that describes the type of event filtering needed. One, or both of the following keys can be designated:

"allowed" - Specifies an allowed list of event types
"disallowed" - Specifies a disallowed list of event types

Further, each of those key's value should be a JSON array that holds zero, or more JSON key/value objects. Each of these objects must contain the following key with an associated value:

"type" - The type name of the event to filter

The value must be the string name (case sensitive) of the event type that needs filtering. For example:

{ "allowed": [ { "type": "StasisStart" }, { "type": "StasisEnd" } ] }

As this specifies only an allowed list, then only those two event type messages are sent to the application. No other event messages are sent.

The following rules apply:

* If the body is empty, both the allowed and disallowed filters are set empty.
* If both list types are given then both are set to their respective values (note, specifying an empty array for a given type sets that type to empty).
* If only one list type is given then only that type is set. The other type is not updated.
* An empty "allowed" list means all events are allowed.
* An empty "disallowed" list means no events are disallowed.
* Disallowed events take precedence over allowed events if the event type is specified in both lists. + ///
+ /// Application's name + /// Specify which event types to allow/disallow + Application Filter(string applicationName, object filter = null); + + /// + /// List all applications.. + /// + Task> ListAsync(); + /// + /// Get details of an application.. + /// + /// Application's name + Task GetAsync(string applicationName); + /// + /// Subscribe an application to a event source.. Returns the state of the application after the subscriptions have changed + /// + /// Application's name + /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} + Task SubscribeAsync(string applicationName, string eventSource); + /// + /// Unsubscribe an application from an event source.. Returns the state of the application after the subscriptions have changed + /// + /// Application's name + /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} + Task UnsubscribeAsync(string applicationName, string eventSource); + /// + /// Filter application events types.. Allowed and/or disallowed event type filtering can be done. The body (parameter) should specify a JSON key/value object that describes the type of event filtering needed. One, or both of the following keys can be designated:

"allowed" - Specifies an allowed list of event types
"disallowed" - Specifies a disallowed list of event types

Further, each of those key's value should be a JSON array that holds zero, or more JSON key/value objects. Each of these objects must contain the following key with an associated value:

"type" - The type name of the event to filter

The value must be the string name (case sensitive) of the event type that needs filtering. For example:

{ "allowed": [ { "type": "StasisStart" }, { "type": "StasisEnd" } ] }

As this specifies only an allowed list, then only those two event type messages are sent to the application. No other event messages are sent.

The following rules apply:

* If the body is empty, both the allowed and disallowed filters are set empty.
* If both list types are given then both are set to their respective values (note, specifying an empty array for a given type sets that type to empty).
* If only one list type is given then only that type is set. The other type is not updated.
* An empty "allowed" list means all events are allowed.
* An empty "disallowed" list means no events are disallowed.
* Disallowed events take precedence over allowed events if the event type is specified in both lists. + ///
+ /// Application's name + /// Specify which event types to allow/disallow + Task FilterAsync(string applicationName, object filter = null); + } +} diff --git a/AsterNET.ARI/ARI_1_0/Actions/IAsteriskActions.cs b/Arke.ARI/ARI_1_0/Actions/IAsteriskActions.cs similarity index 95% rename from AsterNET.ARI/ARI_1_0/Actions/IAsteriskActions.cs rename to Arke.ARI/ARI_1_0/Actions/IAsteriskActions.cs index b770ea4..a230c22 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IAsteriskActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IAsteriskActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IAsteriskActions @@ -41,6 +41,10 @@ public interface IAsteriskActions /// Filter information returned AsteriskInfo GetInfo(string only = null); /// + /// Response pong message.. + /// + AsteriskPing Ping(); + /// /// List Asterisk modules.. /// List ListModules(); @@ -124,6 +128,10 @@ public interface IAsteriskActions /// Filter information returned Task GetInfoAsync(string only = null); /// + /// Response pong message.. + /// + Task PingAsync(); + /// /// List Asterisk modules.. /// Task> ListModulesAsync(); diff --git a/AsterNET.ARI/ARI_1_0/Actions/IBridgesActions.cs b/Arke.ARI/ARI_1_0/Actions/IBridgesActions.cs similarity index 79% rename from AsterNET.ARI/ARI_1_0/Actions/IBridgesActions.cs rename to Arke.ARI/ARI_1_0/Actions/IBridgesActions.cs index cef9770..dd42c61 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IBridgesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IBridgesActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IBridgesActions @@ -20,14 +20,14 @@ public interface IBridgesActions /// /// Create a new bridge.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media). + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single). /// Unique ID to give to the bridge being created. /// Name to give to the bridge being created. Bridge Create(string type = null, string bridgeId = null, string name = null); /// /// Create a new bridge or updates an existing one.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media) to set. + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single) to set. /// Unique ID to give to the bridge being created. /// Set the name of the bridge. Bridge CreateWithId(string bridgeId, string type = null, string name = null); @@ -47,7 +47,10 @@ public interface IBridgesActions /// Bridge's id /// Ids of channels to add to bridge /// Channel's role in the bridge - void AddChannel(string bridgeId, string channel, string role = null); + /// Absorb DTMF coming from this channel, preventing it to pass through to the bridge + /// Mute audio from this channel, preventing it to pass through to the bridge + /// Do not present the identity of the newly connected channel to other bridge members + void AddChannel(string bridgeId, string channel, string role = null, bool? absorbDTMF = null, bool? mute = null, bool? inhibitConnectedLineUpdates = null); /// /// Remove a channel from a bridge.. /// @@ -55,6 +58,17 @@ public interface IBridgesActions /// Ids of channels to remove from bridge void RemoveChannel(string bridgeId, string channel); /// + /// Set a channel as the video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants.. + /// + /// Bridge's id + /// Channel's id + void SetVideoSource(string bridgeId, string channelId); + /// + /// Removes any explicit video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants. When no explicit video source is set, talk detection will be used to determine the active video stream.. + /// + /// Bridge's id + void ClearVideoSource(string bridgeId); + /// /// Play music on hold to a bridge or change the MOH class that is playing.. /// /// Bridge's id @@ -105,14 +119,14 @@ public interface IBridgesActions /// /// Create a new bridge.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media). + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single). /// Unique ID to give to the bridge being created. /// Name to give to the bridge being created. Task CreateAsync(string type = null, string bridgeId = null, string name = null); /// /// Create a new bridge or updates an existing one.. This bridge persists until it has been shut down, or Asterisk has been shut down. /// - /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media) to set. + /// Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single) to set. /// Unique ID to give to the bridge being created. /// Set the name of the bridge. Task CreateWithIdAsync(string bridgeId, string type = null, string name = null); @@ -132,7 +146,10 @@ public interface IBridgesActions /// Bridge's id /// Ids of channels to add to bridge /// Channel's role in the bridge - Task AddChannelAsync(string bridgeId, string channel, string role = null); + /// Absorb DTMF coming from this channel, preventing it to pass through to the bridge + /// Mute audio from this channel, preventing it to pass through to the bridge + /// Do not present the identity of the newly connected channel to other bridge members + Task AddChannelAsync(string bridgeId, string channel, string role = null, bool? absorbDTMF = null, bool? mute = null, bool? inhibitConnectedLineUpdates = null); /// /// Remove a channel from a bridge.. /// @@ -140,6 +157,17 @@ public interface IBridgesActions /// Ids of channels to remove from bridge Task RemoveChannelAsync(string bridgeId, string channel); /// + /// Set a channel as the video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants.. + /// + /// Bridge's id + /// Channel's id + Task SetVideoSourceAsync(string bridgeId, string channelId); + /// + /// Removes any explicit video source in a multi-party mixing bridge. This operation has no effect on bridges with two or fewer participants. When no explicit video source is set, talk detection will be used to determine the active video stream.. + /// + /// Bridge's id + Task ClearVideoSourceAsync(string bridgeId); + /// /// Play music on hold to a bridge or change the MOH class that is playing.. /// /// Bridge's id diff --git a/AsterNET.ARI/ARI_1_0/Actions/IChannelsActions.cs b/Arke.ARI/ARI_1_0/Actions/IChannelsActions.cs similarity index 85% rename from AsterNET.ARI/ARI_1_0/Actions/IChannelsActions.cs rename to Arke.ARI/ARI_1_0/Actions/IChannelsActions.cs index 5da3d01..93c614b 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IChannelsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IChannelsActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IChannelsActions @@ -45,7 +45,8 @@ public interface IChannelsActions /// The unique id to assign the second channel when using local channels. /// Unique ID of the calling channel /// The format name capability list to use if originator is not specified. Ex. "ulaw,slin16". Format names can be found with "core show codecs". - Channel Create(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null); + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + Channel Create(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null, Dictionary variables = null); /// /// Channel details.. /// @@ -73,8 +74,9 @@ public interface IChannelsActions /// Delete (i.e. hangup) a channel.. /// /// Channel's id - /// Reason for hanging up the channel - void Hangup(string channelId, string reason = null); + /// The reason code for hanging up the channel for detail use. Mutually exclusive with 'reason'. See detail hangup codes at here. https://wiki.asterisk.org/wiki/display/AST/Hangup+Cause+Mappings + /// Reason for hanging up the channel for simple use. Mutually exclusive with 'reason_code'. + void Hangup(string channelId, string reason_code = null, string reason = null); /// /// Exit application; continue execution in the dialplan.. /// @@ -85,6 +87,13 @@ public interface IChannelsActions /// The label to continue to - will supersede 'priority' if both are provided. void ContinueInDialplan(string channelId, string context = null, string extension = null, int? priority = null, string label = null); /// + /// Move the channel from one Stasis application to another.. + /// + /// Channel's id + /// The channel will be passed to this Stasis application. + /// The application arguments to pass to the Stasis application provided by 'app'. + void Move(string channelId, string app, string appArgs = null); + /// /// Redirect the channel to a different location.. /// /// Channel's id @@ -230,6 +239,25 @@ public interface IChannelsActions /// Channel ID of caller /// Dial timeout void Dial(string channelId, string caller = null, int? timeout = null); + /// + /// RTP stats on a channel.. + /// + /// Channel's id + RTPstat Rtpstatistics(string channelId); + /// + /// Start an External Media session.. Create a channel to an External Media source/sink. + /// + /// The unique id to assign the channel on creation. + /// Stasis Application to place channel into + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + /// Hostname/ip:port of external host + /// Payload encapsulation protocol + /// Transport protocol + /// Connection type (client/server) + /// Format to encode audio in + /// External media direction + /// An arbitrary data field + Channel ExternalMedia(string app, string external_host, string format, string channelId = null, Dictionary variables = null, string encapsulation = null, string transport = null, string connection_type = null, string direction = null, string data = null); /// /// List all active channels in Asterisk.. @@ -263,7 +291,8 @@ public interface IChannelsActions /// The unique id to assign the second channel when using local channels. /// Unique ID of the calling channel /// The format name capability list to use if originator is not specified. Ex. "ulaw,slin16". Format names can be found with "core show codecs". - Task CreateAsync(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null); + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + Task CreateAsync(string endpoint, string app, string appArgs = null, string channelId = null, string otherChannelId = null, string originator = null, string formats = null, Dictionary variables = null); /// /// Channel details.. /// @@ -291,8 +320,9 @@ public interface IChannelsActions /// Delete (i.e. hangup) a channel.. /// /// Channel's id - /// Reason for hanging up the channel - Task HangupAsync(string channelId, string reason = null); + /// The reason code for hanging up the channel for detail use. Mutually exclusive with 'reason'. See detail hangup codes at here. https://wiki.asterisk.org/wiki/display/AST/Hangup+Cause+Mappings + /// Reason for hanging up the channel for simple use. Mutually exclusive with 'reason_code'. + Task HangupAsync(string channelId, string reason_code = null, string reason = null); /// /// Exit application; continue execution in the dialplan.. /// @@ -303,6 +333,13 @@ public interface IChannelsActions /// The label to continue to - will supersede 'priority' if both are provided. Task ContinueInDialplanAsync(string channelId, string context = null, string extension = null, int? priority = null, string label = null); /// + /// Move the channel from one Stasis application to another.. + /// + /// Channel's id + /// The channel will be passed to this Stasis application. + /// The application arguments to pass to the Stasis application provided by 'app'. + Task MoveAsync(string channelId, string app, string appArgs = null); + /// /// Redirect the channel to a different location.. /// /// Channel's id @@ -448,5 +485,24 @@ public interface IChannelsActions /// Channel ID of caller /// Dial timeout Task DialAsync(string channelId, string caller = null, int? timeout = null); + /// + /// RTP stats on a channel.. + /// + /// Channel's id + Task RtpstatisticsAsync(string channelId); + /// + /// Start an External Media session.. Create a channel to an External Media source/sink. + /// + /// The unique id to assign the channel on creation. + /// Stasis Application to place channel into + /// The "variables" key in the body object holds variable key/value pairs to set on the channel on creation. Other keys in the body object are interpreted as query parameters. Ex. { "endpoint": "SIP/Alice", "variables": { "CALLERID(name)": "Alice" } } + /// Hostname/ip:port of external host + /// Payload encapsulation protocol + /// Transport protocol + /// Connection type (client/server) + /// Format to encode audio in + /// External media direction + /// An arbitrary data field + Task ExternalMediaAsync(string app, string external_host, string format, string channelId = null, Dictionary variables = null, string encapsulation = null, string transport = null, string connection_type = null, string direction = null, string data = null); } } diff --git a/AsterNET.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs b/Arke.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs similarity index 92% rename from AsterNET.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs rename to Arke.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs index 8b0a61c..190e79f 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IDeviceStatesActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IDeviceStatesActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/IEndpointsActions.cs b/Arke.ARI/ARI_1_0/Actions/IEndpointsActions.cs similarity index 96% rename from AsterNET.ARI/ARI_1_0/Actions/IEndpointsActions.cs rename to Arke.ARI/ARI_1_0/Actions/IEndpointsActions.cs index 0f9bd90..e9e3d89 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IEndpointsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IEndpointsActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IEndpointsActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/IEventsActions.cs b/Arke.ARI/ARI_1_0/Actions/IEventsActions.cs similarity index 93% rename from AsterNET.ARI/ARI_1_0/Actions/IEventsActions.cs rename to Arke.ARI/ARI_1_0/Actions/IEventsActions.cs index 4edd0f9..758b52d 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IEventsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IEventsActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IEventsActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/IMailboxesActions.cs b/Arke.ARI/ARI_1_0/Actions/IMailboxesActions.cs similarity index 92% rename from AsterNET.ARI/ARI_1_0/Actions/IMailboxesActions.cs rename to Arke.ARI/ARI_1_0/Actions/IMailboxesActions.cs index 7774673..c82a227 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IMailboxesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IMailboxesActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IMailboxesActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/IPlaybacksActions.cs b/Arke.ARI/ARI_1_0/Actions/IPlaybacksActions.cs similarity index 89% rename from AsterNET.ARI/ARI_1_0/Actions/IPlaybacksActions.cs rename to Arke.ARI/ARI_1_0/Actions/IPlaybacksActions.cs index 893f762..10a9999 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IPlaybacksActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IPlaybacksActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IPlaybacksActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/IRecordingsActions.cs b/Arke.ARI/ARI_1_0/Actions/IRecordingsActions.cs similarity index 97% rename from AsterNET.ARI/ARI_1_0/Actions/IRecordingsActions.cs rename to Arke.ARI/ARI_1_0/Actions/IRecordingsActions.cs index 5cf015c..f8188fd 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/IRecordingsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/IRecordingsActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface IRecordingsActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/ISoundsActions.cs b/Arke.ARI/ARI_1_0/Actions/ISoundsActions.cs similarity index 87% rename from AsterNET.ARI/ARI_1_0/Actions/ISoundsActions.cs rename to Arke.ARI/ARI_1_0/Actions/ISoundsActions.cs index 70e2745..8354e4d 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/ISoundsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/ISoundsActions.cs @@ -1,14 +1,14 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; +using Arke.ARI.Models; +using Arke.ARI; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public interface ISoundsActions diff --git a/AsterNET.ARI/ARI_1_0/Actions/MailboxesActions.cs b/Arke.ARI/ARI_1_0/Actions/MailboxesActions.cs similarity index 91% rename from AsterNET.ARI/ARI_1_0/Actions/MailboxesActions.cs rename to Arke.ARI/ARI_1_0/Actions/MailboxesActions.cs index 473a1fd..1d2ad78 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/MailboxesActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/MailboxesActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class MailboxesActions : ARIBaseAction, IMailboxesActions @@ -22,7 +22,7 @@ public MailboxesActions(IActionConsumer consumer) /// /// List all mailboxes.. /// - public List List() + public virtual List List() { string path = "mailboxes"; var request = GetNewRequest(path, HttpMethod.GET); @@ -42,7 +42,7 @@ public List List() /// Retrieve the current state of a mailbox.. /// /// Name of the mailbox - public Mailbox Get(string mailboxName) + public virtual Mailbox Get(string mailboxName) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -68,7 +68,7 @@ public Mailbox Get(string mailboxName) /// Name of the mailbox /// Count of old messages in the mailbox /// Count of new messages in the mailbox - public void Update(string mailboxName, int oldMessages, int newMessages) + public virtual void Update(string mailboxName, int oldMessages, int newMessages) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -94,7 +94,7 @@ public void Update(string mailboxName, int oldMessages, int newMessages) /// Destroy a mailbox.. /// /// Name of the mailbox - public void Delete(string mailboxName) + public virtual void Delete(string mailboxName) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -116,7 +116,7 @@ public void Delete(string mailboxName) /// /// List all mailboxes.. /// - public async Task> ListAsync() + public virtual async Task> ListAsync() { string path = "mailboxes"; var request = GetNewRequest(path, HttpMethod.GET); @@ -135,7 +135,7 @@ public async Task> ListAsync() /// /// Retrieve the current state of a mailbox.. /// - public async Task GetAsync(string mailboxName) + public virtual async Task GetAsync(string mailboxName) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -158,7 +158,7 @@ public async Task GetAsync(string mailboxName) /// /// Change the state of a mailbox. (Note - implicitly creates the mailbox).. /// - public async Task UpdateAsync(string mailboxName, int oldMessages, int newMessages) + public virtual async Task UpdateAsync(string mailboxName, int oldMessages, int newMessages) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.PUT); @@ -183,7 +183,7 @@ public async Task UpdateAsync(string mailboxName, int oldMessages, int newMessag /// /// Destroy a mailbox.. /// - public async Task DeleteAsync(string mailboxName) + public virtual async Task DeleteAsync(string mailboxName) { string path = "mailboxes/{mailboxName}"; var request = GetNewRequest(path, HttpMethod.DELETE); diff --git a/AsterNET.ARI/ARI_1_0/Actions/PlaybacksActions.cs b/Arke.ARI/ARI_1_0/Actions/PlaybacksActions.cs similarity index 92% rename from AsterNET.ARI/ARI_1_0/Actions/PlaybacksActions.cs rename to Arke.ARI/ARI_1_0/Actions/PlaybacksActions.cs index 9685c28..5ed1c76 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/PlaybacksActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/PlaybacksActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class PlaybacksActions : ARIBaseAction, IPlaybacksActions @@ -23,7 +23,7 @@ public PlaybacksActions(IActionConsumer consumer) /// Get a playback's details.. /// /// Playback's id - public Playback Get(string playbackId) + public virtual Playback Get(string playbackId) { string path = "playbacks/{playbackId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -47,7 +47,7 @@ public Playback Get(string playbackId) /// Stop a playback.. /// /// Playback's id - public void Stop(string playbackId) + public virtual void Stop(string playbackId) { string path = "playbacks/{playbackId}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -70,7 +70,7 @@ public void Stop(string playbackId) /// /// Playback's id /// Operation to perform on the playback. - public void Control(string playbackId, string operation) + public virtual void Control(string playbackId, string operation) { string path = "playbacks/{playbackId}/control"; var request = GetNewRequest(path, HttpMethod.POST); @@ -98,7 +98,7 @@ public void Control(string playbackId, string operation) /// /// Get a playback's details.. /// - public async Task GetAsync(string playbackId) + public virtual async Task GetAsync(string playbackId) { string path = "playbacks/{playbackId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -121,7 +121,7 @@ public async Task GetAsync(string playbackId) /// /// Stop a playback.. /// - public async Task StopAsync(string playbackId) + public virtual async Task StopAsync(string playbackId) { string path = "playbacks/{playbackId}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -142,7 +142,7 @@ public async Task StopAsync(string playbackId) /// /// Control a playback.. /// - public async Task ControlAsync(string playbackId, string operation) + public virtual async Task ControlAsync(string playbackId, string operation) { string path = "playbacks/{playbackId}/control"; var request = GetNewRequest(path, HttpMethod.POST); diff --git a/AsterNET.ARI/ARI_1_0/Actions/RecordingsActions.cs b/Arke.ARI/ARI_1_0/Actions/RecordingsActions.cs similarity index 93% rename from AsterNET.ARI/ARI_1_0/Actions/RecordingsActions.cs rename to Arke.ARI/ARI_1_0/Actions/RecordingsActions.cs index df30645..e29809f 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/RecordingsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/RecordingsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class RecordingsActions : ARIBaseAction, IRecordingsActions @@ -22,7 +22,7 @@ public RecordingsActions(IActionConsumer consumer) /// /// List recordings that are complete.. /// - public List ListStored() + public virtual List ListStored() { string path = "recordings/stored"; var request = GetNewRequest(path, HttpMethod.GET); @@ -42,7 +42,7 @@ public List ListStored() /// Get a stored recording's details.. /// /// The name of the recording - public StoredRecording GetStored(string recordingName) + public virtual StoredRecording GetStored(string recordingName) { string path = "recordings/stored/{recordingName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -66,7 +66,7 @@ public StoredRecording GetStored(string recordingName) /// Delete a stored recording.. /// /// The name of the recording - public void DeleteStored(string recordingName) + public virtual void DeleteStored(string recordingName) { string path = "recordings/stored/{recordingName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -88,7 +88,7 @@ public void DeleteStored(string recordingName) /// Get the file associated with the stored recording.. /// /// The name of the recording - public byte[] GetStoredFile(string recordingName) + public virtual byte[] GetStoredFile(string recordingName) { string path = "recordings/stored/{recordingName}/file"; var request = GetNewRequest(path, HttpMethod.GET); @@ -113,7 +113,7 @@ public byte[] GetStoredFile(string recordingName) /// /// The name of the recording to copy /// The destination name of the recording - public StoredRecording CopyStored(string recordingName, string destinationRecordingName) + public virtual StoredRecording CopyStored(string recordingName, string destinationRecordingName) { string path = "recordings/stored/{recordingName}/copy"; var request = GetNewRequest(path, HttpMethod.POST); @@ -141,7 +141,7 @@ public StoredRecording CopyStored(string recordingName, string destinationRecord /// List live recordings.. /// /// The name of the recording - public LiveRecording GetLive(string recordingName) + public virtual LiveRecording GetLive(string recordingName) { string path = "recordings/live/{recordingName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -165,7 +165,7 @@ public LiveRecording GetLive(string recordingName) /// Stop a live recording and discard it.. /// /// The name of the recording - public void Cancel(string recordingName) + public virtual void Cancel(string recordingName) { string path = "recordings/live/{recordingName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -187,7 +187,7 @@ public void Cancel(string recordingName) /// Stop a live recording and store it.. /// /// The name of the recording - public void Stop(string recordingName) + public virtual void Stop(string recordingName) { string path = "recordings/live/{recordingName}/stop"; var request = GetNewRequest(path, HttpMethod.POST); @@ -209,7 +209,7 @@ public void Stop(string recordingName) /// Pause a live recording.. Pausing a recording suspends silence detection, which will be restarted when the recording is unpaused. Paused time is not included in the accounting for maxDurationSeconds. /// /// The name of the recording - public void Pause(string recordingName) + public virtual void Pause(string recordingName) { string path = "recordings/live/{recordingName}/pause"; var request = GetNewRequest(path, HttpMethod.POST); @@ -233,7 +233,7 @@ public void Pause(string recordingName) /// Unpause a live recording.. /// /// The name of the recording - public void Unpause(string recordingName) + public virtual void Unpause(string recordingName) { string path = "recordings/live/{recordingName}/pause"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -257,7 +257,7 @@ public void Unpause(string recordingName) /// Mute a live recording.. Muting a recording suspends silence detection, which will be restarted when the recording is unmuted. /// /// The name of the recording - public void Mute(string recordingName) + public virtual void Mute(string recordingName) { string path = "recordings/live/{recordingName}/mute"; var request = GetNewRequest(path, HttpMethod.POST); @@ -281,7 +281,7 @@ public void Mute(string recordingName) /// Unmute a live recording.. /// /// The name of the recording - public void Unmute(string recordingName) + public virtual void Unmute(string recordingName) { string path = "recordings/live/{recordingName}/mute"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -305,7 +305,7 @@ public void Unmute(string recordingName) /// /// List recordings that are complete.. /// - public async Task> ListStoredAsync() + public virtual async Task> ListStoredAsync() { string path = "recordings/stored"; var request = GetNewRequest(path, HttpMethod.GET); @@ -324,7 +324,7 @@ public async Task> ListStoredAsync() /// /// Get a stored recording's details.. /// - public async Task GetStoredAsync(string recordingName) + public virtual async Task GetStoredAsync(string recordingName) { string path = "recordings/stored/{recordingName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -347,7 +347,7 @@ public async Task GetStoredAsync(string recordingName) /// /// Delete a stored recording.. /// - public async Task DeleteStoredAsync(string recordingName) + public virtual async Task DeleteStoredAsync(string recordingName) { string path = "recordings/stored/{recordingName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -368,7 +368,7 @@ public async Task DeleteStoredAsync(string recordingName) /// /// Get the file associated with the stored recording.. /// - public async Task GetStoredFileAsync(string recordingName) + public virtual async Task GetStoredFileAsync(string recordingName) { string path = "recordings/stored/{recordingName}/file"; var request = GetNewRequest(path, HttpMethod.GET); @@ -391,7 +391,7 @@ public async Task GetStoredFileAsync(string recordingName) /// /// Copy a stored recording.. /// - public async Task CopyStoredAsync(string recordingName, string destinationRecordingName) + public virtual async Task CopyStoredAsync(string recordingName, string destinationRecordingName) { string path = "recordings/stored/{recordingName}/copy"; var request = GetNewRequest(path, HttpMethod.POST); @@ -418,7 +418,7 @@ public async Task CopyStoredAsync(string recordingName, string /// /// List live recordings.. /// - public async Task GetLiveAsync(string recordingName) + public virtual async Task GetLiveAsync(string recordingName) { string path = "recordings/live/{recordingName}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -441,7 +441,7 @@ public async Task GetLiveAsync(string recordingName) /// /// Stop a live recording and discard it.. /// - public async Task CancelAsync(string recordingName) + public virtual async Task CancelAsync(string recordingName) { string path = "recordings/live/{recordingName}"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -462,7 +462,7 @@ public async Task CancelAsync(string recordingName) /// /// Stop a live recording and store it.. /// - public async Task StopAsync(string recordingName) + public virtual async Task StopAsync(string recordingName) { string path = "recordings/live/{recordingName}/stop"; var request = GetNewRequest(path, HttpMethod.POST); @@ -483,7 +483,7 @@ public async Task StopAsync(string recordingName) /// /// Pause a live recording.. Pausing a recording suspends silence detection, which will be restarted when the recording is unpaused. Paused time is not included in the accounting for maxDurationSeconds. /// - public async Task PauseAsync(string recordingName) + public virtual async Task PauseAsync(string recordingName) { string path = "recordings/live/{recordingName}/pause"; var request = GetNewRequest(path, HttpMethod.POST); @@ -506,7 +506,7 @@ public async Task PauseAsync(string recordingName) /// /// Unpause a live recording.. /// - public async Task UnpauseAsync(string recordingName) + public virtual async Task UnpauseAsync(string recordingName) { string path = "recordings/live/{recordingName}/pause"; var request = GetNewRequest(path, HttpMethod.DELETE); @@ -529,7 +529,7 @@ public async Task UnpauseAsync(string recordingName) /// /// Mute a live recording.. Muting a recording suspends silence detection, which will be restarted when the recording is unmuted. /// - public async Task MuteAsync(string recordingName) + public virtual async Task MuteAsync(string recordingName) { string path = "recordings/live/{recordingName}/mute"; var request = GetNewRequest(path, HttpMethod.POST); @@ -552,7 +552,7 @@ public async Task MuteAsync(string recordingName) /// /// Unmute a live recording.. /// - public async Task UnmuteAsync(string recordingName) + public virtual async Task UnmuteAsync(string recordingName) { string path = "recordings/live/{recordingName}/mute"; var request = GetNewRequest(path, HttpMethod.DELETE); diff --git a/AsterNET.ARI/ARI_1_0/Actions/SoundsActions.cs b/Arke.ARI/ARI_1_0/Actions/SoundsActions.cs similarity index 89% rename from AsterNET.ARI/ARI_1_0/Actions/SoundsActions.cs rename to Arke.ARI/ARI_1_0/Actions/SoundsActions.cs index 9015618..fe38401 100644 --- a/AsterNET.ARI/ARI_1_0/Actions/SoundsActions.cs +++ b/Arke.ARI/ARI_1_0/Actions/SoundsActions.cs @@ -1,15 +1,15 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System.Collections.Generic; using System.Linq; -using AsterNET.ARI.Middleware; -using AsterNET.ARI.Models; +using Arke.ARI.Middleware; +using Arke.ARI.Models; using Newtonsoft.Json; using System.Threading.Tasks; -namespace AsterNET.ARI.Actions +namespace Arke.ARI.Actions { public class SoundsActions : ARIBaseAction, ISoundsActions @@ -24,7 +24,7 @@ public SoundsActions(IActionConsumer consumer) /// /// Lookup sound for a specific language. /// Lookup sound in a specific format. - public List List(string lang = null, string format = null) + public virtual List List(string lang = null, string format = null) { string path = "sounds"; var request = GetNewRequest(path, HttpMethod.GET); @@ -48,7 +48,7 @@ public List List(string lang = null, string format = null) /// Get a sound's details.. /// /// Sound's id - public Sound Get(string soundId) + public virtual Sound Get(string soundId) { string path = "sounds/{soundId}"; var request = GetNewRequest(path, HttpMethod.GET); @@ -70,7 +70,7 @@ public Sound Get(string soundId) /// /// List all sounds.. /// - public async Task> ListAsync(string lang = null, string format = null) + public virtual async Task> ListAsync(string lang = null, string format = null) { string path = "sounds"; var request = GetNewRequest(path, HttpMethod.GET); @@ -93,7 +93,7 @@ public async Task> ListAsync(string lang = null, string format = nul /// /// Get a sound's details.. /// - public async Task GetAsync(string soundId) + public virtual async Task GetAsync(string soundId) { string path = "sounds/{soundId}"; var request = GetNewRequest(path, HttpMethod.GET); diff --git a/Arke.ARI/ARI_1_0/Events/ApplicationMoveFailedEvent.cs b/Arke.ARI/ARI_1_0/Events/ApplicationMoveFailedEvent.cs new file mode 100644 index 0000000..f3492e1 --- /dev/null +++ b/Arke.ARI/ARI_1_0/Events/ApplicationMoveFailedEvent.cs @@ -0,0 +1,34 @@ +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Actions; + +namespace Arke.ARI.Models +{ + /// + /// Notification that trying to move a channel to another Stasis application failed. + /// + public class ApplicationMoveFailedEvent : Event + { + + + /// + /// no description provided + /// + public Channel Channel { get; set; } + + /// + /// no description provided + /// + public string Destination { get; set; } + + /// + /// Arguments to the application + /// + public List Args { get; set; } + + } +} diff --git a/AsterNET.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs b/Arke.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs similarity index 75% rename from AsterNET.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs index a6a910f..985f102 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ApplicationReplacedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that another WebSocket has taken over for an application. An application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event. diff --git a/AsterNET.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs similarity index 95% rename from AsterNET.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs rename to Arke.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs index 157cee0..39bd4ae 100644 --- a/AsterNET.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/BridgeAttendedTransferEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that an attended transfer has occurred. diff --git a/AsterNET.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs similarity index 90% rename from AsterNET.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs rename to Arke.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs index 5043c95..20a53e5 100644 --- a/AsterNET.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/BridgeBlindTransferEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a blind transfer has occurred. diff --git a/AsterNET.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs rename to Arke.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs index 0f30f0f..28745af 100644 --- a/AsterNET.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/BridgeCreatedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a bridge has been created. diff --git a/AsterNET.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs rename to Arke.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs index b0ac6d2..81cda01 100644 --- a/AsterNET.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/BridgeDestroyedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a bridge has been destroyed. diff --git a/AsterNET.ARI/ARI_1_0/Events/BridgeMergedEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeMergedEvent.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Events/BridgeMergedEvent.cs rename to Arke.ARI/ARI_1_0/Events/BridgeMergedEvent.cs index 4076456..27aa2a2 100644 --- a/AsterNET.ARI/ARI_1_0/Events/BridgeMergedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/BridgeMergedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that one bridge has merged into another. diff --git a/Arke.ARI/ARI_1_0/Events/BridgeVideoSourceChangedEvent.cs b/Arke.ARI/ARI_1_0/Events/BridgeVideoSourceChangedEvent.cs new file mode 100644 index 0000000..c1b0bc1 --- /dev/null +++ b/Arke.ARI/ARI_1_0/Events/BridgeVideoSourceChangedEvent.cs @@ -0,0 +1,29 @@ +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Actions; + +namespace Arke.ARI.Models +{ + /// + /// Notification that the source of video in a bridge has changed. + /// + public class BridgeVideoSourceChangedEvent : Event + { + + + /// + /// no description provided + /// + public Bridge Bridge { get; set; } + + /// + /// no description provided + /// + public string Old_video_source_id { get; set; } + + } +} diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs similarity index 82% rename from AsterNET.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs index 6c91bbd..985c8a5 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelCallerIdEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Channel changed Caller ID. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs similarity index 71% rename from AsterNET.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs index 216c715..f8fa27d 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelConnectedLineEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Channel changed Connected Line. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs index 08ce294..99d1b99 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelCreatedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has been created. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs similarity index 81% rename from AsterNET.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs index 465bd0d..c4970ab 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelDestroyedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has been destroyed. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs similarity index 82% rename from AsterNET.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs index 805a1b2..1c1fefd 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelDialplanEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Channel changed location in the dialplan. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs similarity index 83% rename from AsterNET.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs index 9e4d7a8..5061c2e 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelDtmfReceivedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// DTMF received on a channel. This event is sent when the DTMF ends. There is no notification about the start of DTMF diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs index 5930202..6b5f3c4 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelEnteredBridgeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has entered a bridge. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs similarity index 82% rename from AsterNET.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs index 9c00ab0..49ae4a2 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelHangupRequestEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A hangup was requested on the channel. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelHoldEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelHoldEvent.cs similarity index 77% rename from AsterNET.ARI/ARI_1_0/Events/ChannelHoldEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelHoldEvent.cs index c01706b..7206c8b 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelHoldEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelHoldEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A channel initiated a media hold. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs index 6bea0b0..e24b051 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelLeftBridgeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has left a bridge. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs index ba80b7f..54e822f 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelStateChangeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification of a channel's state change. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs similarity index 79% rename from AsterNET.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs index 4220fec..2c35644 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelTalkingFinishedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Talking is no longer detected on the channel. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs index fa4906f..a6ea55c 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelTalkingStartedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Talking was detected on the channel. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs index 994899f..48e5086 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelUnholdEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A channel initiated a media unhold. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs similarity index 87% rename from AsterNET.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs index ca6e05b..0e55738 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelUsereventEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// User-generated event with additional user-defined fields in the object. diff --git a/AsterNET.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs b/Arke.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs similarity index 81% rename from AsterNET.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs rename to Arke.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs index e113311..641aa5c 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ChannelVarsetEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Channel variable changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs b/Arke.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs similarity index 77% rename from AsterNET.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs rename to Arke.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs index 94bede7..a0ec4ac 100644 --- a/AsterNET.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/ContactStatusChangeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// The state of a contact on an endpoint has changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs b/Arke.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs rename to Arke.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs index 1e271e3..c758446 100644 --- a/AsterNET.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/DeviceStateChangedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a device state has changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/DialEvent.cs b/Arke.ARI/ARI_1_0/Events/DialEvent.cs similarity index 88% rename from AsterNET.ARI/ARI_1_0/Events/DialEvent.cs rename to Arke.ARI/ARI_1_0/Events/DialEvent.cs index 82be762..f71ac03 100644 --- a/AsterNET.ARI/ARI_1_0/Events/DialEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/DialEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Dialing state has changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs b/Arke.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs similarity index 69% rename from AsterNET.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs rename to Arke.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs index e3b9fc9..b1d0c36 100644 --- a/AsterNET.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/EndpointStateChangeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Endpoint state changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs b/Arke.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs similarity index 77% rename from AsterNET.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs rename to Arke.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs index a88131a..a0a124e 100644 --- a/AsterNET.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/PeerStatusChangeEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// The state of a peer associated with an endpoint has changed. diff --git a/AsterNET.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs b/Arke.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs similarity index 73% rename from AsterNET.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs rename to Arke.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs index 3f37ae5..f670ead 100644 --- a/AsterNET.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/PlaybackContinuingEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing the continuation of a media playback operation from one media URI to the next in the list. diff --git a/AsterNET.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs b/Arke.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs similarity index 71% rename from AsterNET.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs rename to Arke.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs index b03453b..97e991d 100644 --- a/AsterNET.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/PlaybackFinishedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing the completion of a media playback operation. diff --git a/AsterNET.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs b/Arke.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs rename to Arke.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs index d18e12a..babab0d 100644 --- a/AsterNET.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/PlaybackStartedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing the start of a media playback operation. diff --git a/AsterNET.ARI/ARI_1_0/Events/RecordingFailedEvent.cs b/Arke.ARI/ARI_1_0/Events/RecordingFailedEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/RecordingFailedEvent.cs rename to Arke.ARI/ARI_1_0/Events/RecordingFailedEvent.cs index 233bd03..4c66d12 100644 --- a/AsterNET.ARI/ARI_1_0/Events/RecordingFailedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/RecordingFailedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing failure of a recording operation. diff --git a/AsterNET.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs b/Arke.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs similarity index 71% rename from AsterNET.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs rename to Arke.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs index df12bf3..ab9c6e4 100644 --- a/AsterNET.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/RecordingFinishedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing the completion of a recording operation. diff --git a/AsterNET.ARI/ARI_1_0/Events/RecordingStartedEvent.cs b/Arke.ARI/ARI_1_0/Events/RecordingStartedEvent.cs similarity index 71% rename from AsterNET.ARI/ARI_1_0/Events/RecordingStartedEvent.cs rename to Arke.ARI/ARI_1_0/Events/RecordingStartedEvent.cs index 4f417b0..7c58c32 100644 --- a/AsterNET.ARI/ARI_1_0/Events/RecordingStartedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/RecordingStartedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Event showing the start of a recording operation. diff --git a/AsterNET.ARI/ARI_1_0/Events/StasisEndEvent.cs b/Arke.ARI/ARI_1_0/Events/StasisEndEvent.cs similarity index 70% rename from AsterNET.ARI/ARI_1_0/Events/StasisEndEvent.cs rename to Arke.ARI/ARI_1_0/Events/StasisEndEvent.cs index 9d5e16e..e8d1002 100644 --- a/AsterNET.ARI/ARI_1_0/Events/StasisEndEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/StasisEndEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has left a Stasis application. diff --git a/AsterNET.ARI/ARI_1_0/Events/StasisStartEvent.cs b/Arke.ARI/ARI_1_0/Events/StasisStartEvent.cs similarity index 81% rename from AsterNET.ARI/ARI_1_0/Events/StasisStartEvent.cs rename to Arke.ARI/ARI_1_0/Events/StasisStartEvent.cs index 07a554f..11a4839 100644 --- a/AsterNET.ARI/ARI_1_0/Events/StasisStartEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/StasisStartEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Notification that a channel has entered a Stasis application. diff --git a/AsterNET.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs b/Arke.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs rename to Arke.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs index f87a940..bb830a8 100644 --- a/AsterNET.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs +++ b/Arke.ARI/ARI_1_0/Events/TextMessageReceivedEvent.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A text message was received from an endpoint. diff --git a/Arke.ARI/ARI_1_0/Models.cs b/Arke.ARI/ARI_1_0/Models.cs new file mode 100644 index 0000000..acf0957 --- /dev/null +++ b/Arke.ARI/ARI_1_0/Models.cs @@ -0,0 +1,88 @@ + + +// Generated helper templates +// Generated items +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ARIClient.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\MailboxesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IMailboxesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Mailbox.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IRecordingsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\LiveRecording.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\StoredRecording.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\SoundsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ISoundsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Sound.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\FormatLangPair.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybacksActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IPlaybacksActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Playback.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceStatesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IDeviceStatesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceState.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\EndpointsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IEndpointsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessage.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessageVariable.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Endpoint.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ApplicationsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IApplicationsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Application.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\AsteriskActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IAsteriskActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Module.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\SetId.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\StatusInfo.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\SystemInfo.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\AsteriskInfo.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BuildInfo.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ConfigTuple.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ConfigInfo.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Variable.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IChannelsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\CallerID.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Channel.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Dialed.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\DialplanCEP.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IBridgesActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Bridge.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\EventsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\IEventsActions.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\StasisStartEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\StasisEndEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\DialEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\EndpointStateChangeEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelUnholdEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelConnectedLineEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelHoldEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelVarsetEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelHangupRequestEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDialplanEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelUsereventEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeBlindTransferEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeDestroyedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelEnteredBridgeEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessageReceivedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeAttendedTransferEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingFinishedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeMergedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingFailedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelTalkingStartedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybackStartedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelTalkingFinishedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Event.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceStateChangedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDestroyedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelLeftBridgeEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingStartedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybackFinishedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelStateChangeEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ApplicationReplacedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\Message.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelCreatedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\MissingParams.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeCreatedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDtmfReceivedEvent.cs +// Arke.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelCallerIdEvent.cs diff --git a/AsterNET.ARI/ARI_1_0/Models.txt4 b/Arke.ARI/ARI_1_0/Models.txt4 similarity index 100% rename from AsterNET.ARI/ARI_1_0/Models.txt4 rename to Arke.ARI/ARI_1_0/Models.txt4 diff --git a/AsterNET.ARI/ARI_1_0/Models/Application.cs b/Arke.ARI/ARI_1_0/Models/Application.cs similarity index 66% rename from AsterNET.ARI/ARI_1_0/Models/Application.cs rename to Arke.ARI/ARI_1_0/Models/Application.cs index d34e486..27e840c 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Application.cs +++ b/Arke.ARI/ARI_1_0/Models/Application.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Details of a Stasis application @@ -40,5 +40,15 @@ public class Application /// public List Device_names { get; set; } + /// + /// Event types sent to the application. + /// + public List Events_allowed { get; set; } + + /// + /// Event types not sent to the application. + /// + public List Events_disallowed { get; set; } + } } diff --git a/AsterNET.ARI/ARI_1_0/Models/AsteriskInfo.cs b/Arke.ARI/ARI_1_0/Models/AsteriskInfo.cs similarity index 83% rename from AsterNET.ARI/ARI_1_0/Models/AsteriskInfo.cs rename to Arke.ARI/ARI_1_0/Models/AsteriskInfo.cs index bcf3bfa..7a88865 100644 --- a/AsterNET.ARI/ARI_1_0/Models/AsteriskInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/AsteriskInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Asterisk system information diff --git a/Arke.ARI/ARI_1_0/Models/AsteriskPing.cs b/Arke.ARI/ARI_1_0/Models/AsteriskPing.cs new file mode 100644 index 0000000..99c574f --- /dev/null +++ b/Arke.ARI/ARI_1_0/Models/AsteriskPing.cs @@ -0,0 +1,34 @@ +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Actions; + +namespace Arke.ARI.Models +{ + /// + /// Asterisk ping information + /// + public class AsteriskPing + { + + + /// + /// Asterisk id info + /// + public string Asterisk_id { get; set; } + + /// + /// Always string value is pong + /// + public string Ping { get; set; } + + /// + /// The timestamp string of request received time + /// + public string Timestamp { get; set; } + + } +} diff --git a/AsterNET.ARI/ARI_1_0/Models/Bridge.cs b/Arke.ARI/ARI_1_0/Models/Bridge.cs similarity index 64% rename from AsterNET.ARI/ARI_1_0/Models/Bridge.cs rename to Arke.ARI/ARI_1_0/Models/Bridge.cs index 43d6162..ca2d09d 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Bridge.cs +++ b/Arke.ARI/ARI_1_0/Models/Bridge.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// The merging of media from one or more channels. Everyone on the bridge receives the same audio. @@ -50,5 +50,20 @@ public class Bridge /// public List Channels { get; set; } + /// + /// The video mode the bridge is using. One of 'none', 'talker', 'sfu', or 'single'. + /// + public string Video_mode { get; set; } + + /// + /// The ID of the channel that is the source of video in this bridge, if one exists. + /// + public string Video_source_id { get; set; } + + /// + /// Timestamp when bridge was created + /// + public DateTime Creationtime { get; set; } + } } diff --git a/AsterNET.ARI/ARI_1_0/Models/BuildInfo.cs b/Arke.ARI/ARI_1_0/Models/BuildInfo.cs similarity index 87% rename from AsterNET.ARI/ARI_1_0/Models/BuildInfo.cs rename to Arke.ARI/ARI_1_0/Models/BuildInfo.cs index 878d298..9e93582 100644 --- a/AsterNET.ARI/ARI_1_0/Models/BuildInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/BuildInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Info about how Asterisk was built diff --git a/AsterNET.ARI/ARI_1_0/Models/CallerID.cs b/Arke.ARI/ARI_1_0/Models/CallerID.cs similarity index 74% rename from AsterNET.ARI/ARI_1_0/Models/CallerID.cs rename to Arke.ARI/ARI_1_0/Models/CallerID.cs index b5b76dc..6304f5e 100644 --- a/AsterNET.ARI/ARI_1_0/Models/CallerID.cs +++ b/Arke.ARI/ARI_1_0/Models/CallerID.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Caller identification diff --git a/AsterNET.ARI/ARI_1_0/Models/Channel.cs b/Arke.ARI/ARI_1_0/Models/Channel.cs similarity index 74% rename from AsterNET.ARI/ARI_1_0/Models/Channel.cs rename to Arke.ARI/ARI_1_0/Models/Channel.cs index 83898e3..c1a846b 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Channel.cs +++ b/Arke.ARI/ARI_1_0/Models/Channel.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A specific communication connection between Asterisk and an Endpoint. @@ -20,6 +20,11 @@ public class Channel /// public string Id { get; set; } + /// + /// Protocol id from underlying channel driver (i.e. Call-ID for chan_sip/chan_pjsip; will be empty if not applicable or not implemented by driver). + /// + public string Protocol_id { get; set; } + /// /// Name of the channel (i.e. SIP/foo-0000a7e3) /// @@ -60,5 +65,10 @@ public class Channel /// public string Language { get; set; } + /// + /// Channel variables + /// + public object Channelvars { get; set; } + } } diff --git a/AsterNET.ARI/ARI_1_0/Models/ConfigInfo.cs b/Arke.ARI/ARI_1_0/Models/ConfigInfo.cs similarity index 87% rename from AsterNET.ARI/ARI_1_0/Models/ConfigInfo.cs rename to Arke.ARI/ARI_1_0/Models/ConfigInfo.cs index 600dc62..91b72e1 100644 --- a/AsterNET.ARI/ARI_1_0/Models/ConfigInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/ConfigInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Info about Asterisk configuration diff --git a/AsterNET.ARI/ARI_1_0/Models/ConfigTuple.cs b/Arke.ARI/ARI_1_0/Models/ConfigTuple.cs similarity index 77% rename from AsterNET.ARI/ARI_1_0/Models/ConfigTuple.cs rename to Arke.ARI/ARI_1_0/Models/ConfigTuple.cs index 34461af..7527ad2 100644 --- a/AsterNET.ARI/ARI_1_0/Models/ConfigTuple.cs +++ b/Arke.ARI/ARI_1_0/Models/ConfigTuple.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A key/value pair that makes up part of a configuration object. diff --git a/AsterNET.ARI/ARI_1_0/Models/ContactInfo.cs b/Arke.ARI/ARI_1_0/Models/ContactInfo.cs similarity index 84% rename from AsterNET.ARI/ARI_1_0/Models/ContactInfo.cs rename to Arke.ARI/ARI_1_0/Models/ContactInfo.cs index b0f88ea..93ec19d 100644 --- a/AsterNET.ARI/ARI_1_0/Models/ContactInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/ContactInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Detailed information about a contact on an endpoint. diff --git a/AsterNET.ARI/ARI_1_0/Models/DeviceState.cs b/Arke.ARI/ARI_1_0/Models/DeviceState.cs similarity index 74% rename from AsterNET.ARI/ARI_1_0/Models/DeviceState.cs rename to Arke.ARI/ARI_1_0/Models/DeviceState.cs index ea92eb7..e96cbf8 100644 --- a/AsterNET.ARI/ARI_1_0/Models/DeviceState.cs +++ b/Arke.ARI/ARI_1_0/Models/DeviceState.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Represents the state of a device. diff --git a/AsterNET.ARI/ARI_1_0/Models/Dialed.cs b/Arke.ARI/ARI_1_0/Models/Dialed.cs similarity index 54% rename from AsterNET.ARI/ARI_1_0/Models/Dialed.cs rename to Arke.ARI/ARI_1_0/Models/Dialed.cs index 0ec8a09..42c6e40 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Dialed.cs +++ b/Arke.ARI/ARI_1_0/Models/Dialed.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Dialed channel information. diff --git a/AsterNET.ARI/ARI_1_0/Models/DialplanCEP.cs b/Arke.ARI/ARI_1_0/Models/DialplanCEP.cs similarity index 57% rename from AsterNET.ARI/ARI_1_0/Models/DialplanCEP.cs rename to Arke.ARI/ARI_1_0/Models/DialplanCEP.cs index a8a2413..377890c 100644 --- a/AsterNET.ARI/ARI_1_0/Models/DialplanCEP.cs +++ b/Arke.ARI/ARI_1_0/Models/DialplanCEP.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Dialplan location (context/extension/priority) @@ -30,5 +30,15 @@ public class DialplanCEP /// public long Priority { get; set; } + /// + /// Name of current dialplan application + /// + public string App_name { get; set; } + + /// + /// Parameter of current dialplan application + /// + public string App_data { get; set; } + } } diff --git a/AsterNET.ARI/ARI_1_0/Models/Endpoint.cs b/Arke.ARI/ARI_1_0/Models/Endpoint.cs similarity index 86% rename from AsterNET.ARI/ARI_1_0/Models/Endpoint.cs rename to Arke.ARI/ARI_1_0/Models/Endpoint.cs index 5783096..38338d4 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Endpoint.cs +++ b/Arke.ARI/ARI_1_0/Models/Endpoint.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// An external device that may offer/accept calls to/from Asterisk. Unlike most resources, which have a single unique identifier, an endpoint is uniquely identified by the technology/resource pair. diff --git a/AsterNET.ARI/ARI_1_0/Models/Event.cs b/Arke.ARI/ARI_1_0/Models/Event.cs similarity index 77% rename from AsterNET.ARI/ARI_1_0/Models/Event.cs rename to Arke.ARI/ARI_1_0/Models/Event.cs index 3a10e70..8f0fbb5 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Event.cs +++ b/Arke.ARI/ARI_1_0/Models/Event.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Base type for asynchronous events from Asterisk. diff --git a/AsterNET.ARI/ARI_1_0/Models/FormatLangPair.cs b/Arke.ARI/ARI_1_0/Models/FormatLangPair.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Models/FormatLangPair.cs rename to Arke.ARI/ARI_1_0/Models/FormatLangPair.cs index f267627..0a41879 100644 --- a/AsterNET.ARI/ARI_1_0/Models/FormatLangPair.cs +++ b/Arke.ARI/ARI_1_0/Models/FormatLangPair.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Identifies the format and language of a sound file diff --git a/AsterNET.ARI/ARI_1_0/Models/LiveRecording.cs b/Arke.ARI/ARI_1_0/Models/LiveRecording.cs similarity index 91% rename from AsterNET.ARI/ARI_1_0/Models/LiveRecording.cs rename to Arke.ARI/ARI_1_0/Models/LiveRecording.cs index 60aecd9..2b24bbc 100644 --- a/AsterNET.ARI/ARI_1_0/Models/LiveRecording.cs +++ b/Arke.ARI/ARI_1_0/Models/LiveRecording.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A recording that is in progress diff --git a/AsterNET.ARI/ARI_1_0/Models/LogChannel.cs b/Arke.ARI/ARI_1_0/Models/LogChannel.cs similarity index 83% rename from AsterNET.ARI/ARI_1_0/Models/LogChannel.cs rename to Arke.ARI/ARI_1_0/Models/LogChannel.cs index b912e75..0a698dd 100644 --- a/AsterNET.ARI/ARI_1_0/Models/LogChannel.cs +++ b/Arke.ARI/ARI_1_0/Models/LogChannel.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Details of an Asterisk log channel diff --git a/AsterNET.ARI/ARI_1_0/Models/Mailbox.cs b/Arke.ARI/ARI_1_0/Models/Mailbox.cs similarity index 80% rename from AsterNET.ARI/ARI_1_0/Models/Mailbox.cs rename to Arke.ARI/ARI_1_0/Models/Mailbox.cs index 1715456..b62b332 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Mailbox.cs +++ b/Arke.ARI/ARI_1_0/Models/Mailbox.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Represents the state of a mailbox. diff --git a/AsterNET.ARI/ARI_1_0/Models/Message.cs b/Arke.ARI/ARI_1_0/Models/Message.cs similarity index 50% rename from AsterNET.ARI/ARI_1_0/Models/Message.cs rename to Arke.ARI/ARI_1_0/Models/Message.cs index 256c3ef..4894a71 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Message.cs +++ b/Arke.ARI/ARI_1_0/Models/Message.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Base type for errors and events @@ -20,5 +20,10 @@ public class Message /// public string Type { get; set; } + /// + /// The unique ID for the Asterisk instance that raised this event. + /// + public string Asterisk_id { get; set; } + } } diff --git a/AsterNET.ARI/ARI_1_0/Models/MissingParams.cs b/Arke.ARI/ARI_1_0/Models/MissingParams.cs similarity index 71% rename from AsterNET.ARI/ARI_1_0/Models/MissingParams.cs rename to Arke.ARI/ARI_1_0/Models/MissingParams.cs index e2087b1..d4a7214 100644 --- a/AsterNET.ARI/ARI_1_0/Models/MissingParams.cs +++ b/Arke.ARI/ARI_1_0/Models/MissingParams.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Error event sent when required params are missing. diff --git a/AsterNET.ARI/ARI_1_0/Models/Module.cs b/Arke.ARI/ARI_1_0/Models/Module.cs similarity index 85% rename from AsterNET.ARI/ARI_1_0/Models/Module.cs rename to Arke.ARI/ARI_1_0/Models/Module.cs index 1a98498..16370bf 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Module.cs +++ b/Arke.ARI/ARI_1_0/Models/Module.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Details of an Asterisk module diff --git a/AsterNET.ARI/ARI_1_0/Models/Peer.cs b/Arke.ARI/ARI_1_0/Models/Peer.cs similarity index 87% rename from AsterNET.ARI/ARI_1_0/Models/Peer.cs rename to Arke.ARI/ARI_1_0/Models/Peer.cs index 0e326ef..965350d 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Peer.cs +++ b/Arke.ARI/ARI_1_0/Models/Peer.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Detailed information about a remote peer that communicates with Asterisk. diff --git a/AsterNET.ARI/ARI_1_0/Models/Playback.cs b/Arke.ARI/ARI_1_0/Models/Playback.cs similarity index 89% rename from AsterNET.ARI/ARI_1_0/Models/Playback.cs rename to Arke.ARI/ARI_1_0/Models/Playback.cs index 139453d..69e717b 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Playback.cs +++ b/Arke.ARI/ARI_1_0/Models/Playback.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Object representing the playback of media to a channel diff --git a/Arke.ARI/ARI_1_0/Models/RTPstat.cs b/Arke.ARI/ARI_1_0/Models/RTPstat.cs new file mode 100644 index 0000000..9dbb838 --- /dev/null +++ b/Arke.ARI/ARI_1_0/Models/RTPstat.cs @@ -0,0 +1,179 @@ +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM +*/ +using System; +using System.Collections.Generic; +using Arke.ARI.Actions; + +namespace Arke.ARI.Models +{ + /// + /// A statistics of a RTP. + /// + public class RTPstat + { + + + /// + /// Number of packets transmitted. + /// + public int Txcount { get; set; } + + /// + /// Number of packets received. + /// + public int Rxcount { get; set; } + + /// + /// Jitter on transmitted packets. + /// + public double Txjitter { get; set; } + + /// + /// Jitter on received packets. + /// + public double Rxjitter { get; set; } + + /// + /// Maximum jitter on remote side. + /// + public double Remote_maxjitter { get; set; } + + /// + /// Minimum jitter on remote side. + /// + public double Remote_minjitter { get; set; } + + /// + /// Average jitter on remote side. + /// + public double Remote_normdevjitter { get; set; } + + /// + /// Standard deviation jitter on remote side. + /// + public double Remote_stdevjitter { get; set; } + + /// + /// Maximum jitter on local side. + /// + public double Local_maxjitter { get; set; } + + /// + /// Minimum jitter on local side. + /// + public double Local_minjitter { get; set; } + + /// + /// Average jitter on local side. + /// + public double Local_normdevjitter { get; set; } + + /// + /// Standard deviation jitter on local side. + /// + public double Local_stdevjitter { get; set; } + + /// + /// Number of transmitted packets lost. + /// + public int Txploss { get; set; } + + /// + /// Number of received packets lost. + /// + public int Rxploss { get; set; } + + /// + /// Maximum number of packets lost on remote side. + /// + public double Remote_maxrxploss { get; set; } + + /// + /// Minimum number of packets lost on remote side. + /// + public double Remote_minrxploss { get; set; } + + /// + /// Average number of packets lost on remote side. + /// + public double Remote_normdevrxploss { get; set; } + + /// + /// Standard deviation packets lost on remote side. + /// + public double Remote_stdevrxploss { get; set; } + + /// + /// Maximum number of packets lost on local side. + /// + public double Local_maxrxploss { get; set; } + + /// + /// Minimum number of packets lost on local side. + /// + public double Local_minrxploss { get; set; } + + /// + /// Average number of packets lost on local side. + /// + public double Local_normdevrxploss { get; set; } + + /// + /// Standard deviation packets lost on local side. + /// + public double Local_stdevrxploss { get; set; } + + /// + /// Total round trip time. + /// + public double Rtt { get; set; } + + /// + /// Maximum round trip time. + /// + public double Maxrtt { get; set; } + + /// + /// Minimum round trip time. + /// + public double Minrtt { get; set; } + + /// + /// Average round trip time. + /// + public double Normdevrtt { get; set; } + + /// + /// Standard deviation round trip time. + /// + public double Stdevrtt { get; set; } + + /// + /// Our SSRC. + /// + public int Local_ssrc { get; set; } + + /// + /// Their SSRC. + /// + public int Remote_ssrc { get; set; } + + /// + /// Number of octets transmitted. + /// + public int Txoctetcount { get; set; } + + /// + /// Number of octets received. + /// + public int Rxoctetcount { get; set; } + + /// + /// The Asterisk channel's unique ID that owns this instance. + /// + public string Channel_uniqueid { get; set; } + + } +} diff --git a/AsterNET.ARI/ARI_1_0/Models/SetId.cs b/Arke.ARI/ARI_1_0/Models/SetId.cs similarity index 73% rename from AsterNET.ARI/ARI_1_0/Models/SetId.cs rename to Arke.ARI/ARI_1_0/Models/SetId.cs index 3273e9d..5f9096f 100644 --- a/AsterNET.ARI/ARI_1_0/Models/SetId.cs +++ b/Arke.ARI/ARI_1_0/Models/SetId.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Effective user/group id diff --git a/AsterNET.ARI/ARI_1_0/Models/Sound.cs b/Arke.ARI/ARI_1_0/Models/Sound.cs similarity index 81% rename from AsterNET.ARI/ARI_1_0/Models/Sound.cs rename to Arke.ARI/ARI_1_0/Models/Sound.cs index 989ac0a..c1b069b 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Sound.cs +++ b/Arke.ARI/ARI_1_0/Models/Sound.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A media file that may be played back. diff --git a/AsterNET.ARI/ARI_1_0/Models/StatusInfo.cs b/Arke.ARI/ARI_1_0/Models/StatusInfo.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Models/StatusInfo.cs rename to Arke.ARI/ARI_1_0/Models/StatusInfo.cs index ef82d63..6798471 100644 --- a/AsterNET.ARI/ARI_1_0/Models/StatusInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/StatusInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Info about Asterisk status diff --git a/AsterNET.ARI/ARI_1_0/Models/StoredRecording.cs b/Arke.ARI/ARI_1_0/Models/StoredRecording.cs similarity index 75% rename from AsterNET.ARI/ARI_1_0/Models/StoredRecording.cs rename to Arke.ARI/ARI_1_0/Models/StoredRecording.cs index c6e7e7f..9688661 100644 --- a/AsterNET.ARI/ARI_1_0/Models/StoredRecording.cs +++ b/Arke.ARI/ARI_1_0/Models/StoredRecording.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A past recording that may be played back. diff --git a/AsterNET.ARI/ARI_1_0/Models/SystemInfo.cs b/Arke.ARI/ARI_1_0/Models/SystemInfo.cs similarity index 73% rename from AsterNET.ARI/ARI_1_0/Models/SystemInfo.cs rename to Arke.ARI/ARI_1_0/Models/SystemInfo.cs index cac17ed..8232876 100644 --- a/AsterNET.ARI/ARI_1_0/Models/SystemInfo.cs +++ b/Arke.ARI/ARI_1_0/Models/SystemInfo.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// Info about Asterisk diff --git a/AsterNET.ARI/ARI_1_0/Models/TextMessage.cs b/Arke.ARI/ARI_1_0/Models/TextMessage.cs similarity index 76% rename from AsterNET.ARI/ARI_1_0/Models/TextMessage.cs rename to Arke.ARI/ARI_1_0/Models/TextMessage.cs index 0f2aa31..b9b5158 100644 --- a/AsterNET.ARI/ARI_1_0/Models/TextMessage.cs +++ b/Arke.ARI/ARI_1_0/Models/TextMessage.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A text message. @@ -31,9 +31,9 @@ public class TextMessage public string Body { get; set; } /// - /// Technology specific key/value pairs associated with the message. + /// Technology specific key/value pairs (JSON object) associated with the message. /// - public List Variables { get; set; } + public object Variables { get; set; } } } diff --git a/AsterNET.ARI/ARI_1_0/Models/TextMessageVariable.cs b/Arke.ARI/ARI_1_0/Models/TextMessageVariable.cs similarity index 86% rename from AsterNET.ARI/ARI_1_0/Models/TextMessageVariable.cs rename to Arke.ARI/ARI_1_0/Models/TextMessageVariable.cs index 3630d7a..10ca64b 100644 --- a/AsterNET.ARI/ARI_1_0/Models/TextMessageVariable.cs +++ b/Arke.ARI/ARI_1_0/Models/TextMessageVariable.cs @@ -1,12 +1,12 @@ /* - AsterNET ARI Framework + Arke ARI Framework Automatically generated file @ 9/22/2016 4:43:50 PM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// A key/value pair variable in a text message. diff --git a/AsterNET.ARI/ARI_1_0/Models/Variable.cs b/Arke.ARI/ARI_1_0/Models/Variable.cs similarity index 68% rename from AsterNET.ARI/ARI_1_0/Models/Variable.cs rename to Arke.ARI/ARI_1_0/Models/Variable.cs index 1963d5d..c2a9949 100644 --- a/AsterNET.ARI/ARI_1_0/Models/Variable.cs +++ b/Arke.ARI/ARI_1_0/Models/Variable.cs @@ -1,12 +1,12 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:49 PM +/* + Arke ARI Framework + Automatically generated file @ 6/23/2023 11:34:36 AM */ using System; using System.Collections.Generic; -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI.Models +namespace Arke.ARI.Models { /// /// The value of a channel variable diff --git a/Arke.ARI/Arke.ARI.csproj b/Arke.ARI/Arke.ARI.csproj new file mode 100644 index 0000000..086c0fc --- /dev/null +++ b/Arke.ARI/Arke.ARI.csproj @@ -0,0 +1,61 @@ + + + + netstandard2.0 + Arke.ARI + Arke.ARI + 2.0.1 + Arke.ARI + Ben Merrills, Zachary Way + + Arke.ARI + Asterisk ARI Api wrapper - forked from AsterNET.ARI + true + Arke ARI + 2003 - Zachary Way + https://github.com/seiggy/arke.ari + README.md + https://github.com/seiggy/arke.ari + git + Asterisk;ARI;telephony;sip + v2.0.1 + Fixing RestSharp v107 case bug +v2.0.0 + Migrating project fully to .NET Standard 2.0 as Microsoft no longer supports .NET Framework 4.5 + Refactoring all classes to be virtualized in order to support better unit testing practices + Upgraded all packages to latest versions + Upgraded ARI to Asterisk 20 + en-US + LICENSE.txt + True + True + snupkg + + + + + + + + + + + + True + \ + + + True + \ + + + + + + + + + + + + \ No newline at end of file diff --git a/AsterNET.ARI/Dispatchers/AsyncDispatcher.cs b/Arke.ARI/Dispatchers/AsyncDispatcher.cs similarity index 90% rename from AsterNET.ARI/Dispatchers/AsyncDispatcher.cs rename to Arke.ARI/Dispatchers/AsyncDispatcher.cs index ca9bba1..6d95946 100644 --- a/AsterNET.ARI/Dispatchers/AsyncDispatcher.cs +++ b/Arke.ARI/Dispatchers/AsyncDispatcher.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace AsterNET.ARI.Dispatchers +namespace Arke.ARI.Dispatchers { sealed class AsyncDispatcher : IAriDispatcher { diff --git a/AsterNET.ARI/Dispatchers/DedicatedThreadDispatcher.cs b/Arke.ARI/Dispatchers/DedicatedThreadDispatcher.cs old mode 100755 new mode 100644 similarity index 98% rename from AsterNET.ARI/Dispatchers/DedicatedThreadDispatcher.cs rename to Arke.ARI/Dispatchers/DedicatedThreadDispatcher.cs index 83bfc87..a89a594 --- a/AsterNET.ARI/Dispatchers/DedicatedThreadDispatcher.cs +++ b/Arke.ARI/Dispatchers/DedicatedThreadDispatcher.cs @@ -2,7 +2,7 @@ using System.Collections.Concurrent; using System.Threading; -namespace AsterNET.ARI.Dispatchers +namespace Arke.ARI.Dispatchers { // This dispatcher uses a dedicated thread to dispatch ARI events, so that their order is preserved and // the event handlers are not called from different threads at the same time. diff --git a/AsterNET.ARI/Dispatchers/ThreadPoolDispatcher.cs b/Arke.ARI/Dispatchers/ThreadPoolDispatcher.cs old mode 100755 new mode 100644 similarity index 89% rename from AsterNET.ARI/Dispatchers/ThreadPoolDispatcher.cs rename to Arke.ARI/Dispatchers/ThreadPoolDispatcher.cs index 27e46af..96ba6e1 --- a/AsterNET.ARI/Dispatchers/ThreadPoolDispatcher.cs +++ b/Arke.ARI/Dispatchers/ThreadPoolDispatcher.cs @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace AsterNET.ARI.Dispatchers +namespace Arke.ARI.Dispatchers { sealed class ThreadPoolDispatcher : IAriDispatcher { diff --git a/AsterNET.ARI/Helpers/SyncHelper.cs b/Arke.ARI/Helpers/SyncHelper.cs similarity index 89% rename from AsterNET.ARI/Helpers/SyncHelper.cs rename to Arke.ARI/Helpers/SyncHelper.cs index a7a9a29..93fa6ca 100644 --- a/AsterNET.ARI/Helpers/SyncHelper.cs +++ b/Arke.ARI/Helpers/SyncHelper.cs @@ -1,7 +1,7 @@ using System.Threading; -using AsterNET.ARI.Models; +using Arke.ARI.Models; -namespace AsterNET.ARI.Helpers +namespace Arke.ARI.Helpers { public static class SyncHelper { diff --git a/AsterNET.ARI/IAriActionClient.cs b/Arke.ARI/IAriActionClient.cs similarity index 91% rename from AsterNET.ARI/IAriActionClient.cs rename to Arke.ARI/IAriActionClient.cs index e2eba9e..f741d10 100644 --- a/AsterNET.ARI/IAriActionClient.cs +++ b/Arke.ARI/IAriActionClient.cs @@ -1,6 +1,6 @@ -using AsterNET.ARI.Actions; +using Arke.ARI.Actions; -namespace AsterNET.ARI +namespace Arke.ARI { public interface IAriActionClient { diff --git a/AsterNET.ARI/IAriClient.cs b/Arke.ARI/IAriClient.cs similarity index 89% rename from AsterNET.ARI/IAriClient.cs rename to Arke.ARI/IAriClient.cs index fc3a986..55828cf 100644 --- a/AsterNET.ARI/IAriClient.cs +++ b/Arke.ARI/IAriClient.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace AsterNET.ARI +namespace Arke.ARI { public interface IAriClient : IAriActionClient, IAriEventClient { diff --git a/AsterNET.ARI/IAriDispatcher.cs b/Arke.ARI/IAriDispatcher.cs old mode 100755 new mode 100644 similarity index 83% rename from AsterNET.ARI/IAriDispatcher.cs rename to Arke.ARI/IAriDispatcher.cs index 23a0705..a19e9f0 --- a/AsterNET.ARI/IAriDispatcher.cs +++ b/Arke.ARI/IAriDispatcher.cs @@ -1,6 +1,6 @@ using System; -namespace AsterNET.ARI +namespace Arke.ARI { interface IAriDispatcher : IDisposable { diff --git a/AsterNET.ARI/Middleware/Default/Command.cs b/Arke.ARI/Middleware/Default/Command.cs similarity index 55% rename from AsterNET.ARI/Middleware/Default/Command.cs rename to Arke.ARI/Middleware/Default/Command.cs index 600f3d3..65857b6 100644 --- a/AsterNET.ARI/Middleware/Default/Command.cs +++ b/Arke.ARI/Middleware/Default/Command.cs @@ -1,9 +1,9 @@ using System; -using RestSharp.Portable; -using RestSharp.Portable.Authenticators; -using RestSharp.Portable.HttpClient; +using Newtonsoft.Json; +using RestSharp; +using RestSharp.Authenticators; -namespace AsterNET.ARI.Middleware.Default +namespace Arke.ARI.Middleware.Default { public class Command : IRestCommand { @@ -12,15 +12,13 @@ public class Command : IRestCommand public Command(StasisEndpoint info, string path) { - Client = new RestClient(info.AriEndPoint) + var options = new RestClientOptions(info.AriEndPoint) { Authenticator = new HttpBasicAuthenticator(info.Username, info.Password) -#if NETSTANDARD - ,IgnoreResponseStatusCode = true -#endif }; + Client = new RestClient(options); - Request = new RestRequest(path) {Serializer = new RestSharp.Portable.Serializers.JsonSerializer()}; + Request = new RestRequest(path); } @@ -30,7 +28,7 @@ public Command(StasisEndpoint info, string path) public string Method { get { return Request.Method.ToString(); } - set { Request.Method = (RestSharp.Portable.Method) Enum.Parse(typeof (RestSharp.Portable.Method), value); } + set { Request.Method = (RestSharp.Method) Enum.Parse(typeof (RestSharp.Method), value, true); } } @@ -43,7 +41,7 @@ public void AddUrlSegment(string segName, string value) public void AddParameter(string name, object value, Middleware.ParameterType type) { - Request.AddParameter(name, value, (RestSharp.Portable.ParameterType)Enum.Parse(typeof(RestSharp.Portable.ParameterType), type.ToString())); + Request.AddParameter(name, value, (RestSharp.ParameterType)Enum.Parse(typeof(RestSharp.ParameterType), type.ToString(), true)); } } } diff --git a/AsterNET.ARI/Middleware/Default/CommandResult.cs b/Arke.ARI/Middleware/Default/CommandResult.cs similarity index 91% rename from AsterNET.ARI/Middleware/Default/CommandResult.cs rename to Arke.ARI/Middleware/Default/CommandResult.cs index 56097be..2d181f6 100644 --- a/AsterNET.ARI/Middleware/Default/CommandResult.cs +++ b/Arke.ARI/Middleware/Default/CommandResult.cs @@ -1,6 +1,6 @@ using System.Net; -namespace AsterNET.ARI.Middleware.Default +namespace Arke.ARI.Middleware.Default { public class CommandResult : IRestCommandResult where T : new() diff --git a/AsterNET.ARI/Middleware/Default/RESTActionConsumer.cs b/Arke.ARI/Middleware/Default/RESTActionConsumer.cs similarity index 64% rename from AsterNET.ARI/Middleware/Default/RESTActionConsumer.cs rename to Arke.ARI/Middleware/Default/RESTActionConsumer.cs index 4af26cb..e1bb9f6 100644 --- a/AsterNET.ARI/Middleware/Default/RESTActionConsumer.cs +++ b/Arke.ARI/Middleware/Default/RESTActionConsumer.cs @@ -1,7 +1,8 @@ using System; using System.Threading.Tasks; +using RestSharp; -namespace AsterNET.ARI.Middleware.Default +namespace Arke.ARI.Middleware.Default { public class RestActionConsumer : IActionConsumer { @@ -25,12 +26,9 @@ public IRestCommand GetRestCommand(HttpMethod method, string path) { var cmd = (Command) command; var result = cmd.Client.Execute(cmd.Request); - //result.RunSynchronously(); - result.GetAwaiter().GetResult(); - var rtn = new CommandResult {StatusCode = result.Result.StatusCode, Data = result.Result.Data}; - cmd.Client.Dispose(); - + var rtn = new CommandResult {StatusCode = result.StatusCode, Data = result.Data}; + return rtn; } @@ -38,34 +36,27 @@ public IRestCommandResult ProcessRestCommand(IRestCommand command) { var cmd = (Command) command; var result = cmd.Client.Execute(cmd.Request); - //result.RunSynchronously(); - result.GetAwaiter().GetResult(); - var rtn = new CommandResult {StatusCode = result.Result.StatusCode, RawData = result.Result.RawBytes}; - cmd.Client.Dispose(); - + var rtn = new CommandResult {StatusCode = result.StatusCode, RawData = result.RawBytes}; + return rtn; } - public async Task> ProcessRestTaskCommand(IRestCommand command) where T : new() + public async Task> ProcessRestCommandAsync(IRestCommand command) where T : new() { var cmd = (Command) command; - var result = await cmd.Client.Execute(cmd.Request); + var result = await cmd.Client.ExecuteAsync(cmd.Request); var rtn = new CommandResult {StatusCode = result.StatusCode, Data = result.Data}; - cmd.Client.Dispose(); - return rtn; } - public async Task ProcessRestTaskCommand(IRestCommand command) + public async Task ProcessRestCommandAsync(IRestCommand command) { var cmd = (Command) command; - var result = await cmd.Client.Execute(cmd.Request); + var result = await cmd.Client.ExecuteAsync(cmd.Request); var rtn = new CommandResult {StatusCode = result.StatusCode, RawData = result.RawBytes}; - cmd.Client.Dispose(); - return rtn; } } diff --git a/AsterNET.ARI/Middleware/Default/WebSocketEventProducer.cs b/Arke.ARI/Middleware/Default/WebSocketEventProducer.cs similarity index 98% rename from AsterNET.ARI/Middleware/Default/WebSocketEventProducer.cs rename to Arke.ARI/Middleware/Default/WebSocketEventProducer.cs index de7fad6..350ab5e 100644 --- a/AsterNET.ARI/Middleware/Default/WebSocketEventProducer.cs +++ b/Arke.ARI/Middleware/Default/WebSocketEventProducer.cs @@ -3,7 +3,7 @@ using SuperSocket.ClientEngine; using WebSocket4Net; -namespace AsterNET.ARI.Middleware.Default +namespace Arke.ARI.Middleware.Default { public class WebSocketEventProducer : IEventProducer { diff --git a/AsterNET.ARI/Middleware/IActionConsumer.cs b/Arke.ARI/Middleware/IActionConsumer.cs similarity index 68% rename from AsterNET.ARI/Middleware/IActionConsumer.cs rename to Arke.ARI/Middleware/IActionConsumer.cs index f788061..dc6a504 100644 --- a/AsterNET.ARI/Middleware/IActionConsumer.cs +++ b/Arke.ARI/Middleware/IActionConsumer.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace AsterNET.ARI.Middleware +namespace Arke.ARI.Middleware { public enum HttpMethod @@ -21,7 +21,7 @@ public interface IActionConsumer IRestCommandResult ProcessRestCommand(IRestCommand command) where T : new(); IRestCommandResult ProcessRestCommand(IRestCommand command); - Task> ProcessRestTaskCommand(IRestCommand command) where T : new(); - Task ProcessRestTaskCommand(IRestCommand command); + Task> ProcessRestCommandAsync(IRestCommand command) where T : new(); + Task ProcessRestCommandAsync(IRestCommand command); } } \ No newline at end of file diff --git a/AsterNET.ARI/Middleware/IEventProducer.cs b/Arke.ARI/Middleware/IEventProducer.cs similarity index 95% rename from AsterNET.ARI/Middleware/IEventProducer.cs rename to Arke.ARI/Middleware/IEventProducer.cs index c8ff60f..4c5e3a8 100644 --- a/AsterNET.ARI/Middleware/IEventProducer.cs +++ b/Arke.ARI/Middleware/IEventProducer.cs @@ -1,7 +1,7 @@ using System; using WebSocket4Net; -namespace AsterNET.ARI.Middleware +namespace Arke.ARI.Middleware { public enum ConnectionState { diff --git a/AsterNET.ARI/Middleware/IRESTCommand.cs b/Arke.ARI/Middleware/IRESTCommand.cs similarity index 92% rename from AsterNET.ARI/Middleware/IRESTCommand.cs rename to Arke.ARI/Middleware/IRESTCommand.cs index e2fd35b..915dc71 100644 --- a/AsterNET.ARI/Middleware/IRESTCommand.cs +++ b/Arke.ARI/Middleware/IRESTCommand.cs @@ -1,4 +1,4 @@ -namespace AsterNET.ARI.Middleware +namespace Arke.ARI.Middleware { public enum ParameterType diff --git a/AsterNET.ARI/Middleware/IRestCommandResult.cs b/Arke.ARI/Middleware/IRestCommandResult.cs similarity index 92% rename from AsterNET.ARI/Middleware/IRestCommandResult.cs rename to Arke.ARI/Middleware/IRestCommandResult.cs index 0e9b12e..8021605 100644 --- a/AsterNET.ARI/Middleware/IRestCommandResult.cs +++ b/Arke.ARI/Middleware/IRestCommandResult.cs @@ -1,6 +1,6 @@ using System.Net; -namespace AsterNET.ARI.Middleware +namespace Arke.ARI.Middleware { public interface IRestCommandResult where T : new() diff --git a/AsterNET.ARI/StasisEndpoint.cs b/Arke.ARI/StasisEndpoint.cs similarity index 97% rename from AsterNET.ARI/StasisEndpoint.cs rename to Arke.ARI/StasisEndpoint.cs index b06d481..2698a8e 100644 --- a/AsterNET.ARI/StasisEndpoint.cs +++ b/Arke.ARI/StasisEndpoint.cs @@ -1,4 +1,4 @@ -namespace AsterNET.ARI +namespace Arke.ARI { public class StasisEndpoint { diff --git a/AsterNET.ARI.NetStandard/AsterNET.ARI.NetStandard.csproj b/AsterNET.ARI.NetStandard/AsterNET.ARI.NetStandard.csproj deleted file mode 100644 index 278d1aa..0000000 --- a/AsterNET.ARI.NetStandard/AsterNET.ARI.NetStandard.csproj +++ /dev/null @@ -1,145 +0,0 @@ - - - - netstandard2.0 - AsterNET.ARI - AsterNET.ARI - 1.2.0 - AsterNET.ARI - Ben Merrills, Zachary Way - - AsterNET.ARI - Asterisk ARI Api wrapper - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AsterNET.ARI/ARI_1_0/ARIClient.cs b/AsterNET.ARI/ARI_1_0/ARIClient.cs deleted file mode 100644 index ae83ce6..0000000 --- a/AsterNET.ARI/ARI_1_0/ARIClient.cs +++ /dev/null @@ -1,416 +0,0 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM -*/ -using System; -using System.Collections.Generic; -using AsterNET.ARI.Models; - -namespace AsterNET.ARI -{ - public delegate void DeviceStateChangedEventHandler(IAriClient sender, DeviceStateChangedEvent e); - public delegate void PlaybackStartedEventHandler(IAriClient sender, PlaybackStartedEvent e); - public delegate void PlaybackContinuingEventHandler(IAriClient sender, PlaybackContinuingEvent e); - public delegate void PlaybackFinishedEventHandler(IAriClient sender, PlaybackFinishedEvent e); - public delegate void RecordingStartedEventHandler(IAriClient sender, RecordingStartedEvent e); - public delegate void RecordingFinishedEventHandler(IAriClient sender, RecordingFinishedEvent e); - public delegate void RecordingFailedEventHandler(IAriClient sender, RecordingFailedEvent e); - public delegate void ApplicationReplacedEventHandler(IAriClient sender, ApplicationReplacedEvent e); - public delegate void BridgeCreatedEventHandler(IAriClient sender, BridgeCreatedEvent e); - public delegate void BridgeDestroyedEventHandler(IAriClient sender, BridgeDestroyedEvent e); - public delegate void BridgeMergedEventHandler(IAriClient sender, BridgeMergedEvent e); - public delegate void BridgeBlindTransferEventHandler(IAriClient sender, BridgeBlindTransferEvent e); - public delegate void BridgeAttendedTransferEventHandler(IAriClient sender, BridgeAttendedTransferEvent e); - public delegate void ChannelCreatedEventHandler(IAriClient sender, ChannelCreatedEvent e); - public delegate void ChannelDestroyedEventHandler(IAriClient sender, ChannelDestroyedEvent e); - public delegate void ChannelEnteredBridgeEventHandler(IAriClient sender, ChannelEnteredBridgeEvent e); - public delegate void ChannelLeftBridgeEventHandler(IAriClient sender, ChannelLeftBridgeEvent e); - public delegate void ChannelStateChangeEventHandler(IAriClient sender, ChannelStateChangeEvent e); - public delegate void ChannelDtmfReceivedEventHandler(IAriClient sender, ChannelDtmfReceivedEvent e); - public delegate void ChannelDialplanEventHandler(IAriClient sender, ChannelDialplanEvent e); - public delegate void ChannelCallerIdEventHandler(IAriClient sender, ChannelCallerIdEvent e); - public delegate void ChannelUsereventEventHandler(IAriClient sender, ChannelUsereventEvent e); - public delegate void ChannelHangupRequestEventHandler(IAriClient sender, ChannelHangupRequestEvent e); - public delegate void ChannelVarsetEventHandler(IAriClient sender, ChannelVarsetEvent e); - public delegate void ChannelHoldEventHandler(IAriClient sender, ChannelHoldEvent e); - public delegate void ChannelUnholdEventHandler(IAriClient sender, ChannelUnholdEvent e); - public delegate void ChannelTalkingStartedEventHandler(IAriClient sender, ChannelTalkingStartedEvent e); - public delegate void ChannelTalkingFinishedEventHandler(IAriClient sender, ChannelTalkingFinishedEvent e); - public delegate void ContactStatusChangeEventHandler(IAriClient sender, ContactStatusChangeEvent e); - public delegate void PeerStatusChangeEventHandler(IAriClient sender, PeerStatusChangeEvent e); - public delegate void EndpointStateChangeEventHandler(IAriClient sender, EndpointStateChangeEvent e); - public delegate void DialEventHandler(IAriClient sender, DialEvent e); - public delegate void StasisEndEventHandler(IAriClient sender, StasisEndEvent e); - public delegate void StasisStartEventHandler(IAriClient sender, StasisStartEvent e); - public delegate void TextMessageReceivedEventHandler(IAriClient sender, TextMessageReceivedEvent e); - public delegate void ChannelConnectedLineEventHandler(IAriClient sender, ChannelConnectedLineEvent e); - public delegate void UnhandledEventHandler(object sender, AsterNET.ARI.Models.Event eventMessage); - public delegate void UnhandledExceptionEventHandler(object sender, Exception exception); - - public interface IAriEventClient - { - event DeviceStateChangedEventHandler OnDeviceStateChangedEvent; - event PlaybackStartedEventHandler OnPlaybackStartedEvent; - event PlaybackContinuingEventHandler OnPlaybackContinuingEvent; - event PlaybackFinishedEventHandler OnPlaybackFinishedEvent; - event RecordingStartedEventHandler OnRecordingStartedEvent; - event RecordingFinishedEventHandler OnRecordingFinishedEvent; - event RecordingFailedEventHandler OnRecordingFailedEvent; - event ApplicationReplacedEventHandler OnApplicationReplacedEvent; - event BridgeCreatedEventHandler OnBridgeCreatedEvent; - event BridgeDestroyedEventHandler OnBridgeDestroyedEvent; - event BridgeMergedEventHandler OnBridgeMergedEvent; - event BridgeBlindTransferEventHandler OnBridgeBlindTransferEvent; - event BridgeAttendedTransferEventHandler OnBridgeAttendedTransferEvent; - event ChannelCreatedEventHandler OnChannelCreatedEvent; - event ChannelDestroyedEventHandler OnChannelDestroyedEvent; - event ChannelEnteredBridgeEventHandler OnChannelEnteredBridgeEvent; - event ChannelLeftBridgeEventHandler OnChannelLeftBridgeEvent; - event ChannelStateChangeEventHandler OnChannelStateChangeEvent; - event ChannelDtmfReceivedEventHandler OnChannelDtmfReceivedEvent; - event ChannelDialplanEventHandler OnChannelDialplanEvent; - event ChannelCallerIdEventHandler OnChannelCallerIdEvent; - event ChannelUsereventEventHandler OnChannelUsereventEvent; - event ChannelHangupRequestEventHandler OnChannelHangupRequestEvent; - event ChannelVarsetEventHandler OnChannelVarsetEvent; - event ChannelHoldEventHandler OnChannelHoldEvent; - event ChannelUnholdEventHandler OnChannelUnholdEvent; - event ChannelTalkingStartedEventHandler OnChannelTalkingStartedEvent; - event ChannelTalkingFinishedEventHandler OnChannelTalkingFinishedEvent; - event ContactStatusChangeEventHandler OnContactStatusChangeEvent; - event PeerStatusChangeEventHandler OnPeerStatusChangeEvent; - event EndpointStateChangeEventHandler OnEndpointStateChangeEvent; - event DialEventHandler OnDialEvent; - event StasisEndEventHandler OnStasisEndEvent; - event StasisStartEventHandler OnStasisStartEvent; - event TextMessageReceivedEventHandler OnTextMessageReceivedEvent; - event ChannelConnectedLineEventHandler OnChannelConnectedLineEvent; - event UnhandledEventHandler OnUnhandledEvent; - event UnhandledExceptionEventHandler OnUnhandledException; - } - - - /// - /// - /// - public class BaseAriClient : IAriEventClient - { - - #region Events - public event DeviceStateChangedEventHandler OnDeviceStateChangedEvent; - public event PlaybackStartedEventHandler OnPlaybackStartedEvent; - public event PlaybackContinuingEventHandler OnPlaybackContinuingEvent; - public event PlaybackFinishedEventHandler OnPlaybackFinishedEvent; - public event RecordingStartedEventHandler OnRecordingStartedEvent; - public event RecordingFinishedEventHandler OnRecordingFinishedEvent; - public event RecordingFailedEventHandler OnRecordingFailedEvent; - public event ApplicationReplacedEventHandler OnApplicationReplacedEvent; - public event BridgeCreatedEventHandler OnBridgeCreatedEvent; - public event BridgeDestroyedEventHandler OnBridgeDestroyedEvent; - public event BridgeMergedEventHandler OnBridgeMergedEvent; - public event BridgeBlindTransferEventHandler OnBridgeBlindTransferEvent; - public event BridgeAttendedTransferEventHandler OnBridgeAttendedTransferEvent; - public event ChannelCreatedEventHandler OnChannelCreatedEvent; - public event ChannelDestroyedEventHandler OnChannelDestroyedEvent; - public event ChannelEnteredBridgeEventHandler OnChannelEnteredBridgeEvent; - public event ChannelLeftBridgeEventHandler OnChannelLeftBridgeEvent; - public event ChannelStateChangeEventHandler OnChannelStateChangeEvent; - public event ChannelDtmfReceivedEventHandler OnChannelDtmfReceivedEvent; - public event ChannelDialplanEventHandler OnChannelDialplanEvent; - public event ChannelCallerIdEventHandler OnChannelCallerIdEvent; - public event ChannelUsereventEventHandler OnChannelUsereventEvent; - public event ChannelHangupRequestEventHandler OnChannelHangupRequestEvent; - public event ChannelVarsetEventHandler OnChannelVarsetEvent; - public event ChannelHoldEventHandler OnChannelHoldEvent; - public event ChannelUnholdEventHandler OnChannelUnholdEvent; - public event ChannelTalkingStartedEventHandler OnChannelTalkingStartedEvent; - public event ChannelTalkingFinishedEventHandler OnChannelTalkingFinishedEvent; - public event ContactStatusChangeEventHandler OnContactStatusChangeEvent; - public event PeerStatusChangeEventHandler OnPeerStatusChangeEvent; - public event EndpointStateChangeEventHandler OnEndpointStateChangeEvent; - public event DialEventHandler OnDialEvent; - public event StasisEndEventHandler OnStasisEndEvent; - public event StasisStartEventHandler OnStasisStartEvent; - public event TextMessageReceivedEventHandler OnTextMessageReceivedEvent; - public event ChannelConnectedLineEventHandler OnChannelConnectedLineEvent; - public event UnhandledEventHandler OnUnhandledEvent; - public event UnhandledExceptionEventHandler OnUnhandledException; - #endregion - - protected bool UnhandledException(object sender, Exception exception) - { - if (OnUnhandledException != null) - { - OnUnhandledException(sender, exception); - return true; - } - - return false; - } - - protected void FireEvent(string eventName, object eventArgs, IAriClient sender) - { - - switch (eventName) - { - - - case "DeviceStateChanged": - if (OnDeviceStateChangedEvent != null) - OnDeviceStateChangedEvent(sender, (DeviceStateChangedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "PlaybackStarted": - if (OnPlaybackStartedEvent != null) - OnPlaybackStartedEvent(sender, (PlaybackStartedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "PlaybackContinuing": - if (OnPlaybackContinuingEvent != null) - OnPlaybackContinuingEvent(sender, (PlaybackContinuingEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "PlaybackFinished": - if (OnPlaybackFinishedEvent != null) - OnPlaybackFinishedEvent(sender, (PlaybackFinishedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "RecordingStarted": - if (OnRecordingStartedEvent != null) - OnRecordingStartedEvent(sender, (RecordingStartedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "RecordingFinished": - if (OnRecordingFinishedEvent != null) - OnRecordingFinishedEvent(sender, (RecordingFinishedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "RecordingFailed": - if (OnRecordingFailedEvent != null) - OnRecordingFailedEvent(sender, (RecordingFailedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ApplicationReplaced": - if (OnApplicationReplacedEvent != null) - OnApplicationReplacedEvent(sender, (ApplicationReplacedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "BridgeCreated": - if (OnBridgeCreatedEvent != null) - OnBridgeCreatedEvent(sender, (BridgeCreatedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "BridgeDestroyed": - if (OnBridgeDestroyedEvent != null) - OnBridgeDestroyedEvent(sender, (BridgeDestroyedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "BridgeMerged": - if (OnBridgeMergedEvent != null) - OnBridgeMergedEvent(sender, (BridgeMergedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "BridgeBlindTransfer": - if (OnBridgeBlindTransferEvent != null) - OnBridgeBlindTransferEvent(sender, (BridgeBlindTransferEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "BridgeAttendedTransfer": - if (OnBridgeAttendedTransferEvent != null) - OnBridgeAttendedTransferEvent(sender, (BridgeAttendedTransferEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelCreated": - if (OnChannelCreatedEvent != null) - OnChannelCreatedEvent(sender, (ChannelCreatedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelDestroyed": - if (OnChannelDestroyedEvent != null) - OnChannelDestroyedEvent(sender, (ChannelDestroyedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelEnteredBridge": - if (OnChannelEnteredBridgeEvent != null) - OnChannelEnteredBridgeEvent(sender, (ChannelEnteredBridgeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelLeftBridge": - if (OnChannelLeftBridgeEvent != null) - OnChannelLeftBridgeEvent(sender, (ChannelLeftBridgeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelStateChange": - if (OnChannelStateChangeEvent != null) - OnChannelStateChangeEvent(sender, (ChannelStateChangeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelDtmfReceived": - if (OnChannelDtmfReceivedEvent != null) - OnChannelDtmfReceivedEvent(sender, (ChannelDtmfReceivedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelDialplan": - if (OnChannelDialplanEvent != null) - OnChannelDialplanEvent(sender, (ChannelDialplanEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelCallerId": - if (OnChannelCallerIdEvent != null) - OnChannelCallerIdEvent(sender, (ChannelCallerIdEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelUserevent": - if (OnChannelUsereventEvent != null) - OnChannelUsereventEvent(sender, (ChannelUsereventEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelHangupRequest": - if (OnChannelHangupRequestEvent != null) - OnChannelHangupRequestEvent(sender, (ChannelHangupRequestEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelVarset": - if (OnChannelVarsetEvent != null) - OnChannelVarsetEvent(sender, (ChannelVarsetEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelHold": - if (OnChannelHoldEvent != null) - OnChannelHoldEvent(sender, (ChannelHoldEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelUnhold": - if (OnChannelUnholdEvent != null) - OnChannelUnholdEvent(sender, (ChannelUnholdEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelTalkingStarted": - if (OnChannelTalkingStartedEvent != null) - OnChannelTalkingStartedEvent(sender, (ChannelTalkingStartedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelTalkingFinished": - if (OnChannelTalkingFinishedEvent != null) - OnChannelTalkingFinishedEvent(sender, (ChannelTalkingFinishedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ContactStatusChange": - if (OnContactStatusChangeEvent != null) - OnContactStatusChangeEvent(sender, (ContactStatusChangeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "PeerStatusChange": - if (OnPeerStatusChangeEvent != null) - OnPeerStatusChangeEvent(sender, (PeerStatusChangeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "EndpointStateChange": - if (OnEndpointStateChangeEvent != null) - OnEndpointStateChangeEvent(sender, (EndpointStateChangeEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "Dial": - if (OnDialEvent != null) - OnDialEvent(sender, (DialEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "StasisEnd": - if (OnStasisEndEvent != null) - OnStasisEndEvent(sender, (StasisEndEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "StasisStart": - if (OnStasisStartEvent != null) - OnStasisStartEvent(sender, (StasisStartEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "TextMessageReceived": - if (OnTextMessageReceivedEvent != null) - OnTextMessageReceivedEvent(sender, (TextMessageReceivedEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - - - case "ChannelConnectedLine": - if (OnChannelConnectedLineEvent != null) - OnChannelConnectedLineEvent(sender, (ChannelConnectedLineEvent)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - default: - if (OnUnhandledEvent != null) - OnUnhandledEvent(this, (Event)eventArgs); - else if (OnUnhandledEvent != null) OnUnhandledEvent(sender, (Event)eventArgs); - break; - } - } - } -} diff --git a/AsterNET.ARI/ARI_1_0/Actions/IApplicationsActions.cs b/AsterNET.ARI/ARI_1_0/Actions/IApplicationsActions.cs deleted file mode 100644 index e4c5501..0000000 --- a/AsterNET.ARI/ARI_1_0/Actions/IApplicationsActions.cs +++ /dev/null @@ -1,60 +0,0 @@ -/* - AsterNET ARI Framework - Automatically generated file @ 9/22/2016 4:43:50 PM -*/ -using System; -using System.Collections.Generic; -using AsterNET.ARI.Models; -using AsterNET.ARI; -using System.Threading.Tasks; - -namespace AsterNET.ARI.Actions -{ - - public interface IApplicationsActions - { - /// - /// List all applications.. - /// - List List(); - /// - /// Get details of an application.. - /// - /// Application's name - Application Get(string applicationName); - /// - /// Subscribe an application to a event source.. Returns the state of the application after the subscriptions have changed - /// - /// Application's name - /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - Application Subscribe(string applicationName, string eventSource); - /// - /// Unsubscribe an application from an event source.. Returns the state of the application after the subscriptions have changed - /// - /// Application's name - /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - Application Unsubscribe(string applicationName, string eventSource); - - /// - /// List all applications.. - /// - Task> ListAsync(); - /// - /// Get details of an application.. - /// - /// Application's name - Task GetAsync(string applicationName); - /// - /// Subscribe an application to a event source.. Returns the state of the application after the subscriptions have changed - /// - /// Application's name - /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - Task SubscribeAsync(string applicationName, string eventSource); - /// - /// Unsubscribe an application from an event source.. Returns the state of the application after the subscriptions have changed - /// - /// Application's name - /// URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}[/{resource}], deviceState:{deviceName} - Task UnsubscribeAsync(string applicationName, string eventSource); - } -} diff --git a/AsterNET.ARI/ARI_1_0/Models.cs b/AsterNET.ARI/ARI_1_0/Models.cs deleted file mode 100644 index 409be6c..0000000 --- a/AsterNET.ARI/ARI_1_0/Models.cs +++ /dev/null @@ -1,88 +0,0 @@ - - -// Generated helper templates -// Generated items -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ARIClient.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\MailboxesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IMailboxesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Mailbox.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IRecordingsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\LiveRecording.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\StoredRecording.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\SoundsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ISoundsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Sound.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\FormatLangPair.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybacksActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IPlaybacksActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Playback.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceStatesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IDeviceStatesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceState.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\EndpointsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IEndpointsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessage.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessageVariable.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Endpoint.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ApplicationsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IApplicationsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Application.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\AsteriskActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IAsteriskActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Module.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\SetId.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\StatusInfo.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\SystemInfo.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\AsteriskInfo.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BuildInfo.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ConfigTuple.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ConfigInfo.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Variable.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IChannelsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\CallerID.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Channel.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Dialed.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\DialplanCEP.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IBridgesActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Bridge.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\EventsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\IEventsActions.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\StasisStartEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\StasisEndEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\DialEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\EndpointStateChangeEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelUnholdEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelConnectedLineEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelHoldEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelVarsetEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelHangupRequestEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDialplanEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelUsereventEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeBlindTransferEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeDestroyedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelEnteredBridgeEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\TextMessageReceivedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeAttendedTransferEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingFinishedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeMergedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingFailedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelTalkingStartedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybackStartedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelTalkingFinishedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Event.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\DeviceStateChangedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDestroyedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelLeftBridgeEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\RecordingStartedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\PlaybackFinishedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelStateChangeEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ApplicationReplacedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\Message.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelCreatedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\MissingParams.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\BridgeCreatedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelDtmfReceivedEvent.cs -// AsterNET.ARI\CodeGeneratror\ARICodeGen\Templates\ChannelCallerIdEvent.cs diff --git a/AsterNET.ARI/AsterNET.ARI.csproj b/AsterNET.ARI/AsterNET.ARI.csproj deleted file mode 100644 index 1f358a4..0000000 --- a/AsterNET.ARI/AsterNET.ARI.csproj +++ /dev/null @@ -1,199 +0,0 @@ - - - - - Debug - AnyCPU - {F4C8C633-2207-4C25-89A8-4D23D9CFA964} - Library - Properties - AsterNET.ARI - AsterNET.ARI - v4.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\FubarCoder.RestSharp.Portable.Core.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.Core.dll - True - - - ..\packages\FubarCoder.RestSharp.Portable.Encodings.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.Encodings.dll - True - - - ..\packages\FubarCoder.RestSharp.Portable.HttpClient.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.HttpClient.dll - True - - - ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - ..\packages\SuperSocket.ClientEngine.Core.0.10.0\lib\net45\SuperSocket.ClientEngine.dll - - - - - - - - - - - - ..\packages\WebSocket4Net.0.15.2\lib\net45\WebSocket4Net.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Models.txt4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - \ No newline at end of file diff --git a/AsterNET.ARI/Properties/AssemblyInfo.cs b/AsterNET.ARI/Properties/AssemblyInfo.cs deleted file mode 100644 index 784a7dc..0000000 --- a/AsterNET.ARI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AsterNET.ARI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AsterNET.ARI")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0d0c4e4f-1ff2-427b-9027-d010b0edd456")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.2.0")] -[assembly: AssemblyFileVersion("1.2.2.0")] diff --git a/AsterNET.ARI/packages.config b/AsterNET.ARI/packages.config deleted file mode 100644 index 4da6283..0000000 --- a/AsterNET.ARI/packages.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/AsyncSamples/SimpleBridgeAsync/App.config b/AsyncSamples/SimpleBridgeAsync/App.config index 88fa402..4bfa005 100644 --- a/AsyncSamples/SimpleBridgeAsync/App.config +++ b/AsyncSamples/SimpleBridgeAsync/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/AsyncSamples/SimpleBridgeAsync/Program.cs b/AsyncSamples/SimpleBridgeAsync/Program.cs index 4e4fe96..cb9f777 100644 --- a/AsyncSamples/SimpleBridgeAsync/Program.cs +++ b/AsyncSamples/SimpleBridgeAsync/Program.cs @@ -1,8 +1,8 @@ /* - * SimpleBridge AsterNET.ARI Bridge Sample + * SimpleBridge Arke.ARI Bridge Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -15,11 +15,11 @@ * */ -using AsterNET.ARI.Models; +using Arke.ARI.Models; using System; using System.Threading.Tasks; -namespace AsterNET.ARI.SimpleBridgeAsync +namespace Arke.ARI.SimpleBridgeAsync { class Program { @@ -95,7 +95,7 @@ private static async Task RunDemo() } } - static async void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent e) + static async void c_OnStasisEndEvent(object sender, Arke.ARI.Models.StasisEndEvent e) { // remove from bridge await ActionClient.Bridges.RemoveChannelAsync(SimpleBridge.Id, e.Channel.Id); @@ -104,7 +104,7 @@ static async void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEn await ActionClient.Channels.HangupAsync(e.Channel.Id, "normal"); } - static async void c_OnStasisStartEvent(object sender, AsterNET.ARI.Models.StasisStartEvent e) + static async void c_OnStasisStartEvent(object sender, Arke.ARI.Models.StasisStartEvent e) { // answer channel await ActionClient.Channels.AnswerAsync(e.Channel.Id); diff --git a/AsyncSamples/SimpleBridgeAsync/Properties/AssemblyInfo.cs b/AsyncSamples/SimpleBridgeAsync/Properties/AssemblyInfo.cs index 93de1d9..20bf911 100644 --- a/AsyncSamples/SimpleBridgeAsync/Properties/AssemblyInfo.cs +++ b/AsyncSamples/SimpleBridgeAsync/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SimpleBridgeAsync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimpleBridgeAsync")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("c9ae28e1-5d6e-4995-a40d-ffb9a3b39ce1")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AsyncSamples/SimpleBridgeAsync/SimpleBridgeAsync.csproj b/AsyncSamples/SimpleBridgeAsync/SimpleBridgeAsync.csproj index cc9bbd5..dfd3be8 100644 --- a/AsyncSamples/SimpleBridgeAsync/SimpleBridgeAsync.csproj +++ b/AsyncSamples/SimpleBridgeAsync/SimpleBridgeAsync.csproj @@ -1,66 +1,19 @@ - - - + - Debug - AnyCPU - {C9AE28E1-5D6E-4995-A40D-FFB9A3B39CE1} + net7.0 Exe - Properties - SimpleBridgeAsync - SimpleBridgeAsync - v4.5.2 - 512 - true + false + SimpleBridgeAsync + SimpleBridgeAsync + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + - - \ No newline at end of file diff --git a/AsyncSamples/SimpleConfAsync/App.config b/AsyncSamples/SimpleConfAsync/App.config index cd39b78..d531c6e 100644 --- a/AsyncSamples/SimpleConfAsync/App.config +++ b/AsyncSamples/SimpleConfAsync/App.config @@ -1,14 +1,10 @@ - + - + - - - - - \ No newline at end of file + diff --git a/AsyncSamples/SimpleConfAsync/Conference.cs b/AsyncSamples/SimpleConfAsync/Conference.cs index cfabcb1..9d600d7 100644 --- a/AsyncSamples/SimpleConfAsync/Conference.cs +++ b/AsyncSamples/SimpleConfAsync/Conference.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using AsterNET.ARI; -using AsterNET.ARI.Models; +using Arke.ARI; +using Arke.ARI.Models; using System.Threading.Tasks; namespace SimpleConfAsync diff --git a/AsyncSamples/SimpleConfAsync/ConferenceUser.cs b/AsyncSamples/SimpleConfAsync/ConferenceUser.cs index de05aa2..c3906f7 100644 --- a/AsyncSamples/SimpleConfAsync/ConferenceUser.cs +++ b/AsyncSamples/SimpleConfAsync/ConferenceUser.cs @@ -1,7 +1,7 @@ using System; using System.Diagnostics; -using AsterNET.ARI; -using AsterNET.ARI.Models; +using Arke.ARI; +using Arke.ARI.Models; using System.Threading.Tasks; namespace SimpleConfAsync diff --git a/AsyncSamples/SimpleConfAsync/Helpers/SyncHelper.cs b/AsyncSamples/SimpleConfAsync/Helpers/SyncHelper.cs index 40d4ad8..41add15 100644 --- a/AsyncSamples/SimpleConfAsync/Helpers/SyncHelper.cs +++ b/AsyncSamples/SimpleConfAsync/Helpers/SyncHelper.cs @@ -1,6 +1,6 @@ -using AsterNET.ARI.Models; +using Arke.ARI.Models; using System.Threading; -using AsterNET.ARI; +using Arke.ARI; namespace SimpleConfAsync.Helpers { diff --git a/AsyncSamples/SimpleConfAsync/Program.cs b/AsyncSamples/SimpleConfAsync/Program.cs index f8a5e38..2a23a2f 100644 --- a/AsyncSamples/SimpleConfAsync/Program.cs +++ b/AsyncSamples/SimpleConfAsync/Program.cs @@ -1,13 +1,10 @@ using System; using System.Diagnostics; -using System.Security.Cryptography.X509Certificates; -using System.Security.Policy; -using System.Threading.Tasks; -using AsterNET.ARI; -using AsterNET.ARI.Models; -using Microsoft.Owin.Hosting; +using Arke.ARI; +using Arke.ARI.Models; using SimpleConfAsync.REST; using System.Linq; +using Microsoft.Owin.Hosting; namespace SimpleConfAsync { diff --git a/AsyncSamples/SimpleConfAsync/Properties/AssemblyInfo.cs b/AsyncSamples/SimpleConfAsync/Properties/AssemblyInfo.cs index eea5525..f3a426e 100644 --- a/AsyncSamples/SimpleConfAsync/Properties/AssemblyInfo.cs +++ b/AsyncSamples/SimpleConfAsync/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SimpleConfAsync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimpleConfAsync")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("bedeaa1c-0513-4cfb-8b5c-794e4c682820")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AsyncSamples/SimpleConfAsync/REST/ConferenceController.cs b/AsyncSamples/SimpleConfAsync/REST/ConferenceController.cs index b147f05..e761be9 100644 --- a/AsyncSamples/SimpleConfAsync/REST/ConferenceController.cs +++ b/AsyncSamples/SimpleConfAsync/REST/ConferenceController.cs @@ -4,13 +4,11 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; -using System.Web.Http; -using System.Web.Http.Cors; +using Microsoft.AspNetCore.Mvc; namespace SimpleConfAsync.REST { - [EnableCors(origins: "http://localhost:9000", headers: "*", methods: "*")] - public class ConferenceController : ApiController + public class ConferenceController : ControllerBase { [HttpGet] public IEnumerable Get() diff --git a/AsyncSamples/SimpleConfAsync/REST/Startup.cs b/AsyncSamples/SimpleConfAsync/REST/Startup.cs index cbb5899..f71320c 100644 --- a/AsyncSamples/SimpleConfAsync/REST/Startup.cs +++ b/AsyncSamples/SimpleConfAsync/REST/Startup.cs @@ -1,7 +1,7 @@ -using Owin; -using System.Net.Http; +using System.Net.Http; using System.Web.Http; using System.Web.Http.Routing; +using Owin; namespace SimpleConfAsync.REST { diff --git a/AsyncSamples/SimpleConfAsync/SimpleConfAsync.csproj b/AsyncSamples/SimpleConfAsync/SimpleConfAsync.csproj index e27e21f..4f9880a 100644 --- a/AsyncSamples/SimpleConfAsync/SimpleConfAsync.csproj +++ b/AsyncSamples/SimpleConfAsync/SimpleConfAsync.csproj @@ -1,121 +1,31 @@ - - - + - Debug - AnyCPU - {BEDEAA1C-0513-4CFB-8B5C-794E4C682820} Exe - Properties - SimpleConfAsync - SimpleConfAsync - v4.5.2 - 512 - true - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + + net7.0 + false + SimpleConfAsync + SimpleConfAsync + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - ..\..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll - True - - - ..\..\packages\Microsoft.Owin.Host.HttpListener.2.0.2\lib\net45\Microsoft.Owin.Host.HttpListener.dll - True - - - ..\..\packages\Microsoft.Owin.Hosting.2.0.2\lib\net45\Microsoft.Owin.Hosting.dll - True - - - ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - True - - - ..\..\packages\Owin.1.0\lib\net40\Owin.dll - True - - - - - ..\..\packages\Microsoft.AspNet.WebApi.Client.5.1.1\lib\net45\System.Net.Http.Formatting.dll - True - - - - ..\..\packages\Microsoft.AspNet.Cors.5.1.1\lib\net45\System.Web.Cors.dll - True - - - ..\..\packages\Microsoft.AspNet.WebApi.Core.5.1.1\lib\net45\System.Web.Http.dll - True - - - ..\..\packages\Microsoft.AspNet.WebApi.Cors.5.1.1\lib\net45\System.Web.Http.Cors.dll - True - - - ..\..\packages\Microsoft.AspNet.WebApi.Owin.5.1.1\lib\net45\System.Web.Http.Owin.dll - True - - - ..\..\packages\Microsoft.AspNet.WebApi.WebHost.5.1.1\lib\net45\System.Web.Http.WebHost.dll - True - - - - - - - - - - - - - - - - - - - - + + + + + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + 5.2.9 + + + - - + - - \ No newline at end of file diff --git a/AsyncSamples/SimpleConfAsync/packages.config b/AsyncSamples/SimpleConfAsync/packages.config deleted file mode 100644 index a064f20..0000000 --- a/AsyncSamples/SimpleConfAsync/packages.config +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AsyncSamples/SimpleRecordAndPlaybackAsync/App.config b/AsyncSamples/SimpleRecordAndPlaybackAsync/App.config index 88fa402..4bfa005 100644 --- a/AsyncSamples/SimpleRecordAndPlaybackAsync/App.config +++ b/AsyncSamples/SimpleRecordAndPlaybackAsync/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/AsyncSamples/SimpleRecordAndPlaybackAsync/Program.cs b/AsyncSamples/SimpleRecordAndPlaybackAsync/Program.cs index 5e7659f..e3c0e35 100644 --- a/AsyncSamples/SimpleRecordAndPlaybackAsync/Program.cs +++ b/AsyncSamples/SimpleRecordAndPlaybackAsync/Program.cs @@ -1,6 +1,6 @@ using System; -using AsterNET.ARI; -using AsterNET.ARI.Models; +using Arke.ARI; +using Arke.ARI.Models; namespace SimpleRecordAndPlaybackAsync { @@ -81,7 +81,7 @@ static void PlaybackRecording(Channel c) var repeat = actionClient.Channels.Play(c.Id, "recording:temp-recording", "en", 0, 0, Guid.NewGuid().ToString()).Id; } - static void ActionClientOnRecordingFinishedEvent(object sender, AsterNET.ARI.Models.RecordingFinishedEvent e) + static void ActionClientOnRecordingFinishedEvent(object sender, Arke.ARI.Models.RecordingFinishedEvent e) { if (e.Recording.Name != recording.Recording.Name) return; @@ -90,7 +90,7 @@ static void ActionClientOnRecordingFinishedEvent(object sender, AsterNET.ARI.Mod GetRecording(recording.Channel); } - static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent e) + static void c_OnStasisEndEvent(object sender, Arke.ARI.Models.StasisEndEvent e) { // Delete recording actionClient.Recordings.DeleteStored("temp-recording"); @@ -99,7 +99,7 @@ static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent actionClient.Channels.Hangup(e.Channel.Id, "normal"); } - static void c_OnStasisStartEvent(object sender, AsterNET.ARI.Models.StasisStartEvent e) + static void c_OnStasisStartEvent(object sender, Arke.ARI.Models.StasisStartEvent e) { // answer channel actionClient.Channels.Answer(e.Channel.Id); diff --git a/AsyncSamples/SimpleRecordAndPlaybackAsync/Properties/AssemblyInfo.cs b/AsyncSamples/SimpleRecordAndPlaybackAsync/Properties/AssemblyInfo.cs index bdc8a8a..f0d04d5 100644 --- a/AsyncSamples/SimpleRecordAndPlaybackAsync/Properties/AssemblyInfo.cs +++ b/AsyncSamples/SimpleRecordAndPlaybackAsync/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SimpleRecordAndPlaybackAsync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimpleRecordAndPlaybackAsync")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("dee23389-a37d-484f-bb35-e63cf7977c7e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AsyncSamples/SimpleRecordAndPlaybackAsync/SimpleRecordAndPlaybackAsync.csproj b/AsyncSamples/SimpleRecordAndPlaybackAsync/SimpleRecordAndPlaybackAsync.csproj index 519cb5e..ceaf310 100644 --- a/AsyncSamples/SimpleRecordAndPlaybackAsync/SimpleRecordAndPlaybackAsync.csproj +++ b/AsyncSamples/SimpleRecordAndPlaybackAsync/SimpleRecordAndPlaybackAsync.csproj @@ -1,66 +1,19 @@ - - - + - Debug - AnyCPU - {DEE23389-A37D-484F-BB35-E63CF7977C7E} + net7.0 Exe - Properties - SimpleRecordAndPlaybackAsync - SimpleRecordAndPlaybackAsync - v4.5.2 - 512 - true + false + SimpleRecordAndPlaybackAsync + SimpleRecordAndPlaybackAsync + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + - - \ No newline at end of file diff --git a/AsyncSamples/SimpleTestApplicationAsync/App.config b/AsyncSamples/SimpleTestApplicationAsync/App.config index 88fa402..4bfa005 100644 --- a/AsyncSamples/SimpleTestApplicationAsync/App.config +++ b/AsyncSamples/SimpleTestApplicationAsync/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/AsyncSamples/SimpleTestApplicationAsync/Program.cs b/AsyncSamples/SimpleTestApplicationAsync/Program.cs index 194ad2e..44b8693 100644 --- a/AsyncSamples/SimpleTestApplicationAsync/Program.cs +++ b/AsyncSamples/SimpleTestApplicationAsync/Program.cs @@ -1,8 +1,8 @@ using System; -using AsterNET.ARI.Models; +using Arke.ARI.Models; -namespace AsterNET.ARI.SimpleTestApplicationAsync +namespace Arke.ARI.SimpleTestApplicationAsync { internal class Program { diff --git a/AsyncSamples/SimpleTestApplicationAsync/Properties/AssemblyInfo.cs b/AsyncSamples/SimpleTestApplicationAsync/Properties/AssemblyInfo.cs index 5bccd0e..75650b6 100644 --- a/AsyncSamples/SimpleTestApplicationAsync/Properties/AssemblyInfo.cs +++ b/AsyncSamples/SimpleTestApplicationAsync/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SimpleTestApplicationAsync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimpleTestApplicationAsync")] -[assembly: AssemblyCopyright("Copyright © 2016")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("55979546-152e-4157-9aa3-839f6e3ce4e8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AsyncSamples/SimpleTestApplicationAsync/SimpleTestApplicationAsync.csproj b/AsyncSamples/SimpleTestApplicationAsync/SimpleTestApplicationAsync.csproj index eaf0150..c1c383f 100644 --- a/AsyncSamples/SimpleTestApplicationAsync/SimpleTestApplicationAsync.csproj +++ b/AsyncSamples/SimpleTestApplicationAsync/SimpleTestApplicationAsync.csproj @@ -1,66 +1,19 @@ - - - + - Debug - AnyCPU - {55979546-152E-4157-9AA3-839F6E3CE4E8} + net7.0 Exe - Properties - SimpleTestApplicationAsync - SimpleTestApplicationAsync - v4.5.2 - 512 - true + false + SimpleTestApplicationAsync + SimpleTestApplicationAsync + Copyright © 2016 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + - - \ No newline at end of file diff --git a/CodeGeneratror/ARICodeGen/ARICodeGen.csproj b/CodeGeneratror/ARICodeGen/ARICodeGen.csproj index 94b41cb..6f3cf45 100644 --- a/CodeGeneratror/ARICodeGen/ARICodeGen.csproj +++ b/CodeGeneratror/ARICodeGen/ARICodeGen.csproj @@ -9,8 +9,9 @@ Properties ARICodeGen ARICodeGen - v4.5 + v4.8 512 + AnyCPU @@ -21,6 +22,7 @@ DEBUG;TRACE prompt 4 + false AnyCPU @@ -31,46 +33,25 @@ prompt 4 + + true + - - ..\..\packages\FubarCoder.RestSharp.Portable.Core.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.Core.dll - - - ..\..\packages\FubarCoder.RestSharp.Portable.Encodings.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.Encodings.dll - - - ..\..\packages\FubarCoder.RestSharp.Portable.HttpClient.4.0.8\lib\net45\FubarCoder.RestSharp.Portable.HttpClient.dll - - - ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - True - - - ..\..\packages\SuperSocket.ClientEngine.Core.0.8.0.8\lib\net45\SuperSocket.ClientEngine.dll - + - - ..\..\packages\WebSocket4Net.0.15.0-beta6\lib\net45\WebSocket4Net.dll - True - - - True - True - Models.tt - @@ -85,7 +66,6 @@ - TextTemplatingFileGenerator Models.cs @@ -94,6 +74,20 @@ + + + 13.0.3 + + + 110.2.0 + + + 3.1.3 + + + 0.15.2 + + \ No newline at end of file diff --git a/Samples/SimpleBridge/App.config b/Samples/SimpleBridge/App.config index 8e15646..4bfa005 100644 --- a/Samples/SimpleBridge/App.config +++ b/Samples/SimpleBridge/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/Samples/SimpleBridge/Program.cs b/Samples/SimpleBridge/Program.cs index a0dd546..0762941 100644 --- a/Samples/SimpleBridge/Program.cs +++ b/Samples/SimpleBridge/Program.cs @@ -1,8 +1,8 @@ /* - * SimpleBridge AsterNET.ARI Bridge Sample + * SimpleBridge Arke.ARI Bridge Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -15,10 +15,10 @@ * */ -using AsterNET.ARI.Models; +using Arke.ARI.Models; using System; -namespace AsterNET.ARI.SimpleBridge +namespace Arke.ARI.SimpleBridge { class Program { @@ -88,7 +88,7 @@ static void Main(string[] args) } } - static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent e) + static void c_OnStasisEndEvent(object sender, Arke.ARI.Models.StasisEndEvent e) { // remove from bridge ActionClient.Bridges.RemoveChannel(SimpleBridge.Id, e.Channel.Id); @@ -97,7 +97,7 @@ static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent ActionClient.Channels.Hangup(e.Channel.Id, "normal"); } - static void c_OnStasisStartEvent(object sender, AsterNET.ARI.Models.StasisStartEvent e) + static void c_OnStasisStartEvent(object sender, Arke.ARI.Models.StasisStartEvent e) { // answer channel ActionClient.Channels.Answer(e.Channel.Id); diff --git a/Samples/SimpleBridge/Properties/AssemblyInfo.cs b/Samples/SimpleBridge/Properties/AssemblyInfo.cs index ac841e4..f2c642a 100644 --- a/Samples/SimpleBridge/Properties/AssemblyInfo.cs +++ b/Samples/SimpleBridge/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AsterNET.ARI.SimpleBridge")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AsterNET.ARI.SimpleBridge")] -[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("a58022d7-b69b-4f24-9b63-86b3d06024db")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Samples/SimpleBridge/SimpleBridge.csproj b/Samples/SimpleBridge/SimpleBridge.csproj index c65aaae..c59a1df 100644 --- a/Samples/SimpleBridge/SimpleBridge.csproj +++ b/Samples/SimpleBridge/SimpleBridge.csproj @@ -1,64 +1,21 @@ - - - + - Debug - AnyCPU - {4E7F6185-4433-4C75-96A6-8859411577CC} + net7.0 Exe - Properties - AsterNET.ARI.SimpleBridge - AsterNET.ARI.SimpleBridge - v4.5 - 512 + Arke.ARI.SimpleBridge + Arke.ARI.SimpleBridge + false + Arke.ARI.SimpleBridge + Arke.ARI.SimpleBridge + Copyright © 2014 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + - - \ No newline at end of file diff --git a/Samples/SimpleConfExample/App.config b/Samples/SimpleConfExample/App.config index 20c9e3b..3e72894 100644 --- a/Samples/SimpleConfExample/App.config +++ b/Samples/SimpleConfExample/App.config @@ -1,30 +1,26 @@ - + - + - - + + - - + + - - - - - - + + - \ No newline at end of file + diff --git a/Samples/SimpleConfExample/Conference.cs b/Samples/SimpleConfExample/Conference.cs index 3647d6e..2a25e78 100644 --- a/Samples/SimpleConfExample/Conference.cs +++ b/Samples/SimpleConfExample/Conference.cs @@ -1,8 +1,8 @@ /* - * SimpleConf AsterNET.ARI Conference Sample + * SimpleConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -14,9 +14,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using AsterNET.ARI.Models; +using Arke.ARI.Models; -namespace AsterNET.ARI.SimpleConfExample +namespace Arke.ARI.SimpleConfExample { public enum ConferenceState { diff --git a/Samples/SimpleConfExample/ConferenceUser.cs b/Samples/SimpleConfExample/ConferenceUser.cs index 48542f5..ce3697b 100644 --- a/Samples/SimpleConfExample/ConferenceUser.cs +++ b/Samples/SimpleConfExample/ConferenceUser.cs @@ -1,8 +1,8 @@ /* - * SimpleConf AsterNET.ARI Conference Sample + * SimpleConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -12,9 +12,9 @@ using System; using System.Diagnostics; -using AsterNET.ARI.Models; +using Arke.ARI.Models; -namespace AsterNET.ARI.SimpleConfExample +namespace Arke.ARI.SimpleConfExample { public enum ConferenceUserState { diff --git a/Samples/SimpleConfExample/Helpers/SyncHelper.cs b/Samples/SimpleConfExample/Helpers/SyncHelper.cs index d6fba55..3425feb 100644 --- a/Samples/SimpleConfExample/Helpers/SyncHelper.cs +++ b/Samples/SimpleConfExample/Helpers/SyncHelper.cs @@ -1,8 +1,8 @@ /* - * SimpleConf AsterNET.ARI Conference Sample + * SimpleConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -10,10 +10,10 @@ * */ -using AsterNET.ARI.Models; +using Arke.ARI.Models; using System.Threading; -namespace AsterNET.ARI.SimpleConfExample.Helpers +namespace Arke.ARI.SimpleConfExample.Helpers { public static class SyncHelper { diff --git a/Samples/SimpleConfExample/Program.cs b/Samples/SimpleConfExample/Program.cs index d8832c3..d8014f7 100644 --- a/Samples/SimpleConfExample/Program.cs +++ b/Samples/SimpleConfExample/Program.cs @@ -1,8 +1,8 @@ /* - * MiniConf AsterNET.ARI Conference Sample + * MiniConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -16,14 +16,14 @@ * */ -using AsterNET.ARI.Models; -using AsterNET.ARI.SimpleConfExample.REST; +using Arke.ARI.Models; +using Arke.ARI.SimpleConfExample.REST; using Microsoft.Owin.Hosting; using System; using System.Diagnostics; using System.Linq; -namespace AsterNET.ARI.SimpleConfExample +namespace Arke.ARI.SimpleConfExample { public class AppConfig { diff --git a/Samples/SimpleConfExample/Properties/AssemblyInfo.cs b/Samples/SimpleConfExample/Properties/AssemblyInfo.cs index cad558e..3eda80a 100644 --- a/Samples/SimpleConfExample/Properties/AssemblyInfo.cs +++ b/Samples/SimpleConfExample/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AsterNET.ARI.SimpleConfExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AsterNET.ARI.SimpleConfExample")] -[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("962d69c9-e6ad-478e-8ef7-575ef728e0b2")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Samples/SimpleConfExample/REST/ConferenceController.cs b/Samples/SimpleConfExample/REST/ConferenceController.cs index 10d97c2..73746b2 100644 --- a/Samples/SimpleConfExample/REST/ConferenceController.cs +++ b/Samples/SimpleConfExample/REST/ConferenceController.cs @@ -1,26 +1,24 @@ /* - * SimpleConf AsterNET.ARI Conference Sample + * SimpleConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, * fitness for a particular purpose, or non-infringement. * */ - using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; -using System.Web.Http.Cors; +using Microsoft.AspNetCore.Cors; -namespace AsterNET.ARI.SimpleConfExample.REST +namespace Arke.ARI.SimpleConfExample.REST { - [EnableCors(origins: "http://localhost:9000", headers: "*", methods: "*")] public class ConferenceController : ApiController { [HttpGet] diff --git a/Samples/SimpleConfExample/REST/Startup.cs b/Samples/SimpleConfExample/REST/Startup.cs index b8ce3ae..f281079 100644 --- a/Samples/SimpleConfExample/REST/Startup.cs +++ b/Samples/SimpleConfExample/REST/Startup.cs @@ -1,8 +1,8 @@ /* - * SimpleConf AsterNET.ARI Conference Sample + * SimpleConf Arke.ARI Conference Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -15,7 +15,7 @@ using System.Web.Http; using System.Web.Http.Routing; -namespace AsterNET.ARI.SimpleConfExample.REST +namespace Arke.ARI.SimpleConfExample.REST { public class Startup { diff --git a/Samples/SimpleConfExample/SimpleConf.csproj b/Samples/SimpleConfExample/SimpleConf.csproj index d94d96a..f484e6f 100644 --- a/Samples/SimpleConfExample/SimpleConf.csproj +++ b/Samples/SimpleConfExample/SimpleConf.csproj @@ -1,111 +1,36 @@ - - - - - Debug - AnyCPU - {BD04EEB4-0475-4D2F-ADA9-76E4F55BB5BB} - Exe - Properties - AsterNET.ARI.SimpleConfExample - AsterNET.ARI.SimpleConfExample - v4.5 - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll - - - ..\..\packages\Microsoft.Owin.Cors.2.1.0\lib\net45\Microsoft.Owin.Cors.dll - - - ..\..\packages\Microsoft.Owin.Host.HttpListener.2.0.2\lib\net45\Microsoft.Owin.Host.HttpListener.dll - - - ..\..\packages\Microsoft.Owin.Hosting.2.0.2\lib\net45\Microsoft.Owin.Hosting.dll - - - ..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll - - - ..\..\packages\Owin.1.0\lib\net40\Owin.dll - - - - - - False - ..\..\packages\Microsoft.AspNet.WebApi.Client.5.1.1\lib\net45\System.Net.Http.Formatting.dll - - - ..\..\packages\Microsoft.AspNet.Cors.5.1.1\lib\net45\System.Web.Cors.dll - - - False - ..\..\packages\Microsoft.AspNet.WebApi.Core.5.1.1\lib\net45\System.Web.Http.dll - - - ..\..\packages\Microsoft.AspNet.WebApi.Cors.5.1.1\lib\net45\System.Web.Http.Cors.dll - - - ..\..\packages\Microsoft.AspNet.WebApi.Owin.5.1.1\lib\net45\System.Web.Http.Owin.dll - - - - - - - - - - - - - - - - - - - - - - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - - - - - - - - + + + net7.0 + Exe + Arke.ARI.SimpleConfExample + Arke.ARI.SimpleConfExample + false + Arke.ARI.SimpleConfExample + Arke.ARI.SimpleConfExample + Copyright © 2014 + 1.0.0.0 + 1.0.0.0 + + + + + + + + + + + + 5.2.9 + + + + + 4.3.4 + + + + + + \ No newline at end of file diff --git a/Samples/SimpleConfExample/packages.config b/Samples/SimpleConfExample/packages.config deleted file mode 100644 index daae64f..0000000 --- a/Samples/SimpleConfExample/packages.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Samples/SimpleRecordAndPlayback/App.config b/Samples/SimpleRecordAndPlayback/App.config index 8e15646..4bfa005 100644 --- a/Samples/SimpleRecordAndPlayback/App.config +++ b/Samples/SimpleRecordAndPlayback/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/Samples/SimpleRecordAndPlayback/Program.cs b/Samples/SimpleRecordAndPlayback/Program.cs index 5f7cb1c..c7a049d 100644 --- a/Samples/SimpleRecordAndPlayback/Program.cs +++ b/Samples/SimpleRecordAndPlayback/Program.cs @@ -1,8 +1,8 @@ /* - * RecordPlayback AsterNET.ARI Audio Sample + * RecordPlayback Arke.ARI Audio Sample * Copyright Ben Merrills (ben at mersontech co uk), all rights reserved. - * https://asternetari.codeplex.com/ - * https://asternetari.codeplex.com/license + * https://Arkeari.codeplex.com/ + * https://Arkeari.codeplex.com/license * * No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, * including without limitation any implied warranties of condition, uninterrupted use, merchantability, @@ -14,8 +14,8 @@ * same => n,hangup() */ -using AsterNET.ARI; -using AsterNET.ARI.Models; +using Arke.ARI; +using Arke.ARI.Models; using System; namespace Sample_RecordAndPlayback @@ -98,7 +98,7 @@ static void PlaybackRecording(Channel c) var repeat = actionClient.Channels.Play(c.Id, "recording:temp-recording", "en", 0, 0, Guid.NewGuid().ToString()).Id; } - static void ActionClientOnRecordingFinishedEvent(object sender, AsterNET.ARI.Models.RecordingFinishedEvent e) + static void ActionClientOnRecordingFinishedEvent(object sender, Arke.ARI.Models.RecordingFinishedEvent e) { if (e.Recording.Name != recording.Recording.Name) return; @@ -107,7 +107,7 @@ static void ActionClientOnRecordingFinishedEvent(object sender, AsterNET.ARI.Mod GetRecording(recording.Channel); } - static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent e) + static void c_OnStasisEndEvent(object sender, Arke.ARI.Models.StasisEndEvent e) { // Delete recording actionClient.Recordings.DeleteStored("temp-recording"); @@ -116,7 +116,7 @@ static void c_OnStasisEndEvent(object sender, AsterNET.ARI.Models.StasisEndEvent actionClient.Channels.Hangup(e.Channel.Id, "normal"); } - static void c_OnStasisStartEvent(object sender, AsterNET.ARI.Models.StasisStartEvent e) + static void c_OnStasisStartEvent(object sender, Arke.ARI.Models.StasisStartEvent e) { // answer channel actionClient.Channels.Answer(e.Channel.Id); diff --git a/Samples/SimpleRecordAndPlayback/Properties/AssemblyInfo.cs b/Samples/SimpleRecordAndPlayback/Properties/AssemblyInfo.cs index 6767fc3..4645591 100644 --- a/Samples/SimpleRecordAndPlayback/Properties/AssemblyInfo.cs +++ b/Samples/SimpleRecordAndPlayback/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Sample-RecordAndPlayback")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Sample-RecordAndPlayback")] -[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("2b552385-2005-4ed6-ad87-7e24d29b5a53")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Samples/SimpleRecordAndPlayback/SimpleRecordAndPlayback.csproj b/Samples/SimpleRecordAndPlayback/SimpleRecordAndPlayback.csproj index a0deb99..61bd5f1 100644 --- a/Samples/SimpleRecordAndPlayback/SimpleRecordAndPlayback.csproj +++ b/Samples/SimpleRecordAndPlayback/SimpleRecordAndPlayback.csproj @@ -1,64 +1,21 @@ - - - + - Debug - AnyCPU - {F8C2150F-7D48-4E30-AE9A-E2354E5A536D} + net6.0 Exe - Properties Sample_RecordAndPlayback Sample-RecordAndPlayback - v4.5 - 512 + false + Sample-RecordAndPlayback + Sample-RecordAndPlayback + Copyright © 2014 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + + - - \ No newline at end of file diff --git a/Samples/SimpleTestApplication/App.config b/Samples/SimpleTestApplication/App.config index 8e15646..4bfa005 100644 --- a/Samples/SimpleTestApplication/App.config +++ b/Samples/SimpleTestApplication/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/Samples/SimpleTestApplication/Program.cs b/Samples/SimpleTestApplication/Program.cs index 4d6eead..6adf554 100644 --- a/Samples/SimpleTestApplication/Program.cs +++ b/Samples/SimpleTestApplication/Program.cs @@ -1,7 +1,7 @@ using System; -using AsterNET.ARI.Models; +using Arke.ARI.Models; -namespace AsterNET.ARI.TestApplication +namespace Arke.ARI.TestApplication { internal class Program { diff --git a/Samples/SimpleTestApplication/Properties/AssemblyInfo.cs b/Samples/SimpleTestApplication/Properties/AssemblyInfo.cs index 4b6ebde..0296fd9 100644 --- a/Samples/SimpleTestApplication/Properties/AssemblyInfo.cs +++ b/Samples/SimpleTestApplication/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AsterNET.ARI.TestApplication")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("AsterNET.ARI.TestApplication")] -[assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("1f8036ff-053e-4305-8826-a74bafec5004")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Samples/SimpleTestApplication/SimpleTestApplication.csproj b/Samples/SimpleTestApplication/SimpleTestApplication.csproj index fc00750..9cda297 100644 --- a/Samples/SimpleTestApplication/SimpleTestApplication.csproj +++ b/Samples/SimpleTestApplication/SimpleTestApplication.csproj @@ -1,75 +1,30 @@ - - - + - Debug - AnyCPU - {1DD784F3-809C-465E-9F3B-8575705A5C6C} + net7.0 Exe - Properties - AsterNET.ARI.TestApplication - AsterNET.ARI.TestApplication - v4.5 - 512 + Arke.ARI.TestApplication + Arke.ARI.TestApplication + false + Arke.ARI.TestApplication + Arke.ARI.TestApplication + Copyright © 2014 + 1.0.0.0 + 1.0.0.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\packages\SuperSocket.ClientEngine.Core.0.8.0.8\lib\net45\SuperSocket.ClientEngine.dll - - - - - - - - - - - ..\..\packages\WebSocket4Net.0.15.0-beta6\lib\net45\WebSocket4Net.dll - - - - - - - - + - + + + 0.10.0 + + + + 0.15.2 + - - {f4c8c633-2207-4c25-89a8-4d23d9cfa964} - AsterNET.ARI - + - - \ No newline at end of file diff --git a/Samples/SimpleTestApplication/packages.config b/Samples/SimpleTestApplication/packages.config deleted file mode 100644 index bd1a736..0000000 --- a/Samples/SimpleTestApplication/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 6d3ee9f..6df0ff7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,11 @@ +07.19.2023 seiggy + Fixing case issue with RestSharp v107 +06.23.2023 seiggy + Migrating project fully to .NET Standard 2.0 as Microsoft no longer supports .NET Framework 4.5 + Refactoring all classes to be virtualized in order to support better unit testing practices + Upgraded all packages to latest versions + Upgraded ARI to Asterisk 20 + 05.12.2014 Skrusty Added support for auto reconnecting to asterisk in the event of unexpected disconnection (Socket Exception) or asterisk closing our connection Added event for connection state changed on ARIClient @@ -18,7 +26,7 @@ 27.05.2014 Skrusty New Rebuilt class structure from CodeGen with 12.3.0-rc1 swagger definitions - Updated Class layout for ARIClient, ARIClient is now root class for AsterNET.ARI structure + Updated Class layout for ARIClient, ARIClient is now root class for Arke.ARI structure and now takes an instance of StasisEndpoint for connection details only Updated ARIClient now contains properties for each ARI Rest Endpoint (Channels, Bridges etc) Updated SimpleConf updated for new class layout @@ -43,7 +51,7 @@ 04.02.2014 Skrusty Added Sample-RecordAndPlayback example to demonstrate recoding and playback on ARI Added Simple caller mute to bridge sample (3 to mute, 4 to unmute all channels) - Added New SimpleConf samples project. This is a rough implementation of a conference system written in AsterNET.ARI. There is currently + Added New SimpleConf samples project. This is a rough implementation of a conference system written in Arke.ARI. There is currently very little error checking and is only for demonstration and testing purposes. However please feel free to add to it and point out any silly errors or mistakes. @@ -60,6 +68,6 @@ 01.02.2014 Skrusty Added Changelog - Added AsterNET.ARI classlib now contains the output of CodeGen - Added New example to AsterNET.ARI.TestApplication, based on the example for ari-py (https://github.com/asterisk/ari-py/blob/master/examples/example.py) - Added Started samples to show how to use AsterNET.ARI in real-world examples (yet to add anything of interest) + Added Arke.ARI classlib now contains the output of CodeGen + Added New example to Arke.ARI.TestApplication, based on the example for ari-py (https://github.com/asterisk/ari-py/blob/master/examples/example.py) + Added Started samples to show how to use Arke.ARI in real-world examples (yet to add anything of interest) diff --git a/packages/repositories.config b/packages/repositories.config deleted file mode 100644 index 57a3e11..0000000 --- a/packages/repositories.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file