PDA

Voir la version complète : La command Record n'enregistre que 60 secondes



guiguizmo
14/09/2015, 10h26
Bonjour,

Je suis face a un problème. Dans mon extension j'appelle la commande Record :

exten => s,n,Record(${sound_path}record_file:wav,0,0,k)

Tout se passe bien, l'enregistrement s'effectue bien sauf que au bout de 60 seconde, l'enregistrement s’arrête tout seul. Je souhaite faire des enregistrements longs et du coup c'est un gros problème.

Est ce que quelqu'un voit d’où pourrait venir ce problème ?

Merci.

Reaper
14/09/2015, 14h15
Bonjour, la doc nous montre que

Record(filename.format[,silence[,maxduration[,options]]])

Il est ou ton maxduration ici ?

exten => s,n,Record(${sound_path}record_file:wav,0,0,k)

guiguizmo
14/09/2015, 14h25
Mon maxduration c'est 0, dans la doc il est dit que si on met rien ou 0 alors il n'y a pas de durée maximale. Au début j'ai testé avec rien, mais ça ne marche pas non plus, ça coupe à 60 secondes.

Reaper
14/09/2015, 14h56
Mon maxduration c'est 0, dans la doc il est dit que si on met rien ou 0 alors il n'y a pas de durée maximale. Au début j'ai testé avec rien, mais ça ne marche pas non plus, ça coupe à 60 secondes.

Je ne vois pas cette info dans la doc de module, et si tu met par exemple 30 Min ?

guiguizmo
14/09/2015, 15h43
C'est écrit sur cette page : http://www.voip-info.org/wiki/view/Asterisk+cmd+Record

J'ai essayé avec 30min (1800) et j'obtiens le même résultat ...

quintana
14/09/2015, 19h27
Il faut regarder la doc sur le wiki d'Asterisk wiki.asterisk.org pour être sûr ou sinon core show application record. Montre nous des logs de quand ça exécute et arrêtes si possible. Tu veux faire quoi exactement ?

quintana
14/09/2015, 19h34
J'ai fait le test :


[Sep 14 13:30:42] -- Executing [1236@default:1] Record("SIP/c4i2zd-00000000", "/tmp/record_file:wav,0,0,k") in new stack
[Sep 14 13:30:43] == Manager 'xivo_cti_user' logged on from 127.0.0.1
[Sep 14 13:30:43] -- <SIP/c4i2zd-00000000> Playing 'beep.slin' (language 'fr_FR')
[Sep 14 13:30:43] > 0x2c63810 -- Probation passed - setting RTP source address to 192.168.32.41:5004
[Sep 14 13:30:45] == Manager 'xivo_monit_user' logged on from 127.0.0.1
[Sep 14 13:30:50] == Manager 'xivo_monit_user' logged off from 127.0.0.1
[Sep 14 13:32:06] == Spawn extension (default, 1236, 1) exited non-zero on 'SIP/c4i2zd-00000000'

J'ai raccroché après plus d'une minute.

Mon dialplan :


exten = 1236,1,Record(/tmp/record_file:wav,0,0,k)
same = n,Hangup()

Ma version d'Asterisk : 13.5

guiguizmo
14/09/2015, 20h54
Merci pour ta réponse quintana, je te poste des logs demain.

jean
14/09/2015, 20h56
C'est écrit sur cette page : http://www.voip-info.org/wiki/view/Asterisk+cmd+Record

J'ai essayé avec 30min (1800) et j'obtiens le même résultat ...

à noter qu'il y a un paramètre silence, qui fait sortir quand on détecte plus de x secondes de silence (s'assurer que l'audio marche dans les deux sens) et vérifier la variable RECORD_STATUS pour savoir ce qui a causé la sortie

J

guiguizmo
14/09/2015, 21h22
Tout comme la variable maxduration, la variable silence, si elle est définie à 0, ne prend pas en compte le silence. Ou puis je vérifier la variable RECORD_STATUS ?

jean
14/09/2015, 21h32
rajouter
exten h,1,Verbose(1,recordstatus=${RECORD_STATUS})

ou l'insérer dans l'extension h si elle existe dejà

guiguizmo
14/09/2015, 21h47
Voila les logs lorsque j'effectue un appel (j'ai volontairement masqué les adresses IP et numéros de téléphone) :


-- Executing [s@ivr-recording:4] Record("SIP/xx.xx.xx.xx-0000006d", "/var/lib/asterisk/sounds/records/recorded/test_20150914_213018:wav,0,1800,k") in new stack
-- <SIP/xx.xx.xx.xx-0000006d> Playing 'beep.gsm' (language 'fr')

Lorsque ca coupe :


<--- SIP read from UDP:xx.xx.xx.xx:5070 --->
BYE sip:+33XXXXXXXXX@xx.xx.xx.xx:5070 SIP/2.0
Via: SIP/2.0/UDP xx.xx.xx.xx:5070;rport;branch=z9hG4bK19HSm38Qy39Uj
Max-Forwards: 70
From: "+33XXXXXXXXX" <sip:+33XXXXXXXXX@xx.xx.xx.xx>;tag=rm99rHH7FB81N
To: <sip:+33XXXXXXXXX@xxx.com>;tag=as33909228
Call-ID: 36d1-4c7-814201519-fsc1.gwin
CSeq: 80793471 BYE
Contact: <sip:mod_sofia@xx.xx.xx.xx:5070>
User-Agent: Sewan_TRUNKFSC1
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, NOTIFY
Supported: path, replaces
Reason: Q.850;cause=16;text="NORMAL_CLEARING"
Content-Length: 0

<------------->
--- (13 headers 0 lines) ---
Sending to xx.xx.xx.xx:5070 (NAT)
Scheduling destruction of SIP dialog '36d1-4c7-814201519-fsc1.gwin' in 32000 ms (Method: BYE)

<--- Transmitting (NAT) to xx.xx.xx.xx:5070 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP xx.xx.xx.xx:5070;branch=z9hG4bK19HSm38Qy39Uj;recei ved=xx.xx.xx.xx;rport=5070
From: "+33XXXXXXXXX" <sip:+33XXXXXXXXX@xx.xx.xx.xx>;tag=rm99rHH7FB81N
To: <sip:+33XXXXXXXXX@xxx.com>;tag=as33909228
Call-ID: 36d1-4c7-814201519-fsc1.gwin
CSeq: 80793471 BYE
Server: Asterisk PBX 13.3.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Length: 0


Voila la variable RECORD_STATUS :


-- Executing [h@ivr-recording:1] Verbose("SIP/xx.xx.xx.xx-0000006f", "1,recordstatus=HANGUP") in new stack
recordstatus=HANGUP

A noter que j'ai dans la CLI d'asterisk, souvent ce genre de message qui s'affiche, cela a t il un rapport :


---
Retransmitting #X (NAT) to xx.xx.xx.xx:5070:
SIP/2.0 404 Not Found
Via: SIP/2.0/UDP xx.xx.xx.xx:5070;branch=z9hG4bK-1b270b3175c078e6eb086c3300abac68;received=xx.xx.xx .xx;rport=5070
From: 8966<sip:8966@xx.xx.xx.xx>;tag=6f2acc6d
To: 00972598549491<sip:00972598549491@xx.xx.xx.xx>;tag=as56148f85
Call-ID: 1b270b3175c078e6eb086c3300abac68
CSeq: 1 INVITE
Server: Asterisk PBX 13.3.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Length: 0

J'en ai 10 (Retransmitting #X ou X va de 1 à 10) et ensuite j'ai ce message :


[Sep 14 21:37:58] WARNING[28098]: chan_sip.c:3996 retrans_pkt: Retransmission timeout reached on transmission 77afa89e2e7513b99b8491287c91b5cb for seqno 1 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 32000ms with no response
Really destroying SIP dialog '77afa89e2e7513b99b8491287c91b5cb' Method: INVITE

Pour info ma version d'asterisk est 13.3

jean
14/09/2015, 23h10
ok, donc la raison de l'arrêt de la commande est HANGUP... en regardant la doc (core show application record), on a:
If the user hangs up during a recording, all data will be lost and the application will terminate.

Donc, c'est déjà du bol que t"ai les 60 secondes.....


pour les messages d'erreur, ce sont des pbm réseau, plutot génants, qui font que asterisk coupe rapidement la comm... au bout de 60 secondes.... si tu résouds ça, d'un coup ca ira mieux !

Il y a deux flux entre asterisk et le serveur, le flux rtp et le flux sip - le flux sip une fois la comm établie est beacoup plus discret, un paquet de temps en temps. il y a surement entre ton serveur et le client un firewall qui ferme les ports udp sip au bout d'une tempo , et qui ne permet plus aux paquets envoyés d'arriver (au client) ou de revenir (au serveur)

guiguizmo
14/09/2015, 23h29
C'est ça qui est bizarre, je ne raccroche pas donc je ne comprend pas d'ou vient ce HANGUP.

Est ce que tu es en train de dire que les messages d'erreurs (Retransmitting) sont liés au fait que le record se coupe en 60 secondes ? Dans mon IVR j'ai des timeout qui permettent de répéter un message si rien n'est saisi sur les touches du téléphone, et si je laisse tourner en boucle ça peut durer des heures. Je veux dire par la que ma comm' n'est pas coupée au bout de 60 secondes. Je précise d'ailleurs que c'est vraiment mon Record qui dure 60 secondes, tout ce qui se passe avant peut durer très longtemps ...

jean
14/09/2015, 23h44
c'est dans l'autre sens - il y a des pbm réseau, donc ca coupe au bout de 60 secondes

guiguizmo
14/09/2015, 23h54
Mais pourquoi juste quand il y a un record ?

jean
15/09/2015, 00h32
Ca doit le faire tout le temps a priori. Mais en tout cas c'est le pbm réseau qui cause la coupure

guiguizmo
15/09/2015, 00h37
Pour info, les Retransmitting qui s'enchainent interviennent après ceci :


Call from '' (23.239.66.250:5076) to extension '00972598549491' rejected because extension not found in context 'default'.

En cherchant un peu, j'ai vu qu'il pourrait s'agir de tentative de piratage (passer des appels vers l'étranger). Cela n'aurait donc pas de rapport avec mon Record qui n'enregistre que 60 secondes ... ?

Du coup retour a la case départ, d’où vient mon problème de Record ...

jean
15/09/2015, 02h21
C'est effectivement du piratage. Securise ton asterisk avant tout. Cf ma signature

guiguizmo
15/09/2015, 08h20
Je vais lire ça attentivement aujourd'hui (j'ai commencé un peu hier soir).

Du coup pour mon problème de Record ... une idée ?

guiguizmo
15/09/2015, 11h17
Voila, ça à l'air de fonctionner en ayant suivi ce tuto : https://blog.ls20.com/securing-your-asterisk-voip-server-with-iptables/#optionalrules

Par contre j'ai du virer ces lignes dans iptables :


:PREROUTING ACCEPT [0:0]

et


# IMPORTANT: Replace "YOUR_HOSTNAME.no-ip.com" with the dynamic IP hostname you have set up!
-A PREROUTING -i eth+ -m recent --update --name MYSIP -j ACCEPT
-A PREROUTING -i eth+ -p tcp --dport 5060:5082 -m string --string "sip:YOUR_HOSTNAME.no-ip.com" --algo bm --icase -j NEWSIP
-A PREROUTING -i eth+ -p udp --dport 5060:5082 -m string --string "sip:YOUR_HOSTNAME.no-ip.com" --algo bm --to 1500 --icase -j NEWSIP
-A PREROUTING -i eth+ -m recent --update --name BADSIP -j DROP
-A PREROUTING -i eth+ -p tcp --dport 5060:5082 -j TCPSIP
-A PREROUTING -i eth+ -p udp --dport 5060:5082 -j UDPSIP

Car je n'ai pas réussi à faire fonctionner mon serveur avec ça. J'ai essayé en créant un sous domaine en A pointant vers l'ip de mon serveur mais il ne se passait rien dans la CLI Asterisk. Est ce que j'ai bien configuré le truc ? Est ce qu'il faut mettre l'ip de mon serveur ou est hébergé Asterisk ou bien l'ip de mon fournisseur de compte SIP ?

Merci.

Reaper
15/09/2015, 12h12
Bonjour, je vais te donner un exemple de pare feux générique avec un mini script.

#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -s 127.0.0.1 -j ACCEPT
#Mettre les adresses ICI
/sbin/iptables -A INPUT -s 111.111.254.0/16 -j ACCEPT

#Chaine log pour voir ce qui est bloque.

/sbin/iptables -N LOGGING
/sbin/iptables -A INPUT -j LOGGING
/sbin/iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
/sbin/iptables -A LOGGING -j DROP

Avec ce script tu peux voir dans les messages ou syslog les DROP par iptables, pratique.


Ce qui concerne HANGUP, effectue un trace sip pour voir qui raccroche et comment. (core set sip debug ...)

guiguizmo
15/09/2015, 12h43
Je n'ai plus de problème de HANGUP en ayant mis a jour les iptables grâce au lien que j'ai mentionné.

Mais du coup mon problème maintenant c'est plus le fait que j'ai enlevé le PREROUTING et que j'aimerais bien que tout fonctionne comme dans le tutoriel ...

guiguizmo
15/09/2015, 14h13
Bon je fais face a un nouveau problème. Comme je vous l'ai expliqué, désormais je peux faire un Record() qui peut durer très longtemps.

Mais à partir de plus de 3 min d'enregistrement, ou 4 affichage comme ça dans la CLI :


Reliably Transmitting (NAT) to xx.xx.xx.xx:5060:
OPTIONS sip:xx SIP/2.0
Via: SIP/2.0/UDP xx.xx.xx.xx:5070;branch=z9hG4bK14d7748a;rport
Max-Forwards: 70
From: "asterisk" <sip:xx@xx.xx.xx.xx:5070>;tag=as4e976525
To: <sip:xx>
Contact: <sip:xx@xx.xx.xx.xx:5070>
Call-ID: 477b5ff21619a2117b6967dc51dd97b9@xx.xx.xx.xx:5070
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 13.3.0
Date: Tue, 15 Sep 2015 12:10:47 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Length: 0


---

<--- SIP read from UDP:xx.xx.xx.xx:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP xx.xx.xx.xx:5070;branch=z9hG4bK14d7748a;rport=5070
From: "asterisk" <sip:xx@xx.xx.xx.xx:5070>;tag=as4e976525
To: <sip:xx>;tag=c7B1DDFS8v2cS
Call-ID: 477b5ff21619a2117b6967dc51dd97b9@xx.xx.xx.xx:5070
CSeq: 102 OPTIONS
Contact: <sip:xx.xx.xx.xx>
User-Agent: Sewan_TRUNKFSC1
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, NOTIFY
Supported: path, replaces
Allow-Events: talk, hold, conference, refer
Content-Length: 0

(j'ai ce genre de message toute les minutes)

Et bien lorsque je raccroche, l'évènement hangup (exten => h,1, ...) n'est plus détecté ... est ce qu'il y a une sorte de timeout quelque part qui détecte que rien ne se passe et qu'un bout d'un certain temps il désactive l'évènement hangup ?

jean
15/09/2015, 14h47
c'est toujours le meme problème.... un firewall se ferme dans le chemin, les acquittements des paquets de controle SIP asterisk ne sont plus reçu par le serveur, il commence à les retransmettre puis coupe

guiguizmo
15/09/2015, 14h56
Alors c'est un problème de mon coté (sur mon serveur dédié ou Asterisk est installé) ou du coté de mon fournisseur de trunk SIP ?

jean
15/09/2015, 15h14
ben, sans les @ ip, faut une boule de cristal... en gros, c'est entre ton serveur et l'ip qui est indiquée quand asterisk dit retransmitting.....

quelle est ta conf réseau ? un modem/routuer (modèle ?), asterisk en lan ? ou autre ? et les clients sur le lan ou wan ?

guiguizmo
15/09/2015, 15h24
Ma conf c'est Asterisk installé sur un serveur dédié OVH, donc niveau routeur j'en sais pas trop ...

jean
15/09/2015, 15h44
ca c'est plutot bien.... et ton client qui appelle en sip ? essaie de mettre dans son firewall + nat l'@ du serveur + port 5060 => l'ip du client

guiguizmo
15/09/2015, 15h48
Alors en fait, j'appelle depuis mon téléphone perso mon SVI donc je comprend pas trop dans quel firewall je dois faire des modifs ...

jean
15/09/2015, 16h01
qui est connecté comment au svi ? via un numéro public et un compte sip ? a qui appartient l'ip quand le message retransmitting apparait ?

guiguizmo
15/09/2015, 20h26
Alors en gros :

- J'ai un serveur dédié OVH sur lequel est installé Asterisk
- J'ai configuré Asterisk (sip.conf) pour se connecter à un trunk SIP fournit par un prestataire
- J'ai des SVI, quand j'appelle un numéro depuis mon tel ou n'importe quel autre tel, ça effectue plusieurs actions (extensions.conf)

Il me semble que l'ip est celle de mon prestataire.