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

выдача предупреждений о записи разговоров

Добавлено: 27 июн 2013, 10:27
Bezlikiy
Задача: при любом звонке требуется настроить выдачу предупреждения о записи разговора голосовым сообщением либо тоновым сигналом. На тестовой системе вроде работает.
Вопрос: есть-ли у данного решения критические недостатки, или может существует более оптимальный способ решения задачи?

sip.conf:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[general]
;*******************
register=UserID:Password@sipnet.ru/1234
;*******************

;Номера телефонов
[100] ; первый номер
type=friend
host=dynamic
username=100
secret=NumberPass
dtmfmode=rfc2833
canreinvite=no
context=office
callerid="User1" <100>
allow=ulaw
allow=alaw

[101] ; второй номер
type=friend
host=dynamic
username=101
secret=NumberPass
dtmfmode=rfc2833
canreinvite=no
context=office
callerid="User2" <101>
allow=ulaw
allow=alaw

[sipnet]
type=peer
username=UserID
secret=Password
callerid=sipnet
host=sipnet.ru
nat=no
fromuser=sipnet
fromdomain=sipnet.ru
dtmfmode=rfc2833
insecure=invite
context=sipnet-in
allow=ulaw:30
allow=alaw:30
extensions.conf:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
;контексты:

;контекст внутренних/исходящих
[office]
exten => 100,1,Macro(dialtone,SIP/100)
exten => 101,1,Macro(dialtone,SIP/101)
;исходящий звонок с добавочным номером 98 через транк sipnet
exten => _98XXXXXXXXXX,1,Macro(dialtone,SIP/sipnet/${EXTEN:2})

;контекст транка
[sipnet-in]
exten => 1234,1,Set(CALLERID(name)="Sipnet call")
exten => 1234,n,Playback(WarningRecord)
exten => 1234,n,Dial(SIP/101,,m)
exten => 1234,n,Hangup()

;макросы:

;звонок на номер с выводом тонового предупреждения в обе стороны
[macro-dialtone]
exten => s,1,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => s,n,Set(LIMIT_PLAYAUDIO_CALLEE=yes)
exten => s,n,Set(LIMIT_WARNING_FILE=ToneSignal)
exten => s,n,Set(MaxSpeakTime=$[3*60*60000])
exten => s,n,Dial(${ARG1},,L(${MaxSpeakTime}:$[${MaxSpeakTime}-15000]:15000)m)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()

;исходящий звонок с голосовым предупреждением
[macro-outwarning]
exten => s,1,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => s,n,Set(LIMIT_PLAYAUDIO_CALLEE=yes)
exten => s,n,Set(LIMIT_CONNECT_FILE=WarningRecord)
exten => s,n,Dial(${ARG1},,L($[3*60*60000])m)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()

Re: выдача предупреждений о записи разговоров

Добавлено: 27 июн 2013, 10:33
Aven
Теперь будете про каждый банальных чих тут спрашивать?

Re: выдача предупреждений о записи разговоров

Добавлено: 27 июн 2013, 10:42
Bezlikiy
Попрошу отвечать по теме

Re: выдача предупреждений о записи разговоров

Добавлено: 27 июн 2013, 11:30
zzuz
Работать будет , недостатков нет.

Re: выдача предупреждений о записи разговоров

Добавлено: 15 авг 2013, 11:05
Bezlikiy
Попробовал реализовать через конференции, вроде работает но как-то нестабильно. Появляются сообщения:
NOTICE[4944]: pbx_spool.c:402 attempt_thread: Call completed to local/play@background-music
и когда конференция сама зарывается, то на вызове MeetMeAdmin:
WARNING[5189][C-00000002]: app_meetme.c:5001 admin_exec: Conference number '100' not found!
Есть-ли способ узнать что конференция существует, чтоб избавиться от WARNING ?
В коде наверняка "ляпы" закрались, возможно надо что-то поправить или есть более простые способы организовать на базе asterisk разговор под музыку?

extensions.conf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[globals]
BACKGROUND_CONF=SIP

;*************

;контекст внутренних номеров
[office]
exten => 100,1,Macro(confer,SIP/100)
exten => 101,1,Macro(confer,SIP/101)

;макросы:

[macro-confer]
exten => s,1,Set(__ROOM_BG=${CALLERID(num)})
exten => s,2,Dial(${ARG1},,G(,s,3))
exten => s,3,Macro(addroom,1,${ROOM_BG}) ;вызывающий (звонящий)
exten => s,4,Macro(addroom,2,${ROOM_BG}) ;вызываемый (отвечающий)
exten => h,1,NoOp("Закрываю конференцию ${ROOM_BG}")
exten => h,n,MeetMeAdmin(${ROOM_BG},K)
exten => h,n,Hangup()

[macro-addroom]
exten => s,1,Set(ROOM_BG=${ARG2})
exten => s,n,GotoIf($[${ARG1} = 1]?jump) ; если звонящий, то присоединить к каналу с маркером
exten => s,n,MeetMe(${ROOM_BG},1dqMx)
exten => s,n,Hangup()
exten => s,n(jump),Macro(createcall,${ROOM_BG})
exten => s,n,MeetMe(${ROOM_BG},A1dqMx) ; закрыть конференцию, когда отмеченный номер отключится
exten => s,n,NoOp("macro-addroom: выход")
exten => s,n,Hangup()

[macro-createcall]
exten => s,1,NoOp("Создаю call-файл, передача № конференции")
exten => s,n,Set(GLOBAL(BACKGROUND_CONF)=${ARG1})
exten => s,n,AGI(call.agi)

[background-conf]
exten => 789,1,NoOp("Получение № конф-и")
exten => 789,n,MeetMe(${BACKGROUND_CONF},1dqMx)
exten => 789,n,Hangup
exten => h,1,NoOp("Канал с музыкой: выход")

[background-music]
exten => play,1,NoOp("Запуск фоновой музыки")
exten => play,n(jump),Background(MySound)
exten => play,n,Goto(jump)
call.agi
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
идея реализации скрипта по материалам статьи:
http://korolom.blogspot.ru/2011/07/asterisk-call.html

Права доступа:
chown asterisk:asterisk /var/lib/asterisk/agi-bin/call.agi
chmod 755 /var/lib/asterisk/agi-bin/call.agi

скрипт:

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

#!/usr/bin/perl
$myfile = "/tmp/name549.call";
open (FILE, ">$myfile");
print FILE "Channel: local/play\@background-music\n";
print FILE "CallerID: 9999\n";
print FILE "WaitTime: 10\n";
print FILE "Context: background-conf\n";
print FILE "Extension: 789\n";
print FILE "Priority: 1\n";
close (FILE);
system ("mv /tmp/name549.call /var/spool/asterisk/outgoing");

Re: выдача предупреждений о записи разговоров

Добавлено: 15 авг 2013, 11:16
virus_net
Bezlikiy писал(а):Попробовал реализовать через конференции
а можно спросить зачем ?
чем обычный Playback тебя не устроил ?

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

[office]
exten => 100,1,Answer()
exten => 100,n,Playback(MySound)
exten => 100,n,Dial(SIP/100)

Re: выдача предупреждений о записи разговоров

Добавлено: 15 авг 2013, 11:27
Vlad1983
через ChanSpy вклиниваться и проговоривать что угодно и когда угодно

Re: выдача предупреждений о записи разговоров

Добавлено: 15 авг 2013, 11:34
Bezlikiy
virus_net писал(а):
Bezlikiy писал(а):Попробовал реализовать через конференции
а можно спросить зачем ?
чем обычный Playback тебя не устроил ?
Предупреждение о записи разговора - это тоновый сигнал по ГОСТ 28384-89, потому и приходится циклически выдавать предупреждение параллельно с разговором.

Re: выдача предупреждений о записи разговоров

Добавлено: 16 авг 2013, 09:56
virus_net
Bezlikiy писал(а):отому и приходится циклически выдавать предупреждение параллельно с разговором.

Значит предложение от Vlad1983 как раз для твоей задачи.