ryzhov/asterisk-bundle

AsteriskBundle for symfony framework

安装: 155

依赖者: 1

建议者: 0

安全性: 0

星标: 3

关注者: 2

分支: 3

开放问题: 0

类型:symfony-bundle

v1.0 2017-02-11 19:33 UTC

This package is not auto-updated.

Last update: 2024-09-15 02:09:21 UTC


README

AsteriskBundle 提供了将 Asterisk PAMI 库集成到 Symfony2 框架中的功能。

许可协议

此包采用 MIT 许可协议 发布。

安装

使用 composer 需要安装此包及其依赖项

$ composer require ryzhov/asterisk-bundle

注册包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        new Ryzhov\Bundle\AsteriskBundle(),
    );
}

用法

在配置文件中添加 asterisk 部分

asterisk:
    connections:
        default:
            host: "%asterisk_host%"
            port: "%asterisk_ami_port%"
            username: "%asterisk_ami_username%"
            secret: "%asterisk_ami_secret%"
            connect_timeout: 5
            read_timeout: 5

    clients:
        main:
            connection: default
            logger_channel: ami

在此,我们配置了连接参数和我们的应用程序将拥有的 AMI 客户端。在此示例中,您的服务容器将包含服务 asterisk.main_clientasterisk.ami_connection.default 连接参数。AMI 客户端服务接口参考Asterisk PAMI

使用标签 asterisk.ami_event_handler 注册异步事件处理器,它将只处理指定的事件。

parameters:
    events: 
        - "PAMI\\Message\\Event\\DeviceStateChangeEvent"
        - "PAMI\\Message\\Event\\PeerStatusEvent"

services:
    service.event_handler:
        class: AppBundle\Service\EventHandler
        calls:
            - [setLogger, ["@logger"]]
        tags:
            - { name: monolog.logger, channel: event }
            - { name: asterisk.ami_event_handler, client: asterisk.main_client, events: "%events%" }

事件处理器示例

namespace AppBundle\Service;

use PAMI\Listener\IEventListener;
use PAMI\Message\Event\EventMessage;

class EventHandler implements IEventListener
{
    . . .

    public function handle(EventMessage $event)
    {
        $this->logger->debug(sprintf('class: "%s" handle', get_class($event)));
    }
}

这是代码示例 ryzhov/example-asterisk-ami

$ composer create-project ryzhov/example-asterisk-ami
-- configure ami socket parameters here --
asterisk_host (localhost): 127.0.0.1
asterisk_ami_port (5038): 
asterisk_ami_username (ami):
asterisk_ami_secret (pass4ami):
--

$ cd example-asterisk-ami
$ php bin/console event-handler