opensoft/asterbunny

This tool sends json encoded asterisk ami events to RabbitMQ

dev-master 2012-10-24 20:28 UTC

This package is auto-updated.

Last update: 2024-03-27 06:05:07 UTC


README

Simple PHP based CLI tool to publish Asterisk AMI events to a Rabbit Message Queue

PHP Versions

Note: PAMI Requires PHP 5.3+. PHP versions 5.3.9 and 5.3.10 WILL NOT WORK due to a bug introduced in stream_get_line() in 5.3.9. Please use 5.3.11+ or up to 5.3.8 (see README.PHP-5.3.9-and-5.3.10).

Install

Clone the repo:

git clone https://github.com/opensoft/AsterBunny.git

Now install dependencies with composer

curl http://getcomposer.org/installer | php
php composer.phar install

Usage

The CLI tool is located at bin/asterbunny and has a lot of configuration options relating to specifying hostnames, ports, usernames, and passwords for Asterisk connections and RabbitMQ servers.

It's recommended to run the following to learn the configuration set, and defaults

./bin/asterbunny listen --help

Message Sending

All asterisk events emitted by the Asterisk AMI interface are encoded as JSON and then sent to a configured RabbitMQ server.

Specifically, http://www.voip-info.org/wiki/view/asterisk+manager+events are:

  1. Keys are converted to lowercase
  2. The message is converted to JSON

And then submitted to the configured exchange with the fanout exchange type

Example

{
    "event": "Agentlogoff",
    "agent": "<agent>",
    "logintime": "<logintime>",
    "uniqueid": "<uniqueid>"
}

Message headers are as follows:

  • timestamp => The unix timestamp of when the event occured as seen by AsterBunny
  • content_type => application\json
  • delivery_mode => 2 - Indicates that the message should be persisted by RabbitMQ

Logging

A default log4php configuration file is included with this tool.

$ cp log4php.dist.xml log4php.xml

Configure logging by editing the file according to instructions found here

Requirements

  • PHP 5.3
  • RabbitMQ
  • Asterisk AMI

License

AsterBunny is licensed under the MIT License - see the LICENSE file for details

Acknowledgments