VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
Bezlikiy
Сообщения: 5
Зарегистрирован: 27 июн 2013, 09:43

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

Сообщение 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()
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

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

Сообщение Aven »

Теперь будете про каждый банальных чих тут спрашивать?
Решения телефонии на базе Asterisk || http://it-need.ru
Bezlikiy
Сообщения: 5
Зарегистрирован: 27 июн 2013, 09:43

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

Сообщение Bezlikiy »

Попрошу отвечать по теме
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

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

Сообщение zzuz »

Работать будет , недостатков нет.
Линия24 - Системы Массового Телефонного Обслуживания
Bezlikiy
Сообщения: 5
Зарегистрирован: 27 июн 2013, 09:43

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

Сообщение 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");
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение virus_net »

Bezlikiy писал(а):Попробовал реализовать через конференции
а можно спросить зачем ?
чем обычный Playback тебя не устроил ?

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

[office]
exten => 100,1,Answer()
exten => 100,n,Playback(MySound)
exten => 100,n,Dial(SIP/100)
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Vlad1983 »

через ChanSpy вклиниваться и проговоривать что угодно и когда угодно
ЛС: @rostel
Bezlikiy
Сообщения: 5
Зарегистрирован: 27 июн 2013, 09:43

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

Сообщение Bezlikiy »

virus_net писал(а):
Bezlikiy писал(а):Попробовал реализовать через конференции
а можно спросить зачем ?
чем обычный Playback тебя не устроил ?
Предупреждение о записи разговора - это тоновый сигнал по ГОСТ 28384-89, потому и приходится циклически выдавать предупреждение параллельно с разговором.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

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

Сообщение virus_net »

Bezlikiy писал(а):отому и приходится циклически выдавать предупреждение параллельно с разговором.

Значит предложение от Vlad1983 как раз для твоей задачи.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH