Coder Social home page Coder Social logo

nrjchnd / arke Goto Github PK

View Code? Open in Web Editor NEW

This project forked from quasarke/arke

0.0 1.0 0.0 580 KB

Arke is a .NET IVR for the Asterisk ARI system build on .NET Core and AsterNET.ARI

License: MIT License

C# 97.82% Dockerfile 1.68% Shell 0.50%

arke's Introduction

Arke for Asterisk ARI

Arke is an IVR written using .NET Core 2.0 for Asterisk using the ARI interface through AsterNET.ARI. It is built to be extensible and with easily modifiable call flows. It's cross platform, supporting Linux, Raspberry Pi, and Windows.

Find the developers

Join the chat at https://gitter.im/arkeivr/Lobby

Build Status

.NET Core

Setup

  • Clone the repo and run dotnet restore then dotnet build
  • Setup the appsettings.json:
    • Set your asterisk host IP
    • Set the username and password for your Asterisk ARI Setup
    • Set the AsteriskAppName to the stasis app name you are using in your dialplan (sample dialplan below)
    • Set your application to the name of the json file you wish to use for your call flow (you can copy arte.json for a starting point)
    • Set the Plugin Directory to the location you are going to copy all your plugins.
  • Setup extensions.conf on your asterisk server (sample):
    [from-internal]
    exten => 6000,1,NoOp()
    same => n,Stasis(arke)
    same => n,Hangup()
    
  • Finally run dotnet run --project Arke.ServiceHost

Dependencies

  • AsterNET.ARI 1.3+
  • .NET Core 3.1
  • SimpleInjector 4
  • Serilog 3

Extending and creating plugins for Arke

  • Create a .NET Core Library with the namespace Arke.*
    • This allows Arke to auto-discover your Plugin without having to add the dependency
  • Add references to the Arke.DSL and Arke.SipEngine projects or dlls.
  • Settings should inherit the Arke.DSL.Step.Settings.ISettings interface
  • Steps should inherit the Arke.SipEngine.Processors.IStepProcessor interface
  • Compile and copy your new binary to the plugin directory (or use Visual Studio post-build scripts to do so for you)

Features

  • Playback sound files
  • Get input with timeouts and fail / success steps
  • DSL for building a call flow using JSON
  • Extensible DSL for building and extending new steps into the system
  • Plugin system for dynamically loading new steps at runtime
  • Step Settings API for extending steps with extra settings in the DSL
  • Async/Await Task based call processing for efficient mutli-threading and performance
  • Stateless State Machine for call controls and validating step transitions
  • Extensible Call State for holding data important to a call - can be used to build a custom CDR system
  • Tested on Windows, Linux and Docker on both platforms.

Known Issues

  • Need to document how to setup outbound calls.
  • No Steps for Voicemail and a few other basic IVR functions yet

Planned Future Features

  • More base steps to be included:
    • Voicemail
    • Call Transfer
  • Play audio from web service
  • Voice Conferencing creation and management
  • Better outbound dialing support

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.