PDA

Voir la version complète : Ivr freephonie besoin d'un peu de lumière



Thomas44
16/01/2015, 17h25
Bonjour,

J'aurais besoin d'un éclaircissement pour faire un IVR !

J'ai donc ma configuration freephonie, qui me permet de passer des appels entrant et sortant, seulement je voudrais mettre en place un IVR mais je ne vois pas du tout comment faire à partir du fichier extensions.conf, et des contextes.

Mon fichier extensions.conf


[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1
trunk_1= SIP/freephonie

[internal]
ignorepat => 9
ignorepat => 0
include => default
include => outbound-free
include => fromfree

[incoming]
exten => s,1,Ringing
exten => s,n,Dial(SIP/101,10)
exten => s,n,Congestion

[outbound-free]
exten => _X.,1,Dial(SIP/freephonie_outbound/${EXTEN})
exten => _X.,2,Congestion

[fromfree]
;exten => s,1,Dial(SIP/102&SIP/101,10)

exten=>101,1,ringing(1)
exten=>101,2,Answer
exten=>101,3,Dial(SIP/101,30)
exten=>101,4,Hangup

exten=>102,1,ringing(1)
exten=>102,2,Answer
exten=>102,3,Dial(sip/102,30)
exten=>102,4,Hangup
exten=>95,1,VoicemailMain(95)


J'ai déjà essayer de faire des configurations par moi même mais j'avais toujours des messages d'erreurs alors je me tourne vers vous en espérant que vous pourriez me donner des conseils

Ps: J'utilise google TTS

Merci pour tout aide que vous pourrez me donner :)

fastm3
16/01/2015, 23h46
Comment faire un IVR ? On ne peut pas repondre a ce genre de question bien trop large.
Il y a quelques bouquins qu'il faut lire pour pouvoir avoir les bases permettant ensuite de progresser. Et si en le relisant, ca n'est pas evident pour toi, il faut le relire et repratiquer les exercices rebarbatifs.
"Asterisk: The Definitive Guide, 4th Edition", "The asterisk cookbook" sont des bouquins qui permettent de démarrer assez "rapidement". Il existe quelques bouquins francophones
Apres quand tu auras une question precise , montre toujours ce que tu as fait, indique ce que tu aimerais faire, et communique l'erreur rencontrée.
Quelqu'un pourra peut etre alors t'aider.
On trouve sans problème des exemples d"IVR simples sur internet mais ca peut etre tres consommateur en temps. Le bouquin physique pour demarrer au moins est souvent pas mal je trouve.
Cheers !
Francois.

Thomas44
19/01/2015, 09h26
Comment faire un IVR ? On ne peut pas repondre a ce genre de question bien trop large.
Il y a quelques bouquins qu'il faut lire pour pouvoir avoir les bases permettant ensuite de progresser. Et si en le relisant, ca n'est pas evident pour toi, il faut le relire et repratiquer les exercices rebarbatifs.
"Asterisk: The Definitive Guide, 4th Edition", "The asterisk cookbook" sont des bouquins qui permettent de démarrer assez "rapidement". Il existe quelques bouquins francophones
Apres quand tu auras une question precise , montre toujours ce que tu as fait, indique ce que tu aimerais faire, et communique l'erreur rencontrée.
Quelqu'un pourra peut etre alors t'aider.
On trouve sans problème des exemples d"IVR simples sur internet mais ca peut etre tres consommateur en temps. Le bouquin physique pour demarrer au moins est souvent pas mal je trouve.
Cheers !
Francois.

D'accord et bien je vais me renseigner dans ce cas merci ! :)

Thomas44
19/01/2015, 11h58
Me revoila,

Donc j'ai lu un tas de chose pour la création d'un ivr j'ai même suivi un très bon tutorial cependant j'ai un message d'erreur, et sous verbose il ne m'indique rien de plus...

Peut-être auriez vous une idée sur le message


Unable to write frametype: 2

olppp
19/01/2015, 13h14
vérifie le format de tes fichiers de messages

Thomas44
19/01/2015, 13h16
vérifie le format de tes fichiers de messages

C'est à dire au niveau du fichier sip.conf, tout ce qui concerne ulaw, alaw... ?

Thomas44
20/01/2015, 10h57
Bonjour,

J'ai donc cherché sur le net afin de me faire mon ivr a partir de googletts et j'ai un message d'erreur qui je pense m'empêche de faire fonctionner, si quelqu'un aurait une solutions ou verrait une chose que je n'ai pas vu.

Le message d'erreur :

chan_sip.c:22753 handle_request_invite: Call from '0950220936' (212.27.52.5:5060) to extension 's' rejected because extension not found in context 'default'.

Mon fichier sip.conf :


[general]
realm=freephonie.net
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
disallow=all
allow=speex
allow=ulaw
allow=ilbc
allow=alaw
allow=gsm
register => 09xxxxxx:xxxxx@freephonie.net
defaultexpirey=1800
dtmfmode=auto

[freephonie_outbound]
type=peer
allow=all
host=freephonie.net
secret=xxxx
fromuser=095xxxx
username=095xxxxx
dtmfmode=inband
qualify=yes
fromdomain=freephonie.net
Directmedia=no
defaultexpirey=1800
insecure=port,invite

[freephonie-inbound]
type=peer
context=fromfree
host=freephonie.net
username=095xxxxx
fromuser=095xxxxxx
secret=xxxxxxx
fromdomain=freephonie.net
qualify=yes
allow=all
Directmedia=no
nat=yes

[101]
type=friend
callerid= x-lite <101>
host=dynamic
port=5060
authuser=101
fromuser=101
secret=101
nat=yes
allow=all
directmedia=no
qualify=yes
context=internal

[102]
type=friend
callerid= gigaset <102>
host=dynamic
secret=102
port=5060
authuser=102
fromuser=102
directmedia=no
qualify=yes
nat=yes
allow=all
context=internal


Extensions.conf


[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1
trunk_1= SIP/freephonie


[internal]
ignorepat => 9
ignorepat => 0
include => default
include => outbound-free
include => fromfree

[incoming]
exten => s,1,Ringing
exten => s,n,Dial(SIP/101,10)
exten => s,n,Congestion

[outbound-free]
exten => _X.,1,Dial(SIP/freephonie_outbound/${EXTEN})
exten => _X.,2,Congestion

[fromfree]
exten => 095xxxxx,1,Goto(ivr,55,1)
exten => s,1,Dial(SIP/102&SIP/101,10)

[default]
exten=>101,1,ringing(1)
exten=>101,2,Answer
exten=>101,3,Dial(SIP/101,30)

exten=>102,1,ringing(1)
exten=>102,2,Answer
exten=>102,3,Dial(sip/102,30)
exten=>102,4,Hangup
exten=>95,1,VoicemailMain(95)

exten => 55,1,Answer()
exten => 55,2,Set(TIMEOUT(response)=10)
exten => 55,3,agi(googletts.agi,".............!",fr,any)
exten => 55,4,agi(googletts.agi,"..........?",fr,any)
exten => 55,5,agi(googletts.agi,".........",fr,any)
exten => 55,6,agi(googletts.agi,".........",fr,any)
exten => 55,7,agi(googletts.agi,"........",fr,any)
exten => 55,8,WaitExten()

exten => 1,1,Goto(101,1)
exten => 2,1,Goto(102,1)

J'espère que quelqu'un pourra me donner un coup de pouce, pour tout autre information n'hésiter pas à me demander je reste à vôtre dispositions.

Merci d'avance ;)

olppp
20/01/2015, 13h59
[general]
realm=freephonie.net


realm = my realm (Change authentication realm from asterisk (default) to your own. Requires Asterisk v1.x)

realm = ton serveur | ton domain ! pas celui d'un fournisseur

Thomas44
20/01/2015, 15h08
realm = ton serveur | ton domain ! pas celui d'un fournisseur

J'ai changer j'ai mis mon domaine mais sa ne change rien j'ai toujours le même problème :/

jean
20/01/2015, 15h28
il n'y a pas de directive context dans la definition de freephonie, donc ca part sur default, qui est vide, d'ou l'erreur

ajoute
context=incoming dans freephonie-inbound (et freephonie-outbound au cas ou ca marche pas)

Thomas44
20/01/2015, 15h50
il n'y a pas de directive context dans la definition de freephonie, donc ca part sur default, qui est vide, d'ou l'erreur

ajoute
context=incoming dans freephonie-inbound (et freephonie-outbound au cas ou ca marche pas)

Bon du coup merci Jean ! j'ai plus le message d'erreur mais du coup quand j’appelle mon 09 j'ai pas mon ivr :/

jean
20/01/2015, 16h12
ces instructions:

exten => s,1,Ringing
exten => s,n,Dial(SIP/101,10)
exten => s,n,Congestion

indiquent qu'il faut envoyer l'appel sur le poste SIP 101 - en toute logique, si tu as un tel enregistré avec cette extension, il va sonner, et tu vas etre mis en relation avec l'appelant

pour envoyer vers ton ivr, remplace le tout par
exten => s,1,Goto(default, 55,1)

quelques conseils....
lis un peu de doc, ca semble te faire défaut... ;-)
n'utilise pas le contexte defaut, d'un point de vue de sécurité, pas terrible
ne numérote pas séquentiellement tes instructions, utilise ,n, (et same => au lieu de exten => 55,) => ca facilite les copier/coller
essaie de faire quelques messages genre playback avant d'attaquer les agi et google tts, qui va piano va sano

Thomas44
20/01/2015, 16h23
ces instructions:

exten => s,1,Ringing
exten => s,n,Dial(SIP/101,10)
exten => s,n,Congestion

indiquent qu'il faut envoyer l'appel sur le poste SIP 101 - en toute logique, si tu as un tel enregistré avec cette extension, il va sonner, et tu vas etre mis en relation avec l'appelant

pour envoyer vers ton ivr, remplace le tout par
exten => s,1,Goto(default, 55,1)

quelques conseils....
lis un peu de doc, ca semble te faire défaut... ;-)
n'utilise pas le contexte defaut, d'un point de vue de sécurité, pas terrible
ne numérote pas séquentiellement tes instructions, utilise ,n, (et same => au lieu de exten => 55,) => ca facilite les copier/coller
essaie de faire quelques messages genre playback avant d'attaquer les agi et google tts, qui va piano va sano

Jean tu es mon sauveur ! Franchement merci !
Oui je lis énormément de documentation justement le problème c'est qu'on trouve un peu de tout et pas forcement sous le même contexte que ta configuration c'est pour sa que je préfère poster sur le forum car c'est souvent au niveau des contextes que je me trompe et la je viens de tout comprendre grâce à toi donc un grand merci !

Quand tu parle séquentiellement c'est à dire 1,2,3 et que c'est mieux d'utiliser "n", je n'es pas compris cela "(et same => au lieu de exten => 55,)"

Pour le contexte Default sa je compte le changer la j'en suis a des phases de tests

Et pour googletts c'était juste histoire de tester pour l'ivr après j’enregistrerais avec une vrai voix, non robotisé !

En tout cas un grand merci jean, tu a fais un heureux ;) !

jean
20/01/2015, 16h42
cool !

en gros, au lieu de faire

exten => 55,1, instruction1
exten => 55,2, instruction2
exten => 55,3, instruction3

ce qui n'est pas pratique quand tu changes l'extension ou que tu veux insérer des instructions, fais

exten=> 55,1,instruction1
same => n,instruction2
same => n,instruction3

le same => est équivalent à exten => 55 (ou ce que tu as mis en no d'extension), et le n incrémente automatiquement

Thomas44
20/01/2015, 16h46
cool !

en gros, au lieu de faire

exten => 55,1, instruction1
exten => 55,2, instruction2
exten => 55,3, instruction3

ce qui n'est pas pratique quand tu changes l'extension ou que tu veux insérer des instructions, fais

exten=> 55,1,instruction1
same => n,instruction2
same => n,instruction3

le same => est équivalent à exten => 55 (ou ce que tu as mis en no d'extension), et le n incrémente automatiquement

D'accord, mais pourquoi same plus que exten ?

olppp
20/01/2015, 17h03
point de vue très personnel :ange:
j'utilise ael pour programmer mon plan de numérotation. ça donne un dialplan plus clair.
:sol:

Thomas44
20/01/2015, 17h09
point de vue très personnel :ange:
j'utilise ael pour programmer mon plan de numérotation. ça donne un dialplan plus clair.
:sol:

D'accord ^^

Et ael sa apporte quoi quand tu dis un dialplan plus clair ?

jean
20/01/2015, 17h10
@olppp : je dois avouer mon coté rétrograde et feignant qui me pousse à rester sur le dialplan classique !

@Thomas44 : ben, dans same => , tu ne précises pas le numéro de l'extension - si tu veux remplacer ton 55 en 56, tu changes la première ligne (le exten => 55), et les same changeront tout seul - avec exten, tu renumérotes tout à la main

Thomas44
20/01/2015, 17h22
@olppp : je dois avouer mon coté rétrograde et feignant qui me pousse à rester sur le dialplan classique !

@Thomas44 : ben, dans same => , tu ne précises pas le numéro de l'extension - si tu veux remplacer ton 55 en 56, tu changes la première ligne (le exten => 55), et les same changeront tout seul - avec exten, tu renumérotes tout à la main

A d'accord donc en gros

exten => 55,1,...
exten => 55,n...

se change en :

Same =>,n,...

jean
20/01/2015, 17h40
A d'accord donc en gros

exten => 55,1,...
exten => 55,n...

se change en :

Same =>,n,...

presque...la premiere ligne reste avec exten il faut bien indiquer le numéro une fois:
exten => 55,1,...
same => n,...

Thomas44
20/01/2015, 17h43
presque...la premiere ligne reste avec exten il faut bien indiquer le numéro une fois:
exten => 55,1,...
same => n,...

D'accord !!

Bon bas merci pour toutes ces infos ! Merci bien Jean pour l'aide que tu ma apporté ! :ouimaitre:

olppp
20/01/2015, 19h56
pour l'utilisation d'ael :
c'est un langage de script spécialisé qui génère le dialplan. si tu utilises déjà des langage de script : php, python, shell, ... tu te retrouve en terre connue.
j'ai un peu souffert lors du passage de extensions.conf à extensions.ael, mais maintenant j'ai quelque mal avec les dialplans bruts.
et puis le petit plus : le parseur aelparse qui t'envoie bouler en cas d'erreurs de syntaxe et comme j'ai trop de doigts :sarcastic: ça aide.

Thomas44
21/01/2015, 14h40
pour l'utilisation d'ael :
c'est un langage de script spécialisé qui génère le dialplan. si tu utilises déjà des langage de script : php, python, shell, ... tu te retrouve en terre connue.
j'ai un peu souffert lors du passage de extensions.conf à extensions.ael, mais maintenant j'ai quelque mal avec les dialplans bruts.
et puis le petit plus : le parseur aelparse qui t'envoie bouler en cas d'erreurs de syntaxe et comme j'ai trop de doigts :sarcastic: ça aide.

D'accord bas je vais rester sur l'extensions de base ;)
merci pour les infos