Giter Club home page Giter Club logo

arke's Introduction

Arke for Asterisk ARI

Arke is an IVR written using .NET 5.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 5.0

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 5.0
  • SimpleInjector 5
  • Serilog 4

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

arke's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar payteljosh avatar pow-devops2020 avatar seiggy avatar sgnayak avatar sucrose0413 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

arke's Issues

Null Reference Exceptions At Startup

_configuration at line 33 is never initialized

At line 37 there is a call to InitializeConfigurationFileDependencies which in turn calls GetAppSettingsByHostName() which uses _logger which is not initialized yet (Its being initialized at line 38) which causes a null reference exception

At line 38 you try to initialize _logger by using _configuration which is not yet initialized which causes a null reference exception.

Voice Conferencing Creation and Mangement

Allow creation of a voice conference, and managing a conference system.

Generate a conference line # to join.
Allow entrance of a participant code to control the conference through an API
Allow control of the conference by the conf creator through API or DTMF controls

AsteriskDockerDemo missing configs.tar.gz

I'm interested in this project, and I'm new to Asterisk.

You conveniently have a docker file for an Asterisk instance in AsteriskDockerDemo, but the start.sh references /root/configs.tar.gz. That file isn't in the repository (and it would need to be referenced in a COPY in the docker file). Any chance that could be added?

CORS issues

I'm running arke from a different machine than asterisk ari. when connecting to ari i get the following error
[12167]: res_ari.c:781 process_cors_request: Origin header 'ws://10.0.1.6:8088' does not match an allowed origin.

Any idea how to allow that origin?
I tried enabling cors in the WebApiStartup but i'm still getting that error

Call Transfer Step

Create TransferCallStep that will transfer a call to a different extension / call flow.

Improved outbound dialing

Improve the outbound calling step to take in a SIP trunk or Least Cost Routing service and other options to assist in outbound calling.

I Want to Change CNAME of Caller

HI
I want to Change The Caller CNAME With My PhoneBook In Mine Project Database Because i want to Sho my Customize name on SoftPhones And DeskPhone

Please Help Me , With My knowledge it possible with ARI , I`m Right Or Not?

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.