Страница 1 из 2

ОТОБРАТЬ разговор

Добавлено: 19 апр 2012, 12:26
Wapo
Может кому пригодится: http://wapo-spb.livejournal.com/7753.html

Re: ОТОБРАТЬ разговор

Добавлено: 20 апр 2012, 08:02
Obi Van
Большое спасибо! 8-)

Re: ОТОБРАТЬ разговор

Добавлено: 20 апр 2012, 12:22
SVoy
а если просто "решетку"201 (Перевод) в канал менеджера вкинуть? ;)

Re: ОТОБРАТЬ разговор

Добавлено: 19 июн 2015, 09:33
bartholo1984
Кто-нибудь пробовал реализовать? может есть еще примеры?

Re: ОТОБРАТЬ разговор

Добавлено: 19 июн 2015, 11:17
zzuz
Что то не получается?

Re: ОТОБРАТЬ разговор

Добавлено: 18 авг 2015, 16:10
bartholo1984
Вот так выгляди мой скрипт по отбору звонка:

Код: Выделить всё

#!/usr/bin/php -q
<?php

$par=$argv[1];
list($abonent,$chan_dist)= split (":",$par);
$asm = new AGI_AsteriskManager();

if($asm->connect())  {
        $call = $asm->Command('core show channels');
        $poz1=strpos($call['data'],"SIP/".$abonent."-");
        $poz2=strpos($call['data'],' ',$poz1);
        $chan=substr($call['data'],$poz1,($poz2-$poz1));
        $call=$asm->Command('core show channel '.$chan);
        $poz1=strpos($call['data'],"Direct Bridge: ");
        $poz2=strpos($call['data'],"\n" ,$poz1);
        $chan=substr($call['data'],($poz1+15),($poz2-($poz1+15)));
        $call=$asm->send_request('Redirect',array('Channel'=>"$chan",'Exten'=>"305",'Context' => "incoming",'Priority' => 1));
        };

$asm->disconnect();
?>
он отрабатывается но звонок не отбирает, может подскажите, как и куда копать дальше, где искать проблему?

Re: ОТОБРАТЬ разговор

Добавлено: 18 авг 2015, 16:22
Wapo
Есть 2 способа:

1. Команда Redirect - перекинуть активный канал в некое место диалплана. Соответственно там надо выполнять какие-либо действия.

2. А вот теперь изучите команду Bridge - может именно ЭТОГО вам хочется?

Разные режимы отбора - 1. с уведомлением 2. без уведомления.

Ну и не мешает в CLI наблюдать за происходящем - тогда бы поймали ЗАНЯТОСТЬ

Re: ОТОБРАТЬ разговор

Добавлено: 18 авг 2015, 16:27
ded
Во freePBX есть для этого Barge ZAP channel.
Никогда не пользовался.

Re: ОТОБРАТЬ разговор

Добавлено: 18 авг 2015, 17:32
bartholo1984
Wapo писал(а):Есть 2 способа:

1. Команда Redirect - перекинуть активный канал в некое место диалплана. Соответственно там надо выполнять какие-либо действия.

2. А вот теперь изучите команду Bridge - может именно ЭТОГО вам хочется?

Разные режимы отбора - 1. с уведомлением 2. без уведомления.

Ну и не мешает в CLI наблюдать за происходящем - тогда бы поймали ЗАНЯТОСТЬ
Не подскажите команду, которой можно активировать подробный вывод событий в cli

у меня сейчас стоит:
core set verbose 9

вот такие события отображаются при запуске отбора звонка

Код: Выделить всё

Executing [66202@incoming:1] AGI("SIP/305-00004c51", "/var/lib/asterisk/agi-bin/info.php,202:SIP/305-00004c51") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/info.php
    -- <SIP/305-00004c51>AGI Script /var/lib/asterisk/agi-bin/info.php completed, returning 0
    -- Executing [66202@incoming:2] Hangup("SIP/305-00004c51", "") in new stack
  == Spawn extension (incoming, 66202, 2) exited non-zero on 'SIP/305-00004c51'

Re: ОТОБРАТЬ разговор

Добавлено: 19 авг 2015, 08:00
virus_net
bartholo1984 писал(а):подскажите команду
боюсь показаться банальным, но:

Код: Выделить всё

CLI> agi set debug on
bartholo1984 писал(а):как и куда копать дальше, где искать проблему
В бездумном копипасте.
bartholo1984 писал(а):$asm = new AGI_AsteriskManager();
И откуда по вашему ваш же скрипт должен узнать что такое AGI_AsteriskManager ?
http://habrahabr.ru/post/155111/