Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Asterisk - software PBX

Автор: alexsunn
Дата сообщения: 07.10.2013 17:07
kornell
http://habrahabr.ru/post/174637/
Автор: kornell
Дата сообщения: 11.10.2013 14:19
Спасибо, это видел, даже ставил... Но нет записи разговоров и прочего вкусного...
Вопрос собственно в том, может есть какие проверенные платные вещи, которые можно найти на этом форуме...
Автор: Ruza
Дата сообщения: 12.10.2013 19:55
kornell
В Elastix есть интеграция с CRM и запись звонков.
Автор: alexsunn
Дата сообщения: 13.10.2013 16:34
kornell Честно говоря никакие сборки (это мое субьективное мнение) не заменят чистый asterisk.
ps Очень много информации есть в великой сети. Все готовые решения надо дорабатывать под свой вкус.
Автор: Lopata131313
Дата сообщения: 15.11.2013 05:40
[more] Здравствуйте!Помогите пожалуйста разобраться.
Дано:
1)3 IP-телефона CISCO SPA502G
2)один канал SIP от интернет-провайдера
Нужно настроить IP АТС на три телефона для исходящих и входящих звонков , удержание входящих звонков, мелодия для удержания и голосовую почту.
По многочисленным инструкциям удалось настроить внутреннее соединение телефонов в офисе, но это как раз таки не принципиально. Три телефона будут работать на одном транке.
Мой конфиг:
disallow=all
allow=ulaw
context=from-trunk
dtmfmode=auto
fromdomain=сервер сип
fromuser=мой номер/userID
host=сервер сип
insecure=very
secret=мой пароль
type=peer
defaultuser=мой AuthID
canreinvite=no

Регистрация программы прошла успешно\
http://s019.radikal.ru/i602/1311/dc/4210972424f1.jpg

Проверяю связь программой QuteQom.
Таким образом мой сервер зарегистрировал подключение и видит подключенный IP phone при включении программы QuteQom, но звонки всё равно не проходят. каждый раз сообщение о том, что неправильно набран номер. Помогите пожалуйста разобраться. [/more]
Автор: cyberliberty
Дата сообщения: 15.11.2013 09:05
kornell
Поставить asterisk, и отдельно freepbx накати.
Если хочется не особо вдаваться в подробности.
Такая связка умеет все, что тебе надо.

alexsunn
Согласен, но есть один интересный фактор..
Если в офисе нужна телефония - то удобнее поставить астериск и freepbx к нему, например..
Для удовлетворения офисных потребностей более чем достаточно.
Понятное, что в провайдерском уровне такие связки не уместны. Ну, или если ты хочешь изучить астер))
Автор: Kernell32
Дата сообщения: 19.11.2013 07:04
Доброго времени суток всем.
Что есть: P4 2Gb RAM Centos
на нём из исходников установлен Asterisk
чтоб клиенты могли подключаться сделал -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
остальное в iptables не трогал т..к он за шлюзом нах-ся

есть внутренняя связь
купили Ap200D(подключил к внешней линии) - связь есть

сделали SIP запись
ее ё подключаю ч..з sip.conf делаю register=номер:пароль@permngn.usi.ru/номер
делал вот отсюда: http://asterisk-support.ru/question/14049/neofon-u-tel-i-nastroiki-asterisk/

задал там же вопрос но чот ответа не особо слышно

вот sip.conf(по вышестоящей ссылке)
[general]
register=номер:пароль@permngn.usi.ru/номер

[номер]
username=номер
type=user
secret=пароль
quality=yes
fromuser=номер
context=outgoing_calls
canreinvite=no

[utel]
disallow=all
username=номер
type=peer
secret=пароль
quality=yes
nat=yes
insecure=invite,port
host=permngn.usi.ru
fromuser=номер
fromdomain=permngn.usi.ru
dtmfmode=rfc2833
canreinvite=no
allow=alaw
allow=ulaw
context=incoming_calls
______________________________________________________________________

теперь то что у меня:

Extensions.conf

[Outgoing_calls]
exten => _9.,1,Wait(1)
exten => _9.,n,Answer()
exten => _9.,n,Dial(bkp_perm/${EXTEN:1},20)
exten => _9.,n,Hangup()

;если использовать trunc ap200D то чуточку поменяется(на третьем шаге) чтоб вначале ;на него, а потом ч..з bkp_perm

[Ingoing_calls]
exten => bkp_perm,1,Wait(1)
exten => bkp_perm,n,Answer()
exten => bkp_perm,n,Dial(SIP/200,20)
exten => bkp_perm,n,Hangup()

[phones]
include =>Outgoing_calls

exten => 200,1,Wait(1)
exten => 200,n,Answer()
exten => 200,n,Dial(SIP/200,20)
exten => 200,n,Hangup()

_______________________________________________


SIP.conf

[general]
порт=5060
гостям=нет
всегда-проверять_авторизацию=да
слушать_адрес=0.0.0.0
внешний_ip=111.111.111.111
локальная_сеть=192.168.0.0/255.255.255.0
нат=no

register=bkp_perm:пароль@permngn.usi.ru/bkp_perm

[bkp_perm]
username=bkp_perm
type=user
secret=пароль
quality=yes
fromuser=bkp_perm
context=outgoing_calls -?????????
canreinvite=no

[utel]
disallow=all
username=bkp_perm
type=peer
secret=пароль
quality=yes
nat=yes
insecure=invite,port
host=permngn.usi.ru
fromuser=bkp_perm
fromdomain=permngn.usi.ru
dtmfmode=rfc2833
canreinvite=no
allow=alaw
allow=ulaw
context=incoming_calls

[200]
type=friend
user=200
secret=super-puper-secret
callerid=200 <la-la-la>
qualify=yes
nat=no
host=dynamic
canreinvite=no
diallow=all
allow=ualw
allow=alaw
context=phones
_____________________________________________________________________

вот у меня вопрос и возникает:

изначально делаем register в котором при поступлении на него вх. звонка он попадёт на [bkp_perm], у которого тип выставлен user(значит он только может делать вхоядщие) + у него контекст outgoing_calls

далее у вас есть [utel] - не особо понял для чего его использовать т..к звонки можем "прогонять" через [bkp_perm]

у него type выставлен только в исходящие(peers) контекст ingoing_calls

дак вот блин я вообще в этом и запутался

путаница в большей степени в том что тип стоит исхоядщие но в реале outgoing_calls принимает вхоядщие, а ingoing_calls наоборот.
просто напросто если у [bkp_perm] контекст выставить как и положено type а именно

[bkp_perm]
type=user
остальное пропустим
context=incomming_calls
он ведь принимает звонки снаружи

то при приёме входящего на наш номер астериск начинает искать экстеншен не в incoming_calls, а в outgoing_calls вот это у меня в голове и не укладывается

для чего "нужен" [utel], если вход/выход идёт ч..з bkp_perm


sip show registry
он зарегистрирован

sip show peers
200 ну и "остальные" в том числе bkp_perm
присутствуют и отклики прописаны

читал гугл
читал МэдОрилли
читал Ap200
помогите просто понять саму логику, если стоит контекст Ingoing_calls то спрашивается какого банана он ищет в Outgoing_calls
Автор: Lopata131313
Дата сообщения: 20.11.2013 12:13
Помогите пожалуйста разобраться! Я установил Elastix и смог настроить обе линии входящую и исходящую, но только на одном аппарате, хотя у меня в сети два аппарата с номерами 101 и 102. Получается сделать звонок только с одного аппарата одновременно, на другом в этот момент занято.
Суть вопроса в том, что можно ли разветвить мою единственную SIP-линию через Elastix на три IP телефона, чтобы с каждого можно было делать и принимать звонки как если бы у меня было три отдельных SIP-линии и если можно, то как?
Автор: Kernell32
Дата сообщения: 21.11.2013 11:33
Lopata131313
sip.conf
extensions.conf

где ?
Автор: Lopata131313
Дата сообщения: 22.11.2013 11:45
[more] [more]
sip


[more];--------------------------------------------------------------------------------;
; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
; this file must be done via the web gui. There are alternative files to make ;
; custom modifications, details at: http://freepbx.org/configuration_files ;
;--------------------------------------------------------------------------------;
;
; This file is part of FreePBX.
;
; FreePBX is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 2 of the License, or
; (at your option) any later version.
;
; FreePBX is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with FreePBX. If not, see <http://www.gnu.org/licenses/>.
;
; Copyright (C) 2004 Coalescent Systems Inc (Canada)
; Copyright (C) 2006 Why Pay More 4 Less Pty Ltd (Australia)
; Copyright (C) 2007 Astrogen LLC (USA)

[general]

; These files will all be included in the [general] context
;
#include sip_general_additional.conf

;sip_general_custom.conf is the proper file location for placing any sip general
;options that you might need set. For example: enable and force the sip jitterbuffer.
;If these settings are desired they should be set the sip_general_custom.conf file.
;
; jbenable=yes
; jbforce=yes
;
;It is also the proper place to add the lines needed for sip nat'ing when going
;through a firewall. For nat'ing you'd need to add the following lines:
; nat=yes , externip= , localhost= , and optionally fromdomain= .
;
#include sip_general_custom.conf

;sip_nat.conf is here for legacy support reasons and for those that upgrade
;from previous versions. If you have this file with lines in it please make
;sure they are not duplicated in sip_general_custom.conf, if so remove them
;from sip_nat.conf as sip_general_custom.conf will have precedence.
#include sip_nat.conf

;sip_registrations_custom.conf is for any customizations you might need to do to
;the automatically generated registrations that FreePBX makes.
;
#include sip_registrations_custom.conf
#include sip_registrations.conf

; These files should all be expected to come after the [general] context
;
#include sip_custom.conf
#include sip_additional.conf

;sip_custom_post.conf If you have extra parameters that are needed for a
;extension to work to for example, those go here. So you have extension
;1000 defined in your system you start by creating a line [1000](+) in this
;file. Then on the next line add the extra parameter that is needed.
;When the sip.conf is loaded it will append your additions to the end of
;that extension.
;
#include sip_custom_post.conf[/more]
[/more] [/more]

[more];--------------------------------------------------------------------------------;
; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
; this file must be done via the web gui. There are alternative files to make ;
; custom modifications, details at: http://freepbx.org/configuration_files ;
;--------------------------------------------------------------------------------;
;
; This file is part of FreePBX.
;
; FreePBX is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 2 of the License, or
; (at your option) any later version.
;
; FreePBX is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with FreePBX. If not, see <http://www.gnu.org/licenses/>.
;
; Copyright (C) 2004 Coalescent Systems Inc (Canada)
; Copyright (C) 2006 Why Pay More 4 Less Pty Ltd (Australia)
; Copyright (C) 2007 Astrogen LLC (USA)

; dialparties.agi (http://www.sprackett.com/asterisk/)
; Asterisk::AGI (http://asterisk.gnuinter.net/)
; gsm (http://www.ibiblio.org/pub/Linux/utils/compress/!INDEX.short.html)
; loligo sounds (http://www.loligo.com/asterisk/sounds/)
; mpg123 (http://voip-info.org/wiki-Asterisk+config+musiconhold.conf)

;************************** -WARNING- ****************************************
; *
; This include file is to be used with extreme caution. In almost all cases *
; any custom dialplan SHOULD be put in extensions_custom.conf which will *
; not hurt a FreePBX generated dialplan. In some very rare and custom *
; situations users may have a need to override what FreePBX automatically *
; generates. If so anything in this file will do that. If you come up with a *
; situation where you need to modify the existing dialplan or macro, please *
; put it here and also notify the FreePBX development team so they can take it *
; into account in the future. *
; *
#include extensions_override_freepbx.conf
; *
;************************** -WARNING- ****************************************

; include extension contexts generated from AMP
#include extensions_additional.conf

; Customizations to this dialplan should be made in extensions_custom.conf
; See extensions_custom.conf.sample for an example.
; If you need to use [macro-dialout-trunk-predial-hook], [ext-did-custom], or
; [from-internal-custom] for example, place these in this file or they will get overwritten.
;
#include extensions_custom.conf
[from-digital]
include => from-pstn

[from-analog]
include => from-dahdi

[from-trunk]                ; just an alias since VoIP shouldn't be called PSTN
include => from-pstn

[from-pstn]
include => from-pstn-custom        ; create this context in extensions_custom.conf to include customizations
include => ext-did
include => ext-did-post-custom
include => from-did-direct        ; MODIFICATION (PL) for findmefollow if enabled, should be before ext-local
include => ext-did-catchall        ; THIS MUST COME AFTER ext-did

;-------------------------------------------------------------------------------
; from-pstn-e164-us:
;
; The context is designed for providers who send calls in e164 format and is
; biased towards NPA calls, callerid and dialing rules. It will do the following:
;
; DIDs in an NPA e164 format of +1NXXNXXXXXX will be converted to 10 digit DIDs
;
; DIDs in any other format will be delivered as they are, including e164 non NPA
; DIDs which means they will need the full format including the + in the inbound
; route.
;
; CallerID(number) presented in e164 NPA format will be trimmed to a 10 digit CID
;
; CallerID(number) presented in e164 non-NPA (country code other than 1) will be
; reformated from: +<CountryCode><Number> to 011<CountryCode><Number>
;
[from-pstn-e164-us]
exten => _+1NXXNXXXXXX/_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten => _+1NXXNXXXXXX/_NXXNXXXXXX,2,Goto(from-pstn,${EXTEN:2},1)
exten => _+1NXXNXXXXXX/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten => _+1NXXNXXXXXX/_011X.,n,Goto(from-pstn,${EXTEN:2},1)
exten => _+1NXXNXXXXXX,1,Goto(from-pstn,${EXTEN:2},1)
exten => _[0-9+]./_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten => _[0-9+]./_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)
exten => _[0-9+]./_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten => _[0-9+]./_011X.,n,Goto(from-pstn,${EXTEN},1)
exten => _[0-9+].,1,Goto(from-pstn,${EXTEN},1)
exten => s/_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})
exten => s/_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)
exten => s/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})
exten => s/_011X.,n,Goto(from-pstn,${EXTEN},1)
exten => s,1,Goto(from-pstn,${EXTEN},1)
;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------
; from-pstn-to-did
;
; The context is designed for providers who send the DID in the TO: SIP header
; only. The format of this header is:
;
; To: <sip:2125551212@172.31.74.25>
;
; So the DID must be extracted between the sip: and the @, which this does
;
[from-pstn-toheader]
exten => _.,1,Goto(from-pstn,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1)
;-------------------------------------------------------------------------------


; MODIFICATION (PL)
;
; Required to assure that direct dids go to personal ring group before local extension.
; This could be auto-generated however I it is preferred to be put here and hard coded
; so that it can be modified if ext-local should take precedence in certain situations.
; will have to decide what to do later.
;
[from-did-direct]
include => ext-findmefollow
include => ext-local


; ############################################################################
; Macros [macro]
; ############################################################################

; Rings one or more extensions. Handles things like call forwarding and DND
; We don't call dial directly for anything internal anymore.
; ARGS: $TIMER, $OPTIONS, $EXT1, $EXT2, $EXT3, ...
; Use a Macro call such as the following:
; Macro(dial,$DIAL_TIMER,$DIAL_OPTIONS,$EXT1,$EXT2,$EXT3,...)
[macro-dial]
exten => s,1,GotoIf($["${MOHCLASS}" = ""]?dial)
exten => s,n,SetMusicOnHold(${MOHCLASS})
exten => s,n(dial),AGI(dialparties.agi)
exten => s,n,NoOp(Returned from dialparties with no extensions to call and DIALSTATUS: ${DIALSTATUS})

exten => s,n+2(normdial),Dial(${ds}) ; dialparties will set the priority to 10 if $ds is not null
exten => s,n,Set(DIALSTATUS=${IF($["${DIALSTATUS_CW}"!="" ]?${DIALSTATUS_CW}:${DIALSTATUS})})
exten => s,n,GosubIf($["${SCREEN}" != "" | "${DIALSTATUS}" = "ANSWER"]?${DIALSTATUS},1)

exten => s,20(huntdial),NoOp(Returned from dialparties with hunt groups to dial )
exten => s,n,Set(HuntLoop=0)
exten => s,n(a22),GotoIf($[${HuntMembers} >= 1]?a30) ; if this is from rg-group, don't strip prefix
exten => s,n,NoOp(Returning there are no members left in the hunt group to ring)

; dialparties.agi has setup the dialstring for each hunt member in a variable labeled HuntMember0, HuntMember1 etc for each iteration
; and The total number in HuntMembers. So for each iteration, we will update the CALLTRACE Data.
;
exten => s,n+2(a30),Set(HuntMember=HuntMember${HuntLoop})
exten => s,n,GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $[$["${RingGroupMethod}" = "hunt" ] | $["${RingGroupMethod}" = "firstavailable"] | $["${RingGroupMethod}" = "firstnotonphone"]]]?a32:a35)

exten => s,n(a32),Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${HuntLoop} + 1])})
exten => s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})
exten => s,n,Goto(s,a42)

;Set Call Trace for each hunt member we are going to call "Memory groups have multiple members to set CALL TRACE For" hence the loop
;
exten => s,n(a35),GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $["${RingGroupMethod}" = "memoryhunt" ]]?a36:a50)
exten => s,n(a36),Set(CTLoop=0)
exten => s,n(a37),GotoIf($[${CTLoop} > ${HuntLoop}]?a42) ; if this is from rg-group, don't strip prefix
exten => s,n,Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${CTLoop} + 1])})
exten => s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})
exten => s,n,Set(CTLoop=$[1 + ${CTLoop}])
exten => s,n,Goto(s,a37)

exten => s,n(a42),Dial(${${HuntMember}}${ds})
exten => s,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?ANSWER,1)
exten => s,n,Set(HuntLoop=$[1 + ${HuntLoop}])
exten => s,n,GotoIf($[$[$["foo${RingGroupMethod}" != "foofirstavailable"] & $["foo${RingGroupMethod}" != "foofirstnotonphone"]] | $["foo${DialStatus}" = "fooBUSY"]]?a46)
exten => s,n,Set(HuntMembers=0)
exten => s,n(a46),Set(HuntMembers=$[${HuntMembers} - 1])
exten => s,n,Goto(s,a22)

exten => s,n(a50),DBdel(CALLTRACE/${CT_EXTEN})
exten => s,n,Goto(s,a42)

; For call screening
exten => NOANSWER,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})
exten => NOANSWER,n,GotoIf($["${IVR_RETVM}" != "RETURN" | "${IVR_CONTEXT}" = ""]?bye)
exten => NOANSWER,n,Return
exten => NOANSWER,n(bye),Macro(hangupcall)
exten => TORTURE,1,Goto(app-blackhole,musiconhold,1)
exten => TORTURE,n,Macro(hangupcall)
exten => DONTCALL,1,Answer
exten => DONTCALL,n,Wait(1)
exten => DONTCALL,n,Zapateller()
exten => DONTCALL,n,Playback(ss-noservice)
exten => DONTCALL,n,Macro(hangupcall)
exten => ANSWER,1,Noop(Call successfully answered - Hanging up now)
exten => ANSWER,n,Macro(hangupcall,)

; make sure hungup calls go here so that proper cleanup occurs from call confirmed calls and the like
;
exten => h,1,Macro(hangupcall)

; get the voicemail context for the user in ARG1
[macro-get-vmcontext]
exten => s,1,Set(VMCONTEXT=${DB(AMPUSER/${ARG1}/voicemail)})
exten => s,2,GotoIf($["foo${VMCONTEXT}" = "foo"]?200:300)
exten => s,200,Set(VMCONTEXT=default)
exten => s,300,NoOp()

; For some reason, if I don't run setCIDname, CALLERID(name) will be blank in my AGI
; ARGS: none
[macro-fixcid]
exten => s,1,Set(CALLERID(name)=${CALLERID(name)})

; Ring groups of phones
; ARGS: comma separated extension list
; 1 - Ring Group Strategy
; 2 - ringtimer
; 3 - prefix
; 4 - extension list
[macro-rg-group]
exten => s,1,Macro(user-callerid,SKIPTTL) ; already called from ringgroup
exten => s,2,GotoIf($["${CALLERID(name):0:${LEN(${RGPREFIX})}}" != "${RGPREFIX}"]?4:3) ; check for old prefix
exten => s,3,Set(CALLERID(name)=${CALLERID(name):${LEN(${RGPREFIX})}}) ; strip off old prefix
exten => s,4,Set(RGPREFIX=${ARG3}) ; set new prefix
exten => s,5,Set(CALLERID(name)=${RGPREFIX}${CALLERID(name)}) ; add prefix to callerid name
exten => s,6,Set(RecordMethod=Group) ; set new prefix
exten => s,7,Macro(record-enable,${MACRO_EXTEN},${RecordMethod})
exten => s,8,Set(RingGroupMethod=${ARG1}) ;
exten => s,9,Macro(dial,${ARG2},${DIAL_OPTIONS},${ARG4})
exten => s,10,Set(RingGroupMethod='') ;


;
; Outgoing channel(s) are busy ... inform the client
; but use noanswer features like ringgroups don't break by being answered
; just to play the message.
;
[macro-outisbusy]
exten => s,1,Progress
exten => s,n,Playback(all-circuits-busy-now,noanswer)
exten => s,n,Playback(pls-try-call-later,noanswer)
exten => s,n,Macro(hangupcall)

; dialout and strip the prefix
[macro-dialout]
exten => s,1,Macro(user-callerid,SKIPTTL)
exten => s,2,GotoIf($["${ECID${CALLERID(number)}}" = ""]?5)     ;check for CID override for exten
exten => s,3,Set(CALLERID(all)=${ECID${CALLERID(number)}})
exten => s,4,Goto(7)
exten => s,5,GotoIf($["${OUTCID_${ARG1}}" = ""]?7)         ;check for CID override for trunk
exten => s,6,Set(CALLERID(all)=${OUTCID_${ARG1}})
exten => s,7,Set(length=${LEN(${DIAL_OUT_${ARG1}})})
exten => s,8,Dial(${OUT_${ARG1}}/${ARG2:${length}})
exten => s,9,Playtones(congestion)
exten => s,10,Congestion(5)
exten => s,109,Macro(outisbusy)


; dialout using default OUT trunk - no prefix
[macro-dialout-default]
exten => s,1,Macro(user-callerid,SKIPTTL)
exten => s,2,Macro(record-enable,${CALLERID(number)},OUT)
exten => s,3,Macro(outbound-callerid,${ARG1})
exten => s,4,Dial(${OUT}/${ARG1})
exten => s,5,Playtones(congestion)
exten => s,6,Congestion(5)
exten => s,105,Macro(outisbusy)

[macro-dialout-trunk-predial-hook]
; this macro intentionally left blank so it may be safely overwritten for any custom
; requirements that an installation may have.
;
; MACRO RETURN CODE: ${PREDIAL_HOOK_RET}
; if set to "BYPASS" then this trunk will be skipped
;
exten => s,1,MacroExit()

[macro-user-logon]
; check device type
;
exten => s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})
exten => s,n,Answer()
exten => s,n,Wait(1)
exten => s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)
; get user's extension
;
exten => s,n,Set(AMPUSER=${ARG1})
exten => s,n,GotoIf($["${AMPUSER}" != ""]?gotpass)
exten => s,n(playagain),Read(AMPUSER,please-enter-your-extension-then-press-pound,,,4)
; get user's password and authenticate
;
exten => s,n,GotoIf($["${AMPUSER}" = ""]?s-MAXATTEMPTS,1)
exten => s,n(gotpass),GotoIf($["${DB_EXISTS(AMPUSER/${AMPUSER}/password)}" = "0"]?s-NOUSER,1)
exten => s,n,Set(AMPUSERPASS=${DB_RESULT})
exten => s,n,GotoIf($[${LEN(${AMPUSERPASS})} = 0]?s-NOPASSWORD,1)
; do not continue if the user has already logged onto this device
;
exten => s,n,Set(DEVICEUSER=${DB(DEVICE/${CALLERID(number)}/user)})
exten => s,n,GotoIf($["${DEVICEUSER}" = "${AMPUSER}"]?s-ALREADYLOGGEDON,1)
exten => s,n,Authenticate(${AMPUSERPASS})
exten => s,n,AGI(user_login_out.agi,login,${CALLERID(number)},${AMPUSER})
exten => s,n,Playback(vm-goodbye)

exten => s-FIXED,1,NoOp(Device is FIXED and cannot be logged into)
exten => s-FIXED,n,Playback(ha/phone)
exten => s-FIXED,n,SayDigits(${CALLERID(number)})
exten => s-FIXED,n,Playback(is-curntly-unavail&vm-goodbye)
exten => s-FIXED,n,Hangup ;TODO should play msg indicated device cannot be logged into

exten => s-ALREADYLOGGEDON,1,NoOp(This device has already been logged into by this user)
exten => s-ALREADYLOGGEDON,n,Playback(vm-goodbye)
exten => s-ALREADYLOGGEDON,n,Hangup ;TODO should play msg indicated device is already logged into

exten => s-NOPASSWORD,1,NoOp(This extension does not exist or no password is set)
exten => s-NOPASSWORD,n,Playback(pbx-invalid)
exten => s-NOPASSWORD,n,Goto(s,playagain)

exten => s-MAXATTEMPTS,1,NoOp(Too many login attempts)
exten => s-MAXATTEMPTS,n,Playback(vm-goodbye)
exten => s-MAXATTEMPTS,n,Hangup

exten => s-NOUSER,1,NoOp(Invalid extension ${AMPUSER} entered)
exten => s-NOUSER,n,Playback(pbx-invalid)
exten => s-NOUSER,n,Goto(s,playagain)

[macro-user-logoff]
; check device type
;
exten => s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})
exten => s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)
exten => s,n,AGI(user_login_out.agi,logout,${CALLERID(number)})
exten => s,n(done),Playback(vm-goodbye)

exten => s-FIXED,1,NoOp(Device is FIXED and cannot be logged out of)
exten => s-FIXED,n,Playback(an-error-has-occured&vm-goodbye)
exten => s-FIXED,n,Hangup ;TODO should play msg indicated device cannot be logged into



; Privacy Manager Macro makes sure that any calls that don't pass the privacy manager are presented
; with congestion since there have been observed cases of the call continuing if not stopped with a
; congestion, and this provides a slightly more friendly 'sorry' message in case the user is
; legitimately trying to be cooperative.
;
; Note: the following options are configurable in privacy.conf:
;
;    maxretries = 3 ; default value, number of retries before failing
;    minlength = 10 ; default value, number of digits to be accepted as valid CID
;
[macro-privacy-mgr]
exten => s,1,Set(KEEPCID=${CALLERID(num)})
exten => s,n,GotoIf($["foo${CALLERID(num):0:1}"="foo+"]?CIDTEST2:CIDTEST1)
exten => s,n(CIDTEST1),Set(TESTCID=${MATH(1+${CALLERID(num)})})
exten => s,n,Goto(TESTRESULT)
exten => s,n(CIDTEST2),Set(TESTCID=${MATH(1+${CALLERID(num):1})})
exten => s,n(TESTRESULT),GotoIf($["foo${TESTCID}"="foo"]?CLEARCID:PRIVMGR)
exten => s,n(CLEARCID),Set(CALLERID(num)=)
exten => s,n(PRIVMGR),PrivacyManager(${ARG1},${ARG2})
exten => s,n,GotoIf($["${PRIVACYMGRSTATUS}"="FAILED"]?fail)
exten => s,n,GosubIf($["${CALLED_BLACKLIST}" = "1"]?app-blacklist-check,s,1)
exten => s,n,SetCallerPres(allowed_passed_screen); stop gap until app_privacy.c clears unavailable bit
exten => s,PRIVMGR+101(fail),Noop(STATUS: ${PRIVACYMGRSTATUS} CID: ${CALLERID(num)} ${CALLERID(name)} CALLPRES: ${CALLLINGPRES})
exten => s,n,Playback(sorry-youre-having-problems)
exten => s,n,Playback(goodbye)
exten => s,n,Playtones(congestion)
exten => s,n,Congestion(5)
exten => h,1,Hangup



; Text-To-Speech related macros
; These all follow common actions. First try to playback a file "tts/custom-md5"
; where "md5" is the md5() of whatever is going to be played. If that doesn't exist,
; try to playback using macro-tts-sayXXXXX (where XXXXX is text/digits/etc, same as
; the macro below). If that macro exits with MACRO_OFFSET=100, then it's done,
; otherwise, fallback to the default asterisk method.
;
; say text is purely for text-to-speech, there is no fallback
[macro-saytext]
exten => s,1,Noop(Trying custom SayText playback for "${ARG1}")
exten => s,n,Playback(tts/custom-${MD5(${ARG1})})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
; call tts-saytext. This should set MACRO_OFFSET=101 if it was successful
exten => s,n(tts),Macro(tts-saytext,${ARG1},${ARG2},${ARG3})
exten => s,n,Noop(No text-to-speech handler for SayText, cannot say "${ARG1}")
exten => s,n,Goto(done)
exten => s,tts+101,Noop(tts handled saytext)

; say name is for saying names typically, but fallsback to using SayAlpha
; (saying the word letter-by-letter)
[macro-sayname]
exten => s,1,Noop(Trying custom SayName playback for "${ARG1}")
exten => s,n,Playback(tts/custom-${MD5(${ARG1})})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
; call tts-sayalpha. This should set MACRO_OFFSET=101 if it was successful
exten => s,n(tts),Macro(tts-sayalpha,${ARG1},${ARG2},${ARG3})
exten => s,n,SayAlpha(${ARG1})
exten => s,n,Goto(done)
exten => s,tts+101,Noop(tts handled sayname)

; Say number is for saying numbers (eg "one thousand forty six")
[macro-saynumber]
exten => s,1,Noop(Trying custom SayNumber playback for "${ARG1}")
exten => s,n,Playback(tts/custom-${MD5(${ARG1})})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
; call tts-saynumber. This should set MACRO_OFFSET=101 if it was successful
exten => s,n(tts),Macro(tts-saynumber,${ARG1},${ARG2},${ARG3})
exten => s,n,SayNumber(${ARG1})
exten => s,n,Goto(done)
exten => s,tts+101,Noop(tts handled saynumber)

; Say digits is for saying digits one-by-one (eg, "one zero four six")
[macro-saydigits]
exten => s,1,Noop(Trying custom SayDigits playback for "${ARG1}")
exten => s,n,Playback(tts/custom-${MD5(${ARG1})})
exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)
; call tts-saydigits. This should set MACRO_OFFSET=101 if it was successful
exten => s,n(tts),Macro(tts-saydigits,${ARG1},${ARG2},${ARG3})
exten => s,n,SayDigits(${ARG1})
exten => s,n,Goto(done)


;
; ############################################################################
; Inbound Contexts [from]
; ############################################################################

[from-sip-external]
; Yes. This is _really_ meant to be _. - I know asterisk whines about it, but
; I do know what I'm doing. This is correct.
exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
exten => _.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})
exten => _.,n,Goto(s,1)
exten => s,1,GotoIf($["${ALLOW_SIP_ANON}"="yes"]?checklang:noanonymous)
exten => s,n(checklang),GotoIf($["${SIPLANG}"!=""]?setlanguage:from-trunk,${DID},1)
exten => s,n(setlanguage),Set(CHANNEL(language)=${SIPLANG})
exten => s,n,Goto(from-trunk,${DID},1)
exten => s,n(noanonymous),Set(TIMEOUT(absolute)=15)
exten => s,n,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(ss-noservice)
exten => s,n,Playtones(congestion)
exten => s,n,Congestion(5)
exten => h,1,Hangup
exten => i,1,Hangup
exten => t,1,Hangup

[from-internal-xfer]
; applications are now mostly all found in from-internal-additional in _custom.conf
include => from-internal-custom
include => parkedcalls

; MODIFIED (PL)
;
; Currently the include for findmefollow is being auto-generated before ext-local which is the desired behavior.
; However, I haven't been able to do anything that I know of to force this. We need to determine if it should
; be hardcoded into here to make sure it doesn't change with some configuration. For now I will leave it out
; until we can discuss this.
;
include => ext-local-confirm
include => findmefollow-ringallv2
include => from-internal-additional
; This causes grief with '#' transfers, commenting out for the moment.
; include => bad-number
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

[from-internal]
include => from-internal-xfer
include => bad-number

;------------------------------------------------------------------------
; [macro-setmusic]
;------------------------------------------------------------------------
; CONTEXT: macro-setmusic
; PURPOSE: to turn off moh on routes where it is not desired
;
;------------------------------------------------------------------------
[macro-setmusic]
exten => s,1,NoOp(Setting Outbound Route MoH To: ${ARG1})
exten => s,2,Set(CHANNEL(musicclass)=${ARG1}) ; this won't work in 1.2 anymore, could fix in auto-generate if we wanted...
;------------------------------------------------------------------------

; ##########################################
; ## Ring Groups with Confirmation macros ##
; ##########################################
; Used by followme and ringgroups

;------------------------------------------------------------------------
; [macro-dial-confirm]
;------------------------------------------------------------------------
; This has now been incorporated into dialparties. It still only works with ringall
; and ringall-prim strategies. Have not investigated why it doesn't work with
; hunt and memory hunt.
;
;------------------------------------------------------------------------
[macro-dial-confirm]
; This was written to make it easy to use macro-dial-confirm instead of macro-dial in generated dialplans.
; This takes the same parameters, with an additional parameter of the ring group Number
; ARG1 is the timeout
; ARG2 is the DIAL_OPTIONS
; ARG3 is a list of xtns to call - 203-222-240-123123123#-211
; ARG4 is the ring group number

; This sets a unique value to indicate that the channel is ringing. This is used for warning slow
; users that the call has already been picked up.
;
exten => s,1,Set(DB(RG/${ARG4}/${CHANNEL})=RINGING)

; We need to keep that channel variable, because it'll change when we do this dial, so set it to
; fallthrough to every sibling.
;
exten => s,n,Set(__UNIQCHAN=${CHANNEL})

; The calling ringgroup should have set RingGroupMethod appropriately. We need to set two
; additional parameters:
;
; USE_CONFIRMATION, RINGGROUP_INDEX
;
; These are passed to inform dialparties to place external calls through the [grps] context
;
exten => s,n,Set(USE_CONFIRMATION=TRUE)
exten => s,n,Set(RINGGROUP_INDEX=${ARG4})
exten => s,n,Set(ARG4=) ; otherwise it gets passed to dialparties.agi which processes it (prob bug)

exten => s,n,Macro(dial,${ARG1},${ARG2},${ARG3})

; delete the variable, if we are here, we are done trying to dial and it may have been left around
;
exten => s,n,Noop(DELETE KEY: RG/${RINGGROUP_INDEX}/${CHANNEL}: ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})})
exten => s,n,Set(USE_CONFIRMATION=)
exten => s,n,Set(RINGGROUP_INDEX=)
;------------------------------------------------------------------------


;------------------------------------------------------------------------
; [ext-local-confirm]
;------------------------------------------------------------------------
; If call confirm is being used in a ringgroup, then calls that do not require confirmation are sent
; to this extension instead of straight to the device.
;
; The sole purpose of sending them here is to make sure we run Macro(auto-confirm) if this
; extension answers the line. This takes care of clearing the database key that is used to inform
; other potential late comers that the extension has been answered by someone else.
;
; ALERT_INFO is deprecated in Asterisk 1.4 but still used throughout the FreePBX dialplan and
; usually set by dialparties.agi. This allows inheritance. Since no dialparties.agi here, set the
; header if it is set.
;
;------------------------------------------------------------------------
[ext-local-confirm]
exten => _LC-.,1,Noop(IN ext-local-confirm with - RT: ${RT}, RG_IDX: ${RG_IDX})
exten => _LC-.,n,GotoIf($["x${ALERT_INFO}"="x"]?godial)
exten => _LC-.,n,SIPAddHeader(Alert-Info: ${ALERT_INFO})
exten => _LC-.,n(godial),dial(${DB(DEVICE/${EXTEN:3}/dial)},${RT},M(auto-confirm^${RG_IDX})${DIAL_OPTIONS})

;------------------------------------------------------------------------
; [findmefollow-ringallv2]
;------------------------------------------------------------------------
; This context, to be included in from-internal, implements the PreRing part of findmefollow
; as well as the GroupRing part. It also communicates between the two so that if DND is set
; on the primary extension, and mastermode is enabled, then the other extensions will not ring
;
;------------------------------------------------------------------------
[findmefollow-ringallv2]
exten => _FMPR-.,1,Noop(In FMPR ${FMGRP} with ${EXTEN:5})
exten => _FMPR-.,n,Set(RingGroupMethod=)
exten => _FMPR-.,n,Set(USE_CONFIRMATION=)
exten => _FMPR-.,n,Set(RINGGROUP_INDEX=)
exten => _FMPR-.,n,Macro(simple-dial,${EXTEN:5},${FMREALPRERING})
exten => _FMPR-.,n,GotoIf($["${DIALSTATUS}" != "BUSY"]?nodnd)
exten => _FMPR-.,n,Set(DB(FM/DND/${FMGRP}/${FMUNIQUE})=DND)
exten => _FMPR-.,n(nodnd),Noop(Ending FMPR ${FMGRP} with ${EXTEN:5} and dialstatus ${DIALSTATUS})
exten => _FMPR-.,n,Hangup()

exten => _FMGL-.,1,Noop(In FMGL ${FMGRP} with ${EXTEN:5})
exten => _FMGL-.,n,GotoIf($["${DB(FM/DND/${FMGRP}/${FMUNIQUE})}" = "DND"]?dodnd)
exten => _FMGL-.,n,Wait(1)
exten => _FMGL-.,n,GotoIf($["${DB(FM/DND/${FMGRP}/${FMUNIQUE})}" = "DND"]?dodnd)
exten => _FMGL-.,n,Wait(1)
exten => _FMGL-.,n,GotoIf($["${DB(FM/DND/${FMGRP}/${FMUNIQUE})}" = "DND"]?dodnd)
exten => _FMGL-.,n,Wait(${FMPRERING})
exten => _FMGL-.,n,GotoIf($["${DB(FM/DND/${FMGRP}/${FMUNIQUE})}" = "DND"]?dodnd)
exten => _FMGL-.,n,DBDel(FM/DND/${FMGRP}/${FMUNIQUE})
exten => _FMGL-.,n(dodial),Macro(dial,${FMGRPTIME},${DIAL_OPTIONS},${EXTEN:5})
exten => _FMGL-.,n,Noop(Ending FMGL ${FMGRP} with ${EXTEN:5} and dialstatus ${DIALSTATUS})
exten => _FMGL-.,n,Hangup()
exten => _FMGL-.,n+10(dodnd),DBDel(FM/DND/${FMGRP}/${FMUNIQUE})
exten => _FMGL-.,n,GotoIf($["${FMPRIME}" = "FALSE"]?dodial)
exten => _FMGL-.,n,Noop(Got DND in FMGL ${FMGRP} with ${EXTEN:5} in ${RingGroupMethod} mode, aborting)
exten => _FMGL-.,n,Hangup()

;------------------------------------------------------------------------
; [block-cf]
;------------------------------------------------------------------------
; This context is set as a target with FORWARD_CONTEXT when Call Forwarding is set to be
; ignored in a ringgroup or other features that may take advantage of this. Server side
; CF is done in dialparties.agi but if a client device forwards a call, it will be caught
; and blocked here.
;------------------------------------------------------------------------
[block-cf]
exten => _X.,1,Noop(Blocking callforward to ${EXTEN} because CF is blocked)
exten => _X.,n,Hangup()

;------------------------------------------------------------------------


;this is where parked calls go if they time-out. Should probably re-ring
[default]
include => ext-local
exten => s,1,Playback(vm-goodbye)
exten => s,2,Macro(hangupcall)[/more] [/more]

Добавлено:
sip и extensions
Автор: Kernell32
Дата сообщения: 22.11.2013 15:50
Lopata131313
мать моя, у вас не ручками сделанное. Моя ошибка не сразу прочел что у вас Elastix

1) вы ставите вашу прибабасину ради двух телефонов(аппараты с внутренними номерами с возможностью пользоваться одной линией(sip аккаунт)

2) мой вам совет:
- всё сносите почитайте протокол sip обязательно + астериск книжку(будущее телефонии изд. МэдОрилли)
- в результате у вас всё будет ПРОЩЕ(я понимаю что тут пару "кликов" и вот они пара кликов


зато ручками без халявской оболочки у вас получится всё "прозрачно"

если лень то: чесно говоря я даже визуально не представляю вашу софтину но смысл такой:
прописать два внутренних телефона(сип записи)
прописать внешнюю линию(транк)
создать план набора в котором выставить приоритеты(на какой первый телефон приходит звонок или вы меню будите делать тогда туда.

Вообщето sip аккаунт поддерживает если не описано в договоре то конфигурируется в любом случае достаточно чтоб ваши оба телефона работали одновременно как в разных направлениях так и в одном - провайдер всё обработает как надо.
Автор: niko7
Дата сообщения: 27.11.2013 15:44
Подскажите, как лучше обычный факс подключить, какое оборудование купить? Нормально ли факс работает?
Автор: Kernell32
Дата сообщения: 27.11.2013 17:52
niko7
всё что умеет работать из цифры в аналог т..е аналоговое устройство умеющее из витой пары которая как у кого она там подключена подцепиться к астеру и бла бла бла
как пример addpac ap200 серии

у меня у самого две штуки
один ap200D второй ap200B

у первого 2-х FXO - что дает нам возможность использовать аналоговую(ые) pstn
у второго 2-х FXS к которым мы уже подключаем простые("дешмановские" телефоны) или факсы

.... а вот с реализацией факсов я еще не переборолся, я только обычную ТФОП зацепил но callerid так и не пробросил , по томуже SIP callerID нормально на телефонах отображается.

По факсам вот что я нашёл:
у людей реализация такая: Отправка :: юзер сканит свой листочек, далее кладёт этот файл на сервак в "нужный" каталог. На серввере скрипт который отрабатывает каждые n минут на наличие "свежачка" в нашём каталоге. Далее находит новый файл, его конвертирует в pdf, Далее ч..з жопу отправка. Приём уже не буду рассказывать( у кого почтой реализуется у кого(как к примеру мне надо учитывая что у меня есть всё оборудование это вот так: PSTN-> AP200D-> Asterisk-> Ap200B.

http://asterisk-system.ru/asterisk/nastraivaem-asterisk-1-8-na-priem-i-otpravku-faksov.html
http://noize85.blogspot.ru/2010/07/asetrisk-hylafax.html
http://habrahabr.ru/post/185260/
http://habrahabr.ru/post/183584/

буду благодарен всем и каждому кто меня вразумит или алгоритм(не по шагово как для дитятки малого, а просто на человеском языке, прим.: пункт первый - настройка сети и вот это я уже сам ищу как ее настроить. пункт второй - настройка pots pattern и чего нить еще ---я снова сам ищу сам читаю сам пробую

инет есть книги есть(даж распечатал чтоб глаза меньше уставали) сил нету
Автор: niko7
Дата сообщения: 01.12.2013 21:48
Kernell32
Цитата:
По факсам вот что я нашёл:
Получается отправить факс обычным факсом практически не реально? Спасибо за ссылки, с интересом посмотрел.
Автор: tankistua
Дата сообщения: 01.12.2013 21:57
1) для факса используют Т38. Иногда не отправляется факс, при том что на вход с того же абонента без проблем.
2) автоматический факс это конечно хорошо, но что делать если с той стороны в трубку кричат АЛЕ. И свист в ухо даже мыслей никаких не вызхвает. И опять же - а если номер ошиблись
Автор: Kernell32
Дата сообщения: 02.12.2013 09:12
niko7

Цитата:
Получается отправить факс обычным факсом практически не реально?



реально только надо знания и опыт. Tankistua более развернуто(у него лвл выше сказал и действительно T38 надо "поднимать"


Цитата:
И опять же - а если номер ошиблись


улыбнуло


niko7

tankistua

как я понял все те "схемы" не могут дать 100%. 100% только линия или напрямую в Факс или ч..з существующую мини АТС - там всё "роднее"

ребят ! судя по тому что тут: я понимаю форум, время, ответы/консультации - всё от людей которые помогают "чисто по человечески". Кароче "ветка форума" не дышит жизнью !!! или как то активнее или или или ??? Тематика хорошая и классная, и интересная как в реализации ("что откуда вытекает" информатике в почёт) не хочется чтоб она "загнулась"
Автор: cyberliberty
Дата сообщения: 02.12.2013 15:51

Цитата:
Получается отправить факс обычным факсом практически не реально?

Вообще, если прозрачно пропускать сигнал из аналоговой линии (pstn + tdm400p) через астериск на факс-аппарат (через mp100, вроде), то более менее хорошо все.. Это на собственном опыте.
А все что дальше - мне понравилась фраза кого-то в интернетах:
"Вероятность прохождения факсов по sip зависит от погоды на марсе и фазы луны"
Автор: niko7
Дата сообщения: 04.12.2013 23:02
Подскажите, как найти причину того, что связь иногда обрывается?
Автор: hyperbred
Дата сообщения: 05.12.2013 19:47

Цитата:
Подскажите, как найти причину того, что связь иногда обрывается?


включи дебаг и анализируй
Автор: niko7
Дата сообщения: 05.12.2013 22:16
hyperbred
Цитата:
включи дебаг и анализируй
А как правильно посмотреть там же много событий будет?
Автор: tankistua
Дата сообщения: 05.12.2013 23:23
на то он и дебаг. захочешь - разберешься
Автор: hyperbred
Дата сообщения: 06.12.2013 10:09
http://asterisk-support.ru/question/15627/analiz-sip-protokola-tcpdump-om-wireshark/
Автор: Kernell32
Дата сообщения: 06.12.2013 15:32
cyberliberty
получается что отправить как и принять можно
всё упирается в знания и опыт применения этих знаний
Автор: sachaff
Дата сообщения: 10.12.2013 10:58
приветствую.
хотел настроить ChanSpy - ан невыходит.
нужна авторизация, в инете нашел следующее:

Для того чтобы настроить ChanSpy в Elastix 2.3, необходимо в файле extensions_custom.conf, который находится в /etc/asterisk добавить в конец:


[app-chanspy-custom]
exten => 555,1,Macro(user-callerid)
exten => 555,n,Authenticate(1234)
exten => 555,n,Read(SPYNUM,agent-newlocation)
exten => 555,n,ChanSpy(SIP/${SPYNUM},q)
exten => 555,n,Hangup

и перезапустить Elastix

Во второй строке 1234 - пароль, который АТС будет запрашивать при дозвоне на номер 555

все так сделал - а парль не запрашивает.
что не так?
Автор: Ruza
Дата сообщения: 10.12.2013 20:57
sachaff
У тебя включен в Feature Code Admin - Core - ChanSpy? Если да попробуй выключить, если же не включен то тогда надо более детально лог и выводы астериска смотреть.
Автор: sachaff
Дата сообщения: 12.12.2013 08:58

Цитата:
У тебя включен в Feature Code Admin - Core - ChanSpy?


пробовал ставить статус Disable - при звонке на 555, слышу типо вы не можете позвонить на этот номер , попробуйте снова.
Автор: hyperbred
Дата сообщения: 12.12.2013 12:14

Цитата:
хотел настроить ChanSpy - ан невыходит.


http://asterisk-support.ru/question/41420/ustanovit-parol-dlia-shanspy/
Автор: slaj1
Дата сообщения: 21.02.2014 17:48
всем доброго времени суток

использую asterisk (freebpx) + digium pri на 2 порта
один порт смотрит к провайдеру, второй в старую TDA100

ранее в этой ветке просил подсказки на предмет куда копать по следующей проблеме:
периодически звонящие из-вне на офисный номер при попытке донабора попадали совершенно не туда куда звонили, в дебаге видел проглатывание цифр

колеги в ветке подсказали копать в сторону dtmf

вроде как нашел решение
в /etc/asterisk/chan_dahdi.conf
добавил relaxdtmf=yes (ранее не было)
после перезапуска dahdi и прогона тестовых звонков ни разу не поймал проблему

Добавлено:
ссыль на первоисточник решения:
http://ru-asterisk.livejournal.com/74926.html
Автор: slaj1
Дата сообщения: 24.02.2014 08:51
всем доброго времени суток
после изменений в конфиге dahdi, а именно
-- в /etc/asterisk/chan_dahdi.conf
-- добавил relaxdtmf=yes

с части направлений проблема неправильной обработки dtmf ушла
но с некоторых направлений/устройств осталась

на текущий момент осталась следующая воспроизводимая проблема:
при звонке из-вне и наборе попытке набора трехзначного внутреннего номера отсекается третья цифра, а перед первыми двумя подставляется ведущая единица, соответственно звонящий попадает не туда куда планировал.

звонок осуществляется с купленной лет 5-7 назад dect трубки производства simens

Добавлено:
ps
из того, что было исправлено параметром relaxdtmf=yes
это:
- ошибочный дозвон до внутренних номеров при звонке с внутренного аппарата компании на внешнеий номер и быстрый набор любого вн. номера (проблема спокойно ловилась 2-3 раза из 10ти, при этом использовался системный аппарат от Panasonic);
- дозвон до внутренних номеров из сети МТС с использованием смартфона марки Samsung (ошибка дозвона повторялась при любой попытке, на текущий момент не воспроизводится).
Автор: StanislawK
Дата сообщения: 24.02.2014 11:50
Суть.
У меня есть три офиса.
Между офисами прямой провод.
В одном из, головном офисе, стоит головной Asterisk FreePBX 2.9.0.7. И сюда заведен SIP транк от комстара. В транке несколько номеров. За каждым из офисов закреплен свой.

И в других офисах тоже Asterisk FreePBX.

Между офисами, между asterisk ами настроены SIP транки.

В общем все работает. Входящие работают чудесно. Все разруливается как надо.

Есть проблема с исходящими такого рода. Когда я делаю исходящий звонок с астриска головного офиса, на исходящем звонке ставится правильный CID.
А если делать звонок из дальнего офиса, через тот астериск, звонок по "внутреннему" транку приходит на астериск головного офиса, и уходит во внешний мир с CID внутреннего номера "235", абонент получающий такой вызов видит номер как +7235.

Вопрос.
Как настроить asterisk freepbx, чтобы при внутренних звонках я видел внутренний номер, а при звонках наружу соответствующий офису номер CID?


Общее направление я понимаю. Как конкретно это сделать?

Страницы: 1234567891011121314151617

Предыдущая тема: Запретил все интерактивный вход в систему.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.