PDA

Voir la version complète : Problème au niveau de la limitation des durées d'appel



pepe
29/11/2011, 18h26
Bonsoir, je suis nouveau sur ce forum et j'aimerais que vous m'aidiez à résoudre un problème.

Après de nombreuse recherche sur google je ne trouve pas la solution à mon problème.

J'aimerais limiter les durées d'appels entre mes différents clients de 2minutes au bout des quelles l'appel serait interrompu. Mais je n'y arrive pas, j'ai suivi quelque tuto mais étant mal expliqués je n'ai pas compris, et je suis donc bloqué.
Je sais qu'il vaut apporter des modifications au fichiers extensions.conf mais je ne sais pas lesquelles, si vous pouviez m'aider je vous en serez reconnaissant.

Reaper
29/11/2011, 19h23
Utilise option L:


[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.

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 of the *calling*
channel to be set as the extension associated with the channel using a
dialplan 'hint'. For example, some PSTNs do not allow CallerID to be set
to anything other than the number assigned to the caller. If <x> is
provided, though, then this option behaves quite differently. Any outgoing
channel created will have its connected party information set to <x>

F([[context^]exten^]priority): When the caller hangs up, transfer
the called party to the specified destination and continue execution at
that location.

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

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 digit.

H: Allow the calling party to hang up by hitting the '*' DTMF digit.

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

I: Asterisk will ignore any connected line update requests or
redirecting party update requests it may receiveon 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.

pepe
30/11/2011, 10h34
Merci à toi Reaper de m'avoir répondu, mais le fait est que je débute dans la VoIP et je ne sais pas ce qu'est l'option L.
J'ai lu le commentaire en entier mais je ne l'ai pas compris d'autant plus qu'il est en anglais.
Pourrais-tu m'éclairer là-dessus s'il te plaît.

Reaper
30/11/2011, 10h49
Dial(SIP/13213524@fournisseur|60|L(7200000::))
Ce dial va limiter l'appel a 7200000 millisecondes.

Essaye de comprendre les options:

L(x[:y][:z]): Limit the call to 'x' ms, warning when 'y' ms are left, repeated every 'z' ms) Only 'x' is required, 'y' and 'z' are optional.

Optional variables:

* LIMIT_PLAYAUDIO_CALLER - yes|no (default yes) - Play sounds to the caller.
* LIMIT_PLAYAUDIO_CALLEE - yes|no - Play sounds to the callee.
* LIMIT_TIMEOUT_FILE - File to play when time is up.
* LIMIT_CONNECT_FILE - File to play when call begins.
* LIMIT_WARNING_FILE - File to play as warning if 'y' is defined. If LIMIT_WARNING_FILE is not defined, then the default behaviour is to announce ("You have [XX minutes] YY seconds").

pepe
30/11/2011, 12h20
Alors voilà avec l'explication que tu m'as donné et quelque recherche sur google, j'ai modifié mon fichier extensions.conf que voici:

[general]
static=yes
writeprotect=no
dialoptions=tT

[sip]
exten =>1000,1,Dial(SIP/1000,20,tr)
exten =>1000,2,Dial(SIP/1100,20,tr)
exten =>1000,3,Dial(SIP/1000|60|L(30000:15000:5000))
exten =>1000,4,Ringing(5)
exten =>1000,5,Answer
exten =>1000,6,Hangup(16)

[sip]
exten =>1100,1,Dial(SIP/1100,20,tr)
exten =>1100,2,Dial(SIP/1100|60|L(30000:15000:5000))

[sip]
exten =>1200,1,Dial(SIP/1200,20,tr)
exten =>1200,2,Dial(SIP/1100,20,tr)
exten =>1200,3,Dial(SIP/1200|60|L(30000:15000:5000))
exten =>1200,4,Ringing(5)
exten =>1200,5,Answer
exten =>1200,6,Hangup(16)

[sip]
exten =>1300,1,Dial(SIP/1300,20,tr)
exten =>1300,2,Dial(SIP/1100,20,tr)
exten =>1300,3,Dial(SIP/1300|60|L(30000:15000:5000))
exten =>1300,4,Ringing(5)
exten =>1300,5,Answer
exten =>1300,6,Hangup(16)

En gras se sont les lignes que j'ai ajoutées.

Là normalement lorsque je passe un appel au bout de 15 secondes on me prévient que l'appel va être coupé, on me le rappel toute les 5secondes et au bout de 30 secondes l'appel est arrêté. Mais rien ne se passe lorsque je passe un appel.

Reaper
30/11/2011, 12h25
Oui mais est ce que tu as le fichiers qui sont utilisables ?
Lis ces parties en détail:

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.

pepe
30/11/2011, 12h45
Si j'ai bien compris je dois modifier ces parties, mais dans quel fichier je peux les trouver ??

ffossard
30/11/2011, 20h27
non, dans le dialplan, avant le dial, vous devez définir ces variables ( ${LIMIT_PLAYAUDIO_CALLER}: et autres...) avec les valeurs indiquées en dessous (oui/non, un nom de fichier audio, etc..)