PDA

Voir la version complète : Comment appeler une extension depuis l'extérieur



DomoJimbo
18/11/2013, 10h56
Bonjour à tous,

Je débute avec Asterisk... J'ai paramétré Asterisk avec un SIP freephonie, et 2 softphone et ça marche impecc.
Je voulais mettre en place un serveur vocal interactif pour interroger/actionner ma domotique depuis le téléphone lorsque je n'ai pas de connection internet...

Ma question est toute bête: comment appeler directement une extension depuis l'extérieur ?
Par exemple, si je compose 9000 en interne, mon numéro de tel est 09xxxxxxxx
Comment appeler directement le 9000 depuis l'extérieur ??
Est-ce possible ?

Merci pour vos lumières

tanguyd
18/11/2013, 14h01
Je comprend mal. Faut il qu'un numéro publique fasse sonner un poste interne, dans ce cas il faut simplement créer une route entrante.

Si le but de pouvoir composer n'importe quel numéro interne depuis l’extérieur dans avoir plusieurs numéros publique, il faut chercher du coté de "DISA"

DomoJimbo
18/11/2013, 15h09
Je m'exprime mal désolé. J'ai un seul numéro publique du genre 095xxxxxxx.
Je veux qu'un appel vers ce numéro continue à faire sonner normalement mes téléphones...

J'ai suivi le tuto "Asterisk fait le café", donc j'ai ajouté ceci dans mon extension.conf:

exten = 2233,1,Answer()
exten = 2233,n,GotoIf($[${DB(Domotique/Cafe)} = 1]?Actif:PasActif)
exten = 2233,n(Actif),Playback(Off)
exten = 2233,n,AGI(off.agi,A1)
exten = 2233,n,Hangup()
exten = 2233,n(PasActif),Playback(On)
exten = 2233,n,AGI(on.agi,A1)
exten = 2233,n,Hangup()

Dans le contexte interne, mes softphones composent le "2233" et hop ça marche impecc.

Je veux tout simplement "appeler" le "2233" de ma ligne 095xxxxxxx depuis l'extérieur (depuis un GSM ou une autre ligne)
=> est-ce possible ? Comment ? en composant "095xxxxxxx*2233*" ou ""095xxxxxxx#2233#" ??

Une des dernières phrase du tuto "Quel bonheur, d'appeler au bureau pour savoir qu'en arrivant un bon café chaud nous attends" laisse penser que c'est possible, mais comment ?

DomoJimbo
18/11/2013, 15h16
A priori, c'est bien DISA qu'il me faut
"Direct Inward System Access permet l’accès au plan de numérotation interne tout comme si vous aviez un poste téléphonique local ;"

=> Pouvez-vous avoir la gentillesse de diriger vers un tuto/doc qui pourrait m'aider ?

Merci par avance

cedricscha
18/11/2013, 15h55
Hum,

Disa, n'est à priori pas nécessaire pour vous, surtout dans un premier temps.

Pouvez-vous en dire plus sur votre installation ?

Quel Asterisk ? Quel Opérateur ? Comment les appels entrants arrive sur votre Asterisk ?

Ensuite on pourra vous aiguiller afin de faire sonner vos téléphones et pouvoir vous faire appeler de l'extérieur.

asterfeb
19/11/2013, 03h12
Bonsoir,
Pour appeler mon irv Domotique, je teste le numéro de mon portable et j'envoie vers l'IRV, sinon l'appel va vers les Tel.
Salutations


Bonjour à tous,

Je débute avec Asterisk... J'ai paramétré Asterisk avec un SIP freephonie, et 2 softphone et ça marche impecc.
Je voulais mettre en place un serveur vocal interactif pour interroger/actionner ma domotique depuis le téléphone lorsque je n'ai pas de connection internet...

Ma question est toute bête: comment appeler directement une extension depuis l'extérieur ?
Par exemple, si je compose 9000 en interne, mon numéro de tel est 09xxxxxxxx
Comment appeler directement le 9000 depuis l'extérieur ??
Est-ce possible ?

Merci pour vos lumières

DomoJimbo
19/11/2013, 18h19
Pour la version : Asterisk 1.8.13.1~dfsg-1ubuntu2

Mon opérateur est free (freephonie)

Les appels entrants arrivent sur mon asterisk grâce à une route entrante:

[default]
exten => s,1,Ringing
exten => s,2,AGI(/usr/bin/python,"/var/lib/asterisk/agi-bin/monscript.agi")

Je vais sonner mes téléphones, et un script perso capture le numéro de l'appelant pour le logguer dans mon bazar domotique...

Je ne souhaite pas faire comme "asterfeb". En effet, je veux continuer à pouvoir appeler chez moi normalement.
Par contre, j'aimerai également joindre directement le 2233 (ou une autre extension si c'est le bon terme?) de la même ligne, mais directement.

Merci par avance pour votre précieuse aide

DomoJimbo
21/11/2013, 10h06
Mon cas ne vous inspire pas ?!

fastm3
21/11/2013, 23h20
C'est un peu contradictoire , tu veux appeler normalement chez toi mais tu veux aussi pouvoir faire autre chose.

Il y a un moment ou il faut donc dire que tu veux faire l'action 1 ( appel normal ) ou l'action 2:

Plusieurs solutions:
- Plusieurs numeros avec 1 numero dedié à un scenario.
- Identifier ton numero appelant et lance un IVR ou un petit read avec timeout pour rediriger vers l'action 2 dans le dialplan correspondant.
- Lors d'un appel , faire un answer , utiliser Background avec predecroché ou sonnerie fake , par defaut , appel normal ( dial ) apres le message/sonnerie tres court, une touche appuyée rapidement deroutera vers un IVR avec un mot de passe pour y acceder.

Francois.

DomoJimbo
25/11/2013, 12h20
Je vais suivre vos pistes, mais je pense que c'est ma question que je pose mal...

Imaginons que mon numéro publique soit 0912345678.

Je souhaite appeler et faire sonner les téléphones de façon normale en appelant le 0912345678.

De plus, imaginons que mon ivr soit joignable sur l'extension 8000 dans un contexte interne

Je veux pouvoir appeler directement le 8000 depuis l'extérieur

J'imaginais que cela était possible ?? est-ce possible ? comment ?
En appelant le 0912345678#8000 ou qq chose de similaire ???

Est-ce possible ???

DomoJimbo
25/11/2013, 12h37
Si ma question n'a pas de solution...

Comment faire pour tester le numéro appelant et rediriger en fonction ??

On peut faire des expressions régulières sur les appels entrants ??

exten => s_0...

Merci par avance si vous avez des exemples de extensions.conf

DomoJimbo
25/11/2013, 14h15
Je me réponds tout seul...

Je teste le numéro comme ceci:

exten => s,1,GotoIf($["${CALLERID(num)}" = "06xxxxxxxx"]?OK:KO)

ça marche nickel

Si toutefois je pouvais joindre directement une extension depuis l'extérieur je reste intéressé par la solution.

cedricscha
25/11/2013, 20h24
Une possibilité comme énoncée plus haut :


faire une comparaison avec une liste pour savoir si le numéro qui appel est autorisé ou non à gérer la domotique
Si c'est le cas le rediriger vers un message qui lui propose de soit composer le 1 pour joindre normalement la maison
Soit le 2 pour joindre le menu domotique

Et voilà, cela devrait correspondre à ton besoin.

DomoJimbo
26/11/2013, 19h00
Merci pour votre réponse, je suis parti avec cette idée, mais j'ai un soucis.

Je teste le numéro appelant, si c'est un numéro lamba je fais sonner les téléphones, pas de soucis ça marche.

Si c'est mon numéro, je dirige alors vers mon ivr, je veux que 9 m'en fasse sortir et fasse ensuite sonner les téléphones
=> marche pas, lorsque je fais le choix 9 ça me raccroche au nez sans faire sonner !

Je ne vois rien dans les logs qui pourrait me donner une piste.

Pour sortir de mon ivr avec 9, j'ai testé ceci (soit Ringing directement, soit retourner au label KO qui est le branchement où un appelant quelconque arrive... marche pas...)
;exten => 9,1,Ringing
exten => 9,1,Goto(depuis-free,s,KO)

Cela semble s’exécuter correctement vu les logs, mais ça raccroche au lieu de faire sonner les téléphones, pourquoi ???

Log d'un appelant quelconque, tout fonctionne comme je veux:

== Using SIP RTP CoS mark 5
-- Executing [s@depuis-free:1] AGI("SIP/vers-free-00000034", "/usr/bin/python,"/var/lib/asterisk/agi-bin/Asterisk2xPL.agi"") in new stack
-- Launched AGI Script /usr/bin/python
-- <SIP/vers-free-00000034>AGI Script /usr/bin/python completed, returning 0
-- Executing [s@depuis-free:2] GotoIf("SIP/vers-free-00000034", "0?OK:KO") in new stack
-- Goto (depuis-free,s,4)
-- Executing [s@depuis-free:4] Ringing("SIP/vers-free-00000034", "") in new stack
-- Auto fallthrough, channel 'SIP/vers-free-00000034' status is 'UNKNOWN'

Log lorsque j'appelle:

== Using SIP RTP CoS mark 5
-- Executing [s@depuis-free:1] AGI("SIP/vers-free-00000035", "/usr/bin/python,"/var/lib/asterisk/agi-bin/Asterisk2xPL.agi"") in new stack
-- Launched AGI Script /usr/bin/python
-- <SIP/vers-free-00000035>AGI Script /usr/bin/python completed, returning 0
-- Executing [s@depuis-free:2] GotoIf("SIP/vers-free-00000035", "1?OK:KO") in new stack
-- Goto (depuis-free,s,3)
-- Executing [s@depuis-free:3] Goto("SIP/vers-free-00000035", "ivr-domojimbo,s,1") in new stack
-- Goto (ivr-domojimbo,s,1)
-- Executing [s@ivr-domojimbo:1] Answer("SIP/vers-free-00000035", "") in new stack
-- Executing [s@ivr-domojimbo:2] Set("SIP/vers-free-00000035", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10.000
-- Executing [s@ivr-domojimbo:3] AGI("SIP/vers-free-00000035", "googletts.agi,"bienvenu sur le serveur vocal de l'appartement du bonheur",fr,any") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi
-- Playing '/tmp/2ca9a4c757c2b56d71d83d9746c2a1b6' (escape_digits=0123456789#*) (sample_offset 0)
-- <SIP/vers-free-00000035>AGI Script googletts.agi completed, returning 0
-- Executing [s@ivr-domojimbo:4] AGI("SIP/vers-free-00000035", "googletts.agi,"Pour allumer tapez 1",fr,any") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi
-- Playing '/tmp/d4759183e1d614b0e1f92444ab035d43' (escape_digits=0123456789#*) (sample_offset 0)
-- <SIP/vers-free-00000035>AGI Script googletts.agi completed, returning 0
-- Executing [s@ivr-domojimbo:5] AGI("SIP/vers-free-00000035", "googletts.agi,"Pour eteindre tapez 2",fr,any") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi
-- Playing '/tmp/d8de607d7cb459fe33155ea786216a93' (escape_digits=0123456789#*) (sample_offset 0)
-- <SIP/vers-free-00000035>AGI Script googletts.agi completed, returning 0
-- Executing [s@ivr-domojimbo:6] AGI("SIP/vers-free-00000035", "googletts.agi,"Pour sortir tapez 9",fr,any") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi
-- Playing '/tmp/fb10166de1cd36a57af65aa5b7f3784e' (escape_digits=0123456789#*) (sample_offset 0)
-- <SIP/vers-free-00000035>AGI Script googletts.agi completed, returning 0
-- Executing [s@ivr-domojimbo:7] AGI("SIP/vers-free-00000035", "googletts.agi,"Appuyez sur dieze si vous souhaitez r▒▒couter ce message",fr,any") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/googletts.agi
-- Playing '/tmp/b7136cab12555092586884c0978b76e6' (escape_digits=0123456789#*) (sample_offset 0)
-- <SIP/vers-free-00000035>AGI Script googletts.agi completed, returning 0
-- Executing [9@ivr-domojimbo:1] Ringing("SIP/vers-free-00000035", "") in new stack
-- Auto fallthrough, channel 'SIP/vers-free-00000035' status is 'UNKNOWN'

Voici mon extension.conf


[depuis-free]
exten => s,1,agi(/usr/bin/python,"/var/lib/asterisk/agi-bin/monscript.agi")
exten => s,2,GotoIf($["${CALLERID(num)}" = "06xxxxxxxx"]?OK:KO)
exten => s,n(OK),Goto(ivr,s,1)
exten => s,n(KO),Ringing

[ivr]
exten => s,1,Set(TIMEOUT(response)=10)
exten => s,2,agi(googletts.agi,"bienvenu sur le serveur vocal de l'appartement du bonheur",fr,any)
exten => s,3,agi(googletts.agi,"Pour allumer tapez 1",fr,any)
exten => s,4,agi(googletts.agi,"Pour eteindre tapez 2",fr,any)
exten => s,5,agi(googletts.agi,"Pour sortir tapez 9",fr,any)
exten => s,6,agi(googletts.agi,"Appuyez sur dieze si vous souhaitez réécouter ce message",fr,any)
exten => s,7,WaitExten()

exten => 1,1,agi(googletts.agi,"ok j'allume",fr,any)
exten => 1,2,AGI(/usr/bin/python,"/var/lib/asterisk/agi-bin/ON.agi")
exten => 1,1,agi(googletts.agi,"ok j'eteins",fr,any)
exten => 2,2,AGI(/usr/bin/python,"/var/lib/asterisk/agi-bin/OFF.agi")
;exten => 9,1,Ringing
exten => 9,1,Goto(depuis-free,s,KO)
exten => _[3-8#],1,Goto(ivr,s,3)
exten => t,1,Goto(ivr,s,3)

Merci par avance, si quelqu'un peut m'aider