7-zete-7 / audiosocket
Implementation of Asterisk AudioSocket protocol.
v0.1.1
2026-08-13 15:43 UTC
Requires
- php: >=8.4
- symfony/uid: ^8.1.0 || ^7.4.0 || ^6.4.0
Requires (Dev)
- phpunit/phpunit: ^13.3
README
This library provides strong typed implementation of Asterisk's AudioSocket protocol.
Provides ability to encode messages to binary data and decode messages from binary buffer. This library was made for give some level of abstraction to extract messages from AudioSocket's binary stream.
Installation
composer require 7-zete-7/audiosocket
Basic usage
Encoding messages
use Zete7\AudioSocket\BinaryMessageEncoder; use Zete7\AudioSocket\Protocol\AudioFormat use Zete7\AudioSocket\Protocol\AudioMessage use Zete7\AudioSocket\Protocol\DtmfMessage use Zete7\AudioSocket\Protocol\DtmfSignal use Zete7\AudioSocket\Protocol\HangupMessage; $encoder = new BinaryMessageEncoder(); $encoder->encodeMessage(new HangupMessage()); // => "\x00\x00\x00" $encoder->encodeMessage(new DtmfMessage( signal: DtmfSignal::Digit7, )); // => "\x03\x00\x01\x37" $encoder->encodeMessage(new AudioMessage( audioFormat: AudioFormat::Slin, payload: 'foobar', )); // => "\x10\x00\x06foobar"
Decoding messages from binary buffer
use Zete7\AudioSocket\BinaryMessageEncoder; use Zete7\AudioSocket\Protocol\DtmfMessage; use Zete7\AudioSocket\Protocol\UuidMessage; $encoder = new BinaryMessageEncoder(); $buffer = <<<'EOF' AQAQby80FMfKT6aDvqmOAYKHmwMAATADAAExAwABNQ== EOF; while ($message = $encoder->decodeMessage($buffer)) { echo match (true) { $message instanceof UuidMessage => "UUID: {$message->uuid->toString()}\n", $message instanceof DtmfMessage => "DTMF: {$message->signal->value}\n", } } echo "Done\n"; // => UUID: 6f2f3414-c7ca-4fa6-83be-a98e0182879b // => DTMF: 0 // => DTMF: 1 // => DTMF: 5 // => Done