Auteur Sujet: [Résolu]Utilisation d'Asterisk sous Debian 11  (Lu 19302 fois)

0 Membres et 1 Invité sur ce sujet

maximushugus

  • Abonné SFR fibre FttH
  • *
  • Messages: 259
  • 69
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #84 le: 06 novembre 2023 à 23:51:47 »
Pour mise à jour :

J'ai réussi à faire fonctionner Asterisk pour les appel entrants comme sortants sur un serveur Ubuntu derrière un parefeu PfSense sans avoir à ouvrir aucun port depuis le WAN.
Pour cela :

1) J'ai utilisé les configurations pjsip.conf et extensions.conf telles que décrites précédemment
2) J'ai créé une règle de mappage dans la partie NAT sur PfSense avec comme port source l'adresse IP d'asterisk / 32 (pour ne spécifier que cette adresse), sur l'interface WAN, et en cochant "port statique", pour éviter la randomisation du port source
3) J'ai modifié la partie suivante du fichier pjsip.conf telle que [sfr]
contact=sip:+334XXXXXXXX@ims.mnc010.mcc208.3gppnetwork.org
outbound_proxy=sip:92.91.129.152:5062\;lr
type=aor
max_contacts=9999
qualify_frequency=15
La dernière ligne permet un keep_alive de la session UDP depuis le serveur Asterisk vers le serveur SFR et permet donc de recevoir les appels entrant sans ouvrir de port.

4) J'ai modifié la partie [incoming] de extensions.conf telle que :
[incoming]
exten => +334XXXXXXXX,1,Dial(PJSIP/zoiper)
exten => +334XXXXXXXX,n,Hangup()

Tout semble fonctionner correctement !!

artemus24

  • Abonné SFR fibre FttH
  • *
  • Messages: 1 970
  • Montignac Lascaux (24)
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #85 le: 16 décembre 2023 à 16:58:23 »
Il y a un nouveau proxy chez SFR, Venissieux :
root~>  host -t SRV _sip._udp.residential.p-cscf.sfr.net
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 corbas.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 mitry.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 venissieux.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 trappes.p-cscf.sfr.net.
root~>
Et voici les adresses IP :
root~> dig venissieux.p-cscf.sfr.net

; <<>> DiG 9.18.19-1~deb12u1-Debian <<>> venissieux.p-cscf.sfr.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32335
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;venissieux.p-cscf.sfr.net. IN A

;; ANSWER SECTION:
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.136
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.168
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.152

;; Query time: 28 msec
;; SERVER: 2a02:8400::1#53(2a02:8400::1) (UDP)
;; WHEN: Sat Dec 16 16:53:48 CET 2023
;; MSG SIZE  rcvd: 102

root~>

cedbouch

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 13
  • Bagnols sur Cèze - 30
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #86 le: 03 mars 2024 à 18:52:19 »
Bonjour,
Voici quelques moiSS que je suis sur la configuration de asterisk sur un routeur maison sous OpenWRT pour me connecter au serveur SFR. J'ai un peu parsé toutes les documentations et forum...
A ce jour je suis encore sous chan_sip car les configurations au départ de mes recherches étaient faites sous ce driver de com.
Ma communication n'est pas vraiment opérationnelle car je perds la communication avec le serveur SFR, erreur CHANUNAVAIL je pense lié à un problème de désenregisrtrement du serveur.

J'ai souvent cette erreur qui apparait:
app_dial.c:2719 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent) == Everyone is busy/congested at this time (1:0/0/1)
    -- Auto fallthrough, channel 'SIP/0002-00000000' status is 'CHANUNAVAIL'

J'ai tenté de paramétrer des tempo plus ou moins longues, des keepalive, de changer de serveur, etc... aujourd'hui j'étais vu ce post. Du coup je regarde un peu au niveau des DNS.
J'ai retiré depuis longtemps les DNS de SFR de ma box pour être en DoH/DoT sur Quad9 ou autre sous unbound. Je pense que ca peut être source de problème pour les résolutions.
Du coup je viens de configurer dans SIP.conf en dur l'adresse

outboundproxy=92.91.129.152au lieu de
outboundproxy=residential.p-cscf.sfr.net
ça n'a pas l'air de beaucoup mieux fonctionner, j'ai l'erreur "CHANUNAVAIL" qui revient lié chaque fois au status UNREACHABLE du serveur SFR.
Je pense qu'il faut l'écrire de cette manière sous le driver chan_sip. Est ce que vous avez des remarques pour m'aider ?

Il y a un nouveau proxy chez SFR, Venissieux :
root~>  host -t SRV _sip._udp.residential.p-cscf.sfr.net
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 corbas.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 mitry.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 venissieux.p-cscf.sfr.net.
_sip._udp.residential.p-cscf.sfr.net has SRV record 10 0 5062 trappes.p-cscf.sfr.net.
root~>
Et voici les adresses IP :
root~> dig venissieux.p-cscf.sfr.net

; <<>> DiG 9.18.19-1~deb12u1-Debian <<>> venissieux.p-cscf.sfr.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32335
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;venissieux.p-cscf.sfr.net. IN A

;; ANSWER SECTION:
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.136
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.168
venissieux.p-cscf.sfr.net. 46269 IN A 77.136.7.152

;; Query time: 28 msec
;; SERVER: 2a02:8400::1#53(2a02:8400::1) (UDP)
;; WHEN: Sat Dec 16 16:53:48 CET 2023
;; MSG SIZE  rcvd: 102

root~>

artemus24

  • Abonné SFR fibre FttH
  • *
  • Messages: 1 970
  • Montignac Lascaux (24)
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #87 le: 03 mars 2024 à 19:09:22 »
Salut cedbouch et bienvenue dans le forum lafibre.info.

Tu peux lire le premier message de mon sujet où il est question de "CHANUNAVAIL". A partir de là, j'ai configuré Asterisk pour résoudre plusieurs problèmes que je cite, comme les 32 secondes. Actuellement, la configuration d'Asterisk est opérationnelle et je peux depuis Zoiper5 recevoir et prendre des communications téléphoniques avec les identifiants de SFR.

Bonne lecture. :)
@+

yom

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 4
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #88 le: 04 septembre 2024 à 23:13:21 »
Un grand merci à tous les participants de ce thread  :-*

Après pas mal d'obstacles (DNS de sfr que je n'utilisais pas au départ sur mon dnsmasq, puis la resolution dns SFR qui retourne une IP qui n'est pas utilisable  >:( ), j'ai réussi à avoir un setup qui fonctionne sur Openwrt / asterisk grâce à ce thread (et en claquant en dur une IP qui fonctionne)

Je souhaite utiliser le SIP pour communiquer avec mes jeunes ados lorsqu'ils sont à la maison (le plus petit n'a pas de portable) donc il me reste à automatiser le test que le trunk est opérationnel et à m'envoyer une alerte en cas de pb !



renaud07

  • Abonné Orange adsl
  • *
  • Messages: 4 274
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #89 le: 27 novembre 2024 à 18:38:31 »
Je me permet de te piquer ton topic artemus pour une petite question qui pourra peut-être t’intéresser aussi.

Sur une ligne SIP OVH, jusqu'à maintenant, je bloquais les appels vers les portables vu que ce n'était pas en illimité. Mais parfois j'ai besoin de faire quelques tests et je voudrais mettre en place une confirmation histoire de pas appeler un 06 si je fais une fausse manip. Sauf que... j'y arrive pas. Je sens que c'est tout con, mais ça ne veut pas fonctionner.

Ayant déjà un IVR pour éviter le démarchage, j'ai repris la même base. C'est au moment d'appeler l'extension en question que ça foire. Vu que je mets _0[6-7]XXXXXXXX, ça appelle l'extension tel quel au lieu du vrai numéro appelé, alors que ça fonctionne bien si on utilise juste la ligne Dial seule.

[portables]
exten => _0[6-7]XXXXXXXX,1,Answer()
exten => _0[6-7]XXXXXXXX,2,Set(TIMEOUT(response)=10)
exten => _0[6-7]XXXXXXXX,3,Background(/usr/share/asterisk/sounds/fr_xivo/IVR/portables)
exten => _0[6-7]XXXXXXXX,4,WaitExten()
exten => _0[6-7]XXXXXXXX,5,Hangup()
exten => _0[6-7]XXXXXXXX,6,Dial(SIP/${EXTEN},20,Tt)

exten => 1,1,Goto(_0[6-7]XXXXXXXX,6)

Avec ce code, ça fait donc  Dial(SIP/_0[6-7]XXXXXXXX,20,Tt) au lieu de Dial(SIP/06123456789,20,Tt) par exemple.

Merci

artemus24

  • Abonné SFR fibre FttH
  • *
  • Messages: 1 970
  • Montignac Lascaux (24)
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #90 le: 27 novembre 2024 à 18:53:10 »
Salut Renaud07.

Je ne suis pas revenu sur le sujet depuis que je l'ai installé.
Ta demande est assez spécifique car je ne possède pas de mobile et je suis l'impossibilité de faire des tests.
Oui, cela peut m'intéresser, au moins comprendre comment faire une confirmation pour certains numéros.
Désolé de ne pouvoir faire plus.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 4 274
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #91 le: 27 novembre 2024 à 19:25:04 »
Tu n'as pas besoin de mobile. Là je test avec mes téléphones internes. Le numéro composé peut être n'importe lequel, c'est juste pour valider le fonctionnement.

À un moment j'avais aussi monté un second asterisk pour simuler le réseau public.

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 747
  • Antibes (06) / Mercury (73)
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #92 le: 27 novembre 2024 à 19:51:03 »
Ca vaut ce que ça vaut (mes souvenirs d'asterisk sont bien trop lointains pour valider), mais pour ChatGPT:

Le problème vient de la façon dont vous utilisez la commande Goto() pour transférer l’appel à l’extension principale. Actuellement, lorsque vous faites Goto(_0[6-7]XXXXXXXX,6), cela passe littéralement cette chaîne de caractères comme destination au lieu d’utiliser le numéro réellement composé (par exemple, 06123456789).

Problème

Le pattern _0[6-7]XXXXXXXX est utilisé comme une chaîne statique dans la commande Goto() au lieu d’un numéro dynamique correspondant à ce qui a été composé.

Solution

Pour résoudre ce problème, vous devez transmettre explicitement le numéro composé à l’extension cible. Voici une version corrigée de votre configuration :

[portables]
exten => _0[6-7]XXXXXXXX,1,Answer()
exten => _0[6-7]XXXXXXXX,2,Set(TIMEOUT(response)=10)
exten => _0[6-7]XXXXXXXX,3,Background(/usr/share/asterisk/sounds/fr_xivo/IVR/portables)
exten => _0[6-7]XXXXXXXX,4,WaitExten()
exten => _0[6-7]XXXXXXXX,5,Hangup()
exten => _0[6-7]XXXXXXXX,6,Dial(SIP/${EXTEN},20,Tt)  ; Appeler le numéro original

exten => 1,1,Goto(${EXTEN},6)  ; Réutiliser le numéro dynamique saisi par l'utilisateur

Explications des modifications

   1.   Transmission du numéro dynamique :
   •   En remplaçant Goto(_0[6-7]XXXXXXXX,6) par Goto(${EXTEN},6), Asterisk utilise le numéro complet réellement composé (par exemple, 06123456789) pour sauter à l’étape 6.
   2.   Conservation du numéro original :
   •   La variable ${EXTEN} contient toujours le numéro composé dans la logique actuelle. Ainsi, à l’étape 6, cela transmet correctement le numéro au Dial().
   3.   Suppression de la chaîne statique :
   •   Enlever _0[6-7]XXXXXXXX dans Goto() garantit que la correspondance dynamique s’applique sans interférer avec un pattern fixe.

Test recommandé

Assurez-vous de recharger vos configurations Asterisk (dialplan reload) et testez pour vérifier que le numéro complet est bien utilisé au moment de l’appel.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 4 274
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #93 le: 27 novembre 2024 à 23:46:25 »
Merci zoc. J'ai même pas pensé à demander à chatGPT, mais ça ne fonctionne pas non plus...

Le ${EXTEN} semble retenir 1 et non l'extension appelée. Et ça termine sur un  :
-- Goto (portables,1,6)
-- Auto fallthrough, channel 'SIP/302-000000af' status is 'UNKNOWN'

J'ai finalement demandé à copilot, et après m'avoir proposé un truc un peu similaire, quand je lui ait dit que ça ne marchait pas, il m'a enfin donné un truc intéressant : créer une variable en début d'appel et... ça marche !

[portables]
exten => _0[6-7]XXXXXXXX,1,Set(CALLED_NUMBER=${EXTEN})
exten => _0[6-7]XXXXXXXX,2,Answer()
exten => _0[6-7]XXXXXXXX,3,Set(TIMEOUT(response)=10)
exten => _0[6-7]XXXXXXXX,3,Background(/usr/share/asterisk/sounds/fr_xivo/IVR/portables)
exten => _0[6-7]XXXXXXXX,4,WaitExten()
exten => _0[6-7]XXXXXXXX,5,Hangup()
exten => _0[6-7]XXXXXXXX,6,Dial(SIP/${CALLED_NUMBER},20,Tt)

exten => 2,1,Goto(portables,_0[6-7]XXXXXXXX,6)

Quand je disais que c'était tout simple... Il faut par contre que ça fasse parti du contexte interne (avec include), si je fais un Goto comme mon IVR ça enregistre de nouveau le pattern comme N° appelé.

trekker92

  • Abonné Free adsl
  • *
  • Messages: 1 941
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #94 le: 28 novembre 2024 à 00:30:44 »
Je me permet de te piquer ton topic artemus pour une petite question qui pourra peut-être t’intéresser aussi.

Sur une ligne SIP OVH, jusqu'à maintenant, je bloquais les appels vers les portables vu que ce n'était pas en illimité. Mais parfois j'ai besoin de faire quelques tests et je voudrais mettre en place une confirmation histoire de pas appeler un 06 si je fais une fausse manip. Sauf que... j'y arrive pas. Je sens que c'est tout con, mais ça ne veut pas fonctionner.

Ayant déjà un IVR pour éviter le démarchage, j'ai repris la même base. C'est au moment d'appeler l'extension en question que ça foire. Vu que je mets _0[6-7]XXXXXXXX, ça appelle l'extension tel quel au lieu du vrai numéro appelé, alors que ça fonctionne bien si on utilise juste la ligne Dial seule.

[portables]
exten => _0[6-7]XXXXXXXX,1,Answer()
exten => _0[6-7]XXXXXXXX,2,Set(TIMEOUT(response)=10)
exten => _0[6-7]XXXXXXXX,3,Background(/usr/share/asterisk/sounds/fr_xivo/IVR/portables)
exten => _0[6-7]XXXXXXXX,4,WaitExten()
exten => _0[6-7]XXXXXXXX,5,Hangup()
exten => _0[6-7]XXXXXXXX,6,Dial(SIP/${EXTEN},20,Tt)

exten => 1,1,Goto(_0[6-7]XXXXXXXX,6)

Avec ce code, ça fait donc  Dial(SIP/_0[6-7]XXXXXXXX,20,Tt) au lieu de Dial(SIP/06123456789,20,Tt) par exemple.

Merci

bonjour,

peut etre aller demander sur les sites asterisk anglophones, ou les forums voip?
il y a peut être quelques connaisseurs (x0r ici)..

spirit

  • Abonné Free fibre
  • *
  • Messages: 43
  • Toulouse (31)
[Résolu]Utilisation d'Asterisk sous Debian 11
« Réponse #95 le: 28 novembre 2024 à 19:16:52 »
Bonjour,

Le waitExten() remplace effectivement le numéro initial ${EXTEN} par la nouvelle entrée.
(on peut remplacer le "s" (start) dans cet exemple par le pattern des numéros de portable : 0[67]XXXXXXXX)

[ivr_1]

exten => s,1,Answer()
 same =>   n,Set(TIMEOUT(response)=10)      ; Temps max pour choisir une option
 same =>   n,Playback(custom/IVR1-message)  ; Fichier audio à jouer)
 same =>   n,WaitExten()                    ; Lecture du choix)
exten => 1,1,Dial()   ; Choix 1
exten => 2,1,Dial()   ; Choix 2
exten => 3,1,Dial()   ; Choix 3
exten => _[04-9*#],1,Goto(ivr_1,s,1)      ; Pour tout autre choix, renvoyer au début
exten => t,1,Goto(ivr_1,s,3)

Utiliser une variable pour stocker le numéro est une bonne solution.

Je recommanderai également de regarder la fonction authenticate(), qui permet d'entrer un PIN (nombre de chiffres réglables). Je ne l'ai encore jamais utilisé, mais ça peut être bien pour ton cas, autoriser les appels payants vers mobiles uniquement si le bon code est entré.
Example (tiré de ce site : http://www.binaryheartbeat.net/2014/03/asterisk-pin-based-dialing.html) :

[outgoing]
exten => _XXX.,1,NoOp(Going Out)
same  => n,NoOp(You have to authenticate)
same  => n,Authenticate(/etc/asterisk/pins.conf,m,4)
same  => n,NoOp(user has been authenticated)
same => n,Dial(SIP/${upstream}/${EXTEN})
same => n,HangUp()

Pour éviter un hors forfait trop important, tu peux aussi définir un timeout, par example quelques minutes devraient suffire pour faire des tests. OVH facture également en hors forfait vers les fixes passé 1h d'appel (pour le forfait de base en tout cas), ça peut aussi être intéressant de couper l'appel s'il dure plus:

same => n,NoOp(Limiting maximum call duration)
same => n,Set(TIMEOUT(absolute)=3600);
same => n,Dial(${LigneSip}/${EXTEN}, ${TIMEOUT}, ${DIAL_OPTS})