Skip to content
staskobzarPublic

About

Elixir FastAGI library

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

Repository files navigation

Fastagi

Elixir CI Coverage Status GPLv3 license

Elixir FastAGI library to build FastAGI servers and process Asterisk calls.

Installation

The package can be installed by adding fastagi to your list of dependencies in mix.exs:

def deps do
  [
    {:fastagi, "~> 0.1.0"}
  ]
end

Fastagi.Session commands documentation.

Usage

Module to Fasagi processes each AGI connection with "handle_connection" callback withing a module that uses Fastagi. Module example:

defmodule MyAGI do
  require Logger
  use Fastagi

  def handle_connection(sess) do
    IO.puts("========================================")
    IO.inspect(sess)

    with {:ok, _} <- Fastagi.Session.answer(sess),
         {:ok, _} <- Fastagi.Session.verbose(sess, "Hello there from exFastagi"),
         {:ok, resp} <- Fastagi.Session.get_variable(sess, "VARFOO"),
         :ok <- Logger.info("VARFOO = #{resp.value}"),
         {:ok, _} = Fastagi.Session.hangup(sess) do
      IO.puts("=================================================")
      IO.puts("| session is done")
      IO.puts("=================================================")
    else
      :hangup -> Logger.warn("Session channel was hangup by Asterisk")
      {:error, err} -> Logger.error("Session error: #{err}")
    end

    Fastagi.Session.close(sess)
  end
end

Starting Fastagi.Server can be done directly via "start_link" function that receives port and module name as arguments. Can also be used in application. For example:

defmodule MyMAGI.App do
  use Application

  @impl true
  def start(_type, _args) do
    children = [
      Supervisor.child_spec({Task, fn -> Fastagi.Server.start_link(4575, MyAGI) end},
        restart: :permanent
      )
    ]

    Supervisor.start_link(children, strategy: :one_for_one)
  end
end

About

Elixir FastAGI library

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages