PDA

Voir la version complète : Asterisk et fonction transfer()



mattd
07/02/2013, 16h03
Bonjour à tous,

Me voila confronté à un problème depuis plusieurs jours et j'ai du mal à comprendre ce qu'il se passe.
Je possède un serveur asterisk (ver 1.8) sur lequel j'ai configuré une ligne OVH et plusieurs numéros alias associés configurés en DDi sur ma ligne.
Dans mon dialplan, j'ai laisse la possibilité de mettre en place un transfert d'appel sur mon portable lorsque je mets à jour une variable.
Voici mon dialplan :



[DID_from_sip]
exten => s,1,Noop(Affichage de la redirection : ${CUT(CUT(SIP_HEADER(To),@,1),:,2) })
exten => s,2,Goto(${CUT(CUT(SIP_HEADER(To),@,1),:,2) },s,1)

[0972XXXXXXX]
exten => s,1,GotoIf(${DB_EXISTS(CFIM/04XXXXXXX)}?cfim)
exten => s,n,Dial(SIP/20,20)
exten => s,n,Voicemail(20,su)
exten => s,n,Hangup()

exten => s,n(cfim),Set(temp=${DB(CFIM/04XXXXXXX)})
exten => s,n,Answer()
exten => s,n,Transfer(SIP/${temp}@0972XXXXXXX)
exten => s,n,Hangup

mon trunk sip est configuré de la manière suivante:


[0972XXXXXX]
; abonnement XXXXXX
register => 003397XXXXXX:XXXXXX@sip.ovh.fr/0033972XXXXXX
host = sip.ovh.fr
username = 0033972XXXXX
secret = XXXXXXX
trunkname = Abonnement XXXXXX
context = DID_from_sip
group = null
hasexten = no
hasiax = no
nat = yes
dtmfmode = inband
hassip = yes
registeriax = no
registersip = yes
trunkstyle = voip
fromdomain = sip.ovh.fr
fromuser =
authuser = 0033972XXXXXX
insecure = port,invite
disallow = all
allow = alaw,ulaw
qualify = yes


Mon problème est le suivant :
Si j'appelle le numéro de ma ligne, le transfert se fait correctement et je n'ai aucun souci. Le dialplan simplifié est le suivant :
Par contre si j'utilise le meme dialplan sur non pas la ligne mais sur un des numéros rattachés, mon transfert ne se fait pas et j'ai les erreurs suivantes :



-- Executing [s@DID_from_sip:1] NoOp("SIP/097232XXXXX-0000002c", "Affichage de la redirection : 04XXXXXXX") in new stack
-- Executing [s@DID_from_sip:2] Goto("SIP/097232XXXX-0000002c", "04669XXXX,s,1") in new stack
-- Goto (04669XXXX,s,1)
-- Executing [s@0466XXXXX:1] Answer("SIP/097XXXXX-0000002c", "") in new stack
-- Executing [s@0466XXXXX:2] Transfer("SIP/0972XXXXX-0000002c", "SIP/0687XXX@0972XXXXX") in new stack
[Feb 6 19:16:49] NOTICE[18072]: chan_sip.c:22417 handle_request_notify: Got unknown code '480' in NOTIFY in response to REFER.
[Feb 6 19:16:49] NOTICE[18072]: chan_sip.c:22423 handle_request_notify: Transfer failed. Sorry. Nothing further to do with this call
-- Executing [s@0466XXXXX:3] Hangup("SIP/0972XXXXXX-0000002c", "") in new stack
== Spawn extension (046XXXXXXX, s, 3) exited non-zero on 'SIP/0972XXXXXXX-0000002c'


Et les traces SIP(j'appelle d'un 06 vers un 04 qui redirige sur un autre 006)


<--- SIP read from UDP:91.121.129.20:5060 --->
SIP/2.0 202 Accepted
Call-ID: 16187-TF-003dc192-1501132e6@sip.ovh.fr
Contact: <sip:10.7.1.49:5060>
CSeq: 102 REFER
From: <sip:04XXXXXX@10.7.1.49;user=phone>;tag=as52449262
Record-Route: <sip:91.121.129.20:5060;transport=udp;lr>
To: "06XXXXXX" <sip:06XXXXXXX@sip.ovh.fr;user=phone>;tag=16187-QK-003dc193-2a19e59b2
Via: SIP/2.0/UDP 192.168.162.2;received=78.221.127.66;rport=45900;b ranch=z9hG4bK22a1ce52
Server: Cirpack/v4.42a (gw_sip)
Content-Length: 0

<------------->
--- (10 headers 0 lines) ---

<--- SIP read from UDP:91.121.129.20:5060 --->
NOTIFY sip:s@192.168.162.2 SIP/2.0
Call-ID: 16187-TF-003dc192-1501132e6@sip.ovh.fr
Contact: <sip:10.7.1.49:5060>
Content-Type: message/sipfrag;version=2.0
CSeq: 4099756 NOTIFY
From: "06XXXXXXX" <sip:06XXXXXXX@sip.ovh.fr;user=phone>;tag=16187-QK-003dc193-2a19e59b2
Max-Forwards: 29
Record-Route: <sip:91.121.129.20:5060;lr>
To: <sip:04XXXXXXXX@10.7.1.49;user=phone>;tag=as52449262
Via: SIP/2.0/UDP 91.121.129.20:5060;branch=z9hG4bK-UVPN-63227ac2-2deaadae
Event: refer
Reason: q.850;cause=21
Subscription-State: terminated;reason=noresource;expires=0;retry-after=0
User-Agent: Cirpack/v4.42a (gw_sip)
Content-Length: 30

SIP/2.0 480 Release received
<------------->
--- (15 headers 1 lines) ---
[Feb 7 00:33:18] NOTICE[18072]: chan_sip.c:22417 handle_request_notify: Got unknown code '480' in NOTIFY in response to REFER.
[Feb 7 00:33:18] NOTICE[18072]: chan_sip.c:22423 handle_request_notify: Transfer failed. Sorry. Nothing further to do with this call



Ca ressemble à un problème d'autentification ou autre mais impossible d'effectuer ce transfert sur les numéros rattachés. Quelqu'un aurait-il une idée ?

Merci par avance

fastm3
07/02/2013, 18h00
Pas creusé mais utilise dial tout simplement au lieu de transfer.
Fastm3.

mattd
07/02/2013, 19h07
Merci pour ta réponse fast3m

Je n'utilise pas la fonction Dial pour plusieurs raisons. La première c'est que j'ai surement un problème de port RTP et que je n'ai pas de son ni d'un coté ni de l'autre. La deuxième c'est que la solution à base de transfert fonctionnait bien avant jusqu'à ce qu'OVH fasse des modifications sur son réseau.

Je viens tout de même de réessayer avec la fonction dial et j'ai toujours ce problème de son.

:gratgrat:

mattd
07/02/2013, 19h46
Bon je viens d'avancer et réussir à transferer ma ligne mais la solution ne me plait pas du tout, c'est un peu du bricolage...
Je rajouter un playback(silence/1) avant le dial pour régler ce problème de son... mais bon...

Si vous avez une autre solution à me proposer sans que j'ai à ouvrir mes ports RTP sur mon firewall, vous êtes les bienvenus !

fastm3
07/02/2013, 20h33
Bon je viens d'avancer et réussir à transférer ma ligne mais la solution ne me plait pas du tout, c'est un peu du bricolage...
Je rajouter un playback(silence/1) avant le dial pour régler ce problème de son... mais bon...

Si vous avez une autre solution à me proposer sans que j'ai à ouvrir mes ports RTP sur mon firewall, vous êtes les bienvenus !
Si tu n'ouvres pas tes ports rtps définis dans rtp.conf , je ne m’étonne pas des pbs de sons.
Fastm3.

mattd
15/02/2013, 18h16
Effectivement, en dehors du problème que ça a pu me créer (et qui est résolu) je n'ai pas d'utilité à ouvrir mes ports RTP. Enfin on va dire que ça me simplifie la tache. Je monte en général mes archi sur deux liens ADLS avec un firewall qui gère tout ça. Ca me permet de mettre en place des solutions à bas coût avec un minimum de sécurité. Pour gérér la redirection des ports RTP il faudrait également que je configure la haute dispo la dessus, et ce n'est pas impossible mais comme je te l'ai dit, je n'en ai pas vraiment l'utilité, tout fonctionne sans...
En tout cas, merci pour tes réponses, tu m'as orienté vers la solution... :)

A+