Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Как задать таймаут для ringing/progress?

0

Есть такой диалплан:

[context1]
exten=>_X.,1,NoOp
same=>n,Dial(SIP/peer1/${EXTEN})
same=>n,Dial(SIP/peer2/${EXTEN})
same=>n,Dial(SIP/peer3/${EXTEN})

Иногда пиры затупливают, отдают "Trying" и всё. Не отбивают звонок и не соединяют. Астер ждёт полминуты и только тогда переходит к следующему пиру. Клиентов это бесит. Как сделать некий таймаут Dial'а до получения ringing/progress? Через запятую после экстеншена это не то - там таймер тикает просто пока не возьмут трубку, а это не то.

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

спросил 2015-05-27 14:12:25 +0400

yu-boot Gravatar yu-boot
1 3 1

3 Ответа

0

Может сделать из пиров транки, задать для них qualify=2000 и проверять DIALSTATUS:

same=>n,Dial(SIP/${EXTEN}@TRUNK1,60)
same=>n,Set(DialStatus=${DIALSTATUS})
same=>n,GotoIf($[$["${DIALSTATUS}" = "BUSY"]|$["${DIALSTATUS}" = "CONGESTION"]]?peer2)
same=>n,Hangup
same=>n(peer2),Dial(SIP/${EXTEN}@TRUNK2,60)
same=>n,GotoIf($[$["${DIALSTATUS}" = "BUSY"]|$["${DIALSTATUS}" = "CONGESTION"]]?peer3) 
и т. д.

Тогда timeout будет не более 2 с

ссылка удалить спам редактировать

ответил 2015-05-28 11:18:55 +0400

yks Gravatar yks
19 6 4

обновил 2015-05-28 11:20:10 +0400

Comments

неправда. таймаут будет зависить от оборудования на той стороне

meral ( 2015-05-28 12:51:57 +0400 )редактировать
0

sip.conf

timerb

ссылка удалить спам редактировать

ответил 2015-05-27 18:25:56 +0400

komrad123 Gravatar komrad123
3810 5 3 44
0

второй парметр сколько звонить.

буковка r делает фейковый тон

ограничить время до ringing - нельзя. только общее.

можно написать патч. сложность высокая. можно выставить t1/t2 таймауты на меньшее значение.

[root@pro-sip ~]#  asterisk -rx "core show application dial"

  -= Info about application 'Dial' =- 

[Synopsis]
Attempt to connect to another device or endpoint and bridge the call. 

[Description]
This application will place calls to one or more specified channels. As soon
as one of the requested channels answers, the originating channel will be
answered, if it has not already been answered. These two channels will then
be active in a bridged call. All other channels that were requested will then
be hung up.
Unless there is a timeout specified, the Dial application will wait
indefinitely until one of the called channels answers, the user hangs up,
or if all of the called channels are busy or unavailable. Dialplan executing
will continue if no requested channels can be called, or if the timeout
expires. This application will report normal termination if the originating
channel hangs up, or if the call is bridged and either of the parties in the
bridge ends the call.
If the ${OUTBOUND_GROUP} variable is set, all peer channels created by this
application will be put into that group (as in Set(GROUP()=...). If the $
{OUTBOUND_GROUP_ONCE} variable is set, all peer channels created by this
application will be put into that group (as in Set(GROUP()=...). Unlike $
{OUTBOUND_GROUP}, however, the variable will be unset after use.
This application sets the following channel variables:
${DIALEDTIME}: This is the time from dialing a channel until when it is
disconnected.
${ANSWEREDTIME}: This is the amount of time for actual call.
${DIALSTATUS}: This is the status of the call
    CHANUNAVAIL
    CONGESTION
    NOANSWER
    BUSY
    ANSWER
    CANCEL
    DONTCALL: For the Privacy and Screening Modes. Will be set if the
    called party chooses to send the calling party to the 'Go Away' script.
    TORTURE: For the Privacy and Screening Modes. Will be set if the
    called party chooses to send the calling party to the 'torture' script.
    INVALIDARGS

[Syntax]
Dial(Technology/Resource[&Technology2/Resource2[&...]][,timeout[,options[,URL]]])

[Arguments]
Technology/Resource
    Specification of the device(s) to dial.  These must be in the format
    of 'Technology/Resource', where <Technology> represents a particular
    channel driver, and <Resource> represents a resource available to that
    particular channel driver.
Technology2/Resource2
    Optional extra devices to dial in parallel
    If you need more then one enter them as Technology2/Resource2&Te
    chnology3/Resourse3&.....
timeout
    Specifies the number of seconds we attempt to dial the specified
    devices
    If not specified, this defaults to 136 years.
options
    A(x): 
        x - The file to play to the called party
    Play an announcement to the called party, where <x> is the prompt
    to be played

    a: Immediately answer the calling channel when the called channel
    answers in all cases. Normally, the calling channel is answered when the
    called channel answers, but when options such as A() and M() are used,
    the calling channel is not answered until all actions on the called channel
    (such as playing an announcement) are completed.  This option can be used
    to answer the calling channel before doing anything on the called channel.
    You will rarely need to use this option, the default behavior is adequate
    in most cases.

    C: Reset the call detail record (CDR) for this call.

    c: If the Dial() application cancels this call, always set the flag
    to tell the channel driver that the call is answered elsewhere.

    d: Allow the calling user to dial a 1 digit extension while waiting
    for a call to be answered. Exit to that extension if it exists in the
    current context, or the context defined in the ${EXITCONTEXT} variable,
    if it exists.
    NOTE: Many SIP and ISDN phones cannot send DTMF digits until the
    call is connected.  If you wish to use this option with these phones,
    you can use the 'Answer' application before dialing.

    D([called][:calling[:progress]]): Send the specified DTMF strings
    *after* the called party has answered, but before the call gets bridged.
    The  <called> DTMF string is sent to the called party, and the  <calling>
    DTMF string is sent to the calling party. Both arguments  can be used
    alone.  If <progress> is specified, its DTMF is sent immediately after
    receiving a PROGRESS message.

    e: Execute the 'h' extension for peer after the call ends

    f([x]): If <x> is not provided, force the CallerID sent on a
    call-forward or deflection to the dialplan extension of this Dial() using
    a dialplan 'hint'. For example, some PSTNs do not allow CallerID to be
    set to anything other than the numbers assigned to you. If <x> is provided,
    force the CallerID sent to <x>.

    F([[context^]exten^]priority): When the caller hangs up, transfer
    the *called* party to the specified destination and *start* execution
    at that location.
    NOTE: Any channel variables you want the called channel to inherit
    from the caller channel must be prefixed with one or two underbars ('_').

    F: When the caller hangs up, transfer the *called* party to the next
    priority of the current extension and *start* execution at that location.
    NOTE: Any channel variables you want the called channel to inherit
    from the caller channel must be prefixed with one or two underbars ('_').
    NOTE: Using this option from a Macro() or GoSub() might not make
    sense as there would be no return points.

    g: Proceed with dialplan execution at the next priority in the current
    extension if the destination channel hangs up.

    G([[context^]exten^]priority): If the call is answered, transfer
    the calling party to the specified <priority> and the called party to
    the specified  <priority> plus one.
    NOTE: You cannot use any additional action post answer options in
    conjunction with this option.

    h: Allow the called party to hang up by sending the DTMF sequence
    defined for disconnect in "features.conf".

    H: Allow the calling party to hang up by sending the DTMF sequence
    defined for disconnect in "features.conf".
    NOTE: Many SIP and ISDN phones cannot send DTMF digits until the
    call is connected.  If you wish to allow DTMF disconnect before the dialed
    party answers with these phones, you can use the 'Answer' application
    before dialing.

    i: Asterisk will ignore any forwarding requests it may receive on
    this dial attempt.

    I: Asterisk will ignore any connected line update requests or any
    redirecting party update requests it may receive on this dial attempt.

    k: Allow the called party to enable parking of the call by sending
    the DTMF sequence defined for call parking in "features.conf".

    K: Allow the calling party to enable parking of the call by sending
    the DTMF sequence defined for call parking in "features.conf".

    L(x[:y[:z]]): 
        x - Maximum call time, in milliseconds
        y - Warning time, in milliseconds
        z - Repeat time, in milliseconds
    Limit the call to <x> milliseconds. Play a warning when <y> mill
    iseconds are left. Repeat the warning every <z> milliseconds until time
    expires.
    This option is affected by the following variables:
        ${LIMIT_PLAYAUDIO_CALLER}: 
            yes
            no
            If set, this variable causes Asterisk to play the
            prompts to the caller.
        ${LIMIT_PLAYAUDIO_CALLEE}: 
            yes
            no
            If set, this variable causes Asterisk to play the
            prompts to the callee.
        ${LIMIT_TIMEOUT_FILE}: 
            filename
            If specified, <filename> specifies the sound prompt
            to play when the timeout is reached. If not set, the time remaining
            will be announced.
        ${LIMIT_CONNECT_FILE}: 
            filename
            If specified, <filename> specifies the sound prompt
            to play when the call begins. If not set, the time remaining will
            be announced.
        ${LIMIT_WARNING_FILE}: 
            filename
            If specified, <filename> specifies the sound prompt
            to play as a warning when time <x> is reached. If not set, the
            time remaining will be announced.

    m([class]): Provide hold music to the calling party until a requested
    channel answers. A specific music on hold <class> (as defined in "mus
    iconhold.conf") can be specified.

    M(macro[^arg[^...]]): 
        macro - Name of the macro that should be executed.
        arg - Macro arguments
    Execute the specified <macro> for the *called* channel  before
    connecting to the calling channel. Arguments can be specified to the Macro
    using '^' as a delimiter. The macro can set the variable ${MACRO_RESULT}
    to specify the following actions after the macro is finished executing:
        ${MACRO_RESULT}: If set, this action will be taken after
        the macro finished executing.
            ABORT: Hangup both legs of the call
            CONGESTION: Behave as if line congestion was
            encountered
            BUSY: Behave as if a busy signal was encountered
            CONTINUE: Hangup the called party and allow the
            calling party to continue dialplan execution at the next priority
            GOTO:[[<context>^]<exten>^]<priority>: Transfer the
            call to the specified destination.
    NOTE: You cannot use any additional action post answer options in
    conjunction with this option. Also, pbx services are run on the peer
    (called) channel, so you will not be able to set timeouts via the TIMEOUT()
    function in this macro.
    WARNING!!!: Be aware of the limitations that macros have, specifically
    with regards to use of the 'WaitExten' application. For more information,
    see the documentation for Macro()

    n([delete]): 
        delete - With <delete> either not specified or set to '0
        ', the recorded introduction will not be deleted if the caller hangs
        up while the remote party has not yet answered.
        With <delete> set to '1', the introduction will always be
        deleted.
    This option is a modifier for the call screening/privacy mode. (See
    the  'p' and 'P' options.) It specifies that no introductions are to be
    saved in the "priv-callerintros" directory.

    N: This option is a modifier for the call screening/privacy mode.
    It specifies that if Caller*ID is present, do not screen the call.

    o([x]): If <x> is not provided, specify that the CallerID that was
    present on the *calling* channel be stored as the CallerID on the *called*
    channel. This was the behavior of Asterisk 1.0 and earlier. If <x> is
    provided, specify the CallerID stored on the *called* channel. Note that
    o(${CALLERID(all)}) is similar to option o without the parameter.

    O([mode]): 
        mode - With <mode> either not specified or set to '1', the
        originator hanging up will cause the phone to ring back immediately.
        With <mode> set to '2', when the operator  flashes the trunk,
        it will ring their phone back.
    Enables *operator services* mode.  This option only works when
    bridging a DAHDI channel to another DAHDI channel only. if specified on
    non-DAHDI interfaces, it will be ignored. When the destination answers
    (presumably an operator services station), the originator no longer has
    control of their line. They may hang up, but the switch will not release
    their line until the destination party (the operator) hangs up.

    p: This option enables screening mode. This is basically Privacy
    mode without memory.

    P([x]): Enable privacy mode. Use <x> as the family/key in the AstDB
    database if it is provided. The current extension is used if a database
    family/key is not specified.

    r([tone]): Default: Indicate ringing to the calling party, even if
    the called party isn't actually ringing. Pass no audio to the calling
    party until the called channel has answered.
        tone - Indicate progress to calling party. Send audio 'tone'
        from indications.conf

    S(x): Hang up the call <x> seconds *after* the called party has
    answered the call.

    s(x): Force the outgoing callerid tag parameter to be set to the
    string <x>.
    Works with the f option.

    t: Allow the called party to transfer the calling party by sending
    the DTMF sequence defined in "features.conf". This setting does not perform
    policy enforcement on transfers initiated by other methods.

    T: Allow the calling party to transfer the called party by sending
    the DTMF sequence defined in "features.conf". This setting does not perform
    policy enforcement on transfers initiated by other methods.

    U(x[^arg[^...]]): 
        x - Name of the subroutine to execute via Gosub
        arg - Arguments for the Gosub routine
    Execute via Gosub the routine <x> for the *called* channel before
    connecting to the calling channel. Arguments can be specified to the Gosub
    using '^' as a delimiter. The Gosub routine can set the variable ${GO
    SUB_RESULT} to specify the following actions after the Gosub returns.
        ${GOSUB_RESULT}: 
            ABORT: Hangup both legs of the call.
            CONGESTION: Behave as if line congestion was
            encountered.
            BUSY: Behave as if a busy signal was encountered.
            CONTINUE: Hangup the called party and allow the
            calling party to continue dialplan execution at the next priority.
            GOTO:[[<context>^]<exten>^]<priority>: Transfer the
            call to the specified destination.
    NOTE: You cannot use any additional action post answer options in
    conjunction with this option. Also, pbx services are run on the peer
    (called) channel, so you will not be able to set timeouts via the TIMEOUT()
    function in this routine.

    u(x): 
        x - Force the outgoing callerid presentation indicator
        parameter to be set to one of the values passed in <x>: 'allowed_
        not_screened' 'allowed_passed_screen' 'allowed_failed_screen' 'allowed'
        'prohib_not_screened' 'prohib_passed_screen' 'prohib_failed_screen'
        'prohib' 'unavailable'
    Works with the f option.

    w: Allow the called party to enable recording of the call by sending
    the DTMF sequence defined for one-touch recording in "features.conf".

    W: Allow the calling party to enable recording of the call by sending
    the DTMF sequence defined for one-touch recording in "features.conf".

    x: Allow the called party to enable recording of the call by sending
    the DTMF sequence defined for one-touch automixmonitor in "features.c
    onf".

    X: Allow the calling party to enable recording of the call by sending
    the DTMF sequence defined for one-touch automixmonitor in "features.c
    onf".

    z: On a call forward, cancel any dial timeout which has been set
    for this call.

URL
    The optional URL will be sent to the called party if the channel
    driver supports it.

[See Also]
Not available
ссылка удалить спам редактировать

ответил 2015-05-27 16:50:48 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

и тут Остапа понесло)))))

Zavr2008 ( 2015-05-28 13:05:57 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2015-05-27 14:12:25 +0400

Просмотрен: 3,320 раз

Обновлен: May 28 '15

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.