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

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 06:42
youran
Например, разговаривает абонент с абонентом , но тут вдруг звонит начальник
Необходимо одному из абонентов или обеим сказать фразу типа "Ваш разговоров будет прерван и бла бла"

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 11:41
awsswa
писать парсер на php
увидать что звонит босс
увидать кому
узнать ID канала
вклинится в разговор
обрубить
соединить босса и менеджера

написать заявление на увольнение и послать руководство с такими задания нахер
потому что если руководство хочет обрубать не глядя разговор, оно однозначно адекватностью не страдает

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 12:06
Wapo
Почитайте тут: https://wapo-spb.livejournal.com/7753.html - может наведет на мысли.

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 12:10
ded
youran, IMHO - фигнёй страдаете.
Нормальная работа ИП-телефона предполагает многоканальность и приём второго звонка. Во время разговора слышно ту-ту - признак второго звонка. Смотрим на экран ИП-телефона - видно кто звонит, и успеваем проговорить абоненту - "Всё, пока, мне начальник звонит, я позже тебе перезвоню..." и спокойно принять вызов начальника.
awsswa писал(а):Написать заявление на увольнение и послать руководство с такими задания нахер
потому что если руководство хочет обрубать не глядя разговор, оно однозначно адекватностью не страдает
+++++

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 12:39
youran
Всем спасибо разобрался.
Если кому интересно могу описать алгоритм

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 19 дек 2018, 12:42
awsswa
не нужно писать
пускай мучаются

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 20 дек 2018, 08:17
virus_net
+1
Ведь "всем спасибо, все свободны" довольно точное описание как это работает.

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 20 дек 2018, 09:38
youran
1000 номер экстена к кому при условии необходимо вклиниться

Код: выделить все
exten => 1000,1,Answer() отвечаем на вызов
exten => 1000,2,Set(foo=${DEVICE_STATE(SIP/${EXTEN})}) в переменную foo записываем стутс экстена 1000
exten => 1000,3,GotoIf($[${foo} == NOT_INUSE]?yes:no) если не занят(не используется) идем на метку yes, если в разговоре идем на метку no
exten => 1000,4(yes),Set(GLOBAL(chan)=${CHANNEL}) в глобальную chan переменную записываем канал
exten => 1000,5(yes),Set(GLOBAL(num)=${CALLERID(num)}) в глобальную переменную записываем номер звонящего
exten => 1000,6(yes),Dial(SIP/1000,120) звоним на экстен
exten => 1000,7(no),GotoIf($[${CALLERID(num)} == XXXXXXXXXX]?1000,8:1000,11) смотрим если номер звонящего равен XXXXXXXXXX идем на 8 строку, если нет то на 11 строку
exten => 1000,8(no),AGI(N.pl,${num}) обрабатываем (листинг ниже)
exten => 1000,9(no),Wait(4) ждем 4 секунды пока проиграется файл (можно в скрипте поставить sleep() предварительно узнав длительность файла в секундах)
exten => 1000,10(no),System("asterisk -rvx 'channel request hangup ${chan}'"); отбиваем канала ID которого ранее записывали в глобальную переменную chan
exten => 1000,11(no),Dial(SIP/1000,120) звоним на экстен


Листинг контекста [N]
Код: выделить все
[N]
exten => 100,1,Answer()
exten => 100,n,Playback(/etc/asterisk/sound/calldrop)
exten => 100,n,Hangup()

exten => 101,1,Answer()
exten => 101,n,Playback(/etc/asterisk/sound/calldrop)
exten => 101,n,Hangup()

exten => 200,1,ChanSpy(SIP/1000,qw)

exten => 300,1,ChanSpy(${ch},qw)


Листинг N.pl
Код: выделить все
#!/usr/bin/perl

use File::Copy;

my $ch = $ARGV[0];

open S, "> /tmp/1000";
print S "Channel: Local/100\@N\n";
print S "CallerID: <37230>\n";
print S "MaxRetries: 2\n";
print S "RetryTime: 6\n";
print S "WaitTime: 60\n";
print S "Context: N\n";
print S "Extension: 200\n";
print S "Priority: 1\n";
close S;

move("/tmp/1000","/var/spool/asterisk/outgoing/1000");


open S, "> /tmp/num";
print S "Channel: Local/101\@N\n";
print S "CallerID: <37230>\n";
print S "MaxRetries: 2\n";
print S "RetryTime: 6\n";
print S "WaitTime: 60\n";
print S "Context: N\n";
print S "Extension: 300\n";
print S "Priority: 1\n";
print S "Set: ch=$ch";
close S;

move("/tmp/num","/var/spool/asterisk/outgoing/num");

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 20 дек 2018, 09:43
youran
ded писал(а):youran, IMHO - фигнёй страдаете.
Нормальная работа ИП-телефона предполагает многоканальность и приём второго звонка. Во время разговора слышно ту-ту - признак второго звонка. Смотрим на экран ИП-телефона - видно кто звонит, и успеваем проговорить абоненту - "Всё, пока, мне начальник звонит, я позже тебе перезвоню..." и спокойно принять вызов начальника.
awsswa писал(а):Написать заявление на увольнение и послать руководство с такими задания нахер
потому что если руководство хочет обрубать не глядя разговор, оно однозначно адекватностью не страдает
+++++

Можно пойти по этому пути, но зарплата и уровень руководителя не позволяет мне так поступить

Re: Проигрывание файла в выбраный канал

СообщениеДобавлено: 20 дек 2018, 12:12
awsswa
Технически сделано почти безупречно. Хоть это радует.