PDA

Voir la version complète : Auto registration avec ARA (Realtime), sipregs ne fonctionne pas



lstep
05/09/2011, 15h16
Bonjour,
J'essaye (sans succès :rant:) d'utiliser une combinaison du mode Realtime avec de l'auto registration SIP. Par auto registration, j'entend l'équivalent de "register => username:password@domaine".
Je teste ce fonctionnement sur une structure de deux Asterisk, et je suis supposé voir une connexion arriver :bump2: lorsque j'ajoute une entrée dans ma table (MySQL).

Pour activer le Realtime, j'ai installé un serveur MySQL standard, et j'ai activé le module correpondant dans Asterisk (1.8.3.3) qui est res_config_mysql.so (modules.conf).
J'ai ensuite modifié le fichier extconfig.conf comme suit:


sippeers => mysql,asterisk,sipfriends
sipregs => mysql,asterisk,sipregs

Et j'ai configuré le bloc 'asterisk' dans le fichier res_config_mysql.conf:

[asterisk]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = XYZ
dbpass = XXXXXX
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock
dbcharset = latin1
requirements=createclose

J'ai ensuite créé les tables correspondantes dans une base nommée 'asterisk': sipfriends vient de https://wiki.asterisk.org/wiki/display/AST/SIP+Realtime%2C+MySQL+table+structure et sipregs a été un peu plus dur à trouver, mais j'utilise :


CREATE TABLE `sipregs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(40) DEFAULT NULL,
`ipaddr` char(45) DEFAULT NULL,
`port` smallint(5) unsigned DEFAULT NULL,
`regseconds` int(10) DEFAULT NULL,
`defaultuser` char(10) DEFAULT NULL,
`fullcontact` char(35) DEFAULT NULL,
`regserver` char(20) DEFAULT NULL,
`useragent` char(20) DEFAULT NULL,
`lastms` int(10) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

Pour les entrées correspondantes à la famile sippeers (dans la table sipfriends), cela fonctionne bien, le routage se fait bien, et je vois bien les interrogations faites par Asterisk dans la base SQL lorsqu'un appel arrive.
Par contre, pour sipregs, rien du tout. Il y a bien des interrogations dans la base, mais jamais je ne vois de peer enregistré sur l'asterisk distant (alors que quand je le fait "à la main", avec un register => ..., cela fonctionne bien).

Normalement, je devrais crééer une entrée dans sipfriends, avec un name='foobar', et dans la table sipregs, il devrait me suffire de mettre dans name cette même valeur, ce qui devrait déclencher le 'register'.

Ma première question est : Est-ce que Asterisk le supporte vraiment ? Je pose cette question, parce que quand on fait un register 'normal' (c'est à dire avec des fichiers plats), Asterisk est supposé s'enregistrer/se connecter sur l'Asterisk distant IMMÉDIATEMENT, et pas lorsqu'un nouvel appel arrive. Je ne vois pas Asterisk interroger régulièrement la base pour voir s'il y a de nouveaux enregistrements...

Ma deuxième question est : Si cela devrait fonctionner, comment fait-on ? Qu'est ce qui me manque pour que cela fonctionne ?

Merci de votre aide :ouimaitre:,
Luc

Reaper
06/09/2011, 10h31
Normalement ça doit fonctionner, est ce que vous avez des valeurs qui sont ajoutés dans sipregs ? Il est possible que structure de table est ancienne, et que dans 1.8 ça à changé.

lstep
06/09/2011, 10h36
Normalement ça doit fonctionner, est ce que vous avez des valeurs qui sont ajoutés dans sipregs ? Il est possible que structure de table est ancienne, et que dans 1.8 ça à changé.

Comment ça "qui sont ajoutés dans sipregs" ? Ne suis-je pas supposé les insérer moi-même ? Ce que je ne comprends pas c'est comment Asterisk peut-il ajouter le peer "immédiatement" s'il ne surveille pas la base SQL ? Il aurait fallu pour cela mettre des TRIGGER dans MySQL.

Concernant la structure, je n'ai aucune erreur, et j'ai utilisé le paramètre "requirements=createclose" dan sip.conf pour créer/modifier les champs manquants.

Reaper
06/09/2011, 10h43
Le wiki dit que:
https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration


If you specify a separate family called "sipregs" SIP registration data will be stored in that table and not in the "sippeers" table.



Je suppose il sauvegarde aussi l’état d'enregistrement, par exemple "Trying"

Dans ce cas si j'ai bien saisi vous pouvez tout stocker dans sippeers, et sipregs est en option, la structure que vous avez utilisé est suivante ?

https://wiki.asterisk.org/wiki/display/AST/SIP+Realtime%2C+MySQL+table+structure

lstep
06/09/2011, 10h52
Le wiki dit que:
https://wiki.asterisk.org/wiki/display/AST/Realtime+Database+Configuration

Je suppose il sauvegarde aussi l’état d'enregistrement, par exemple "Trying"

Dans ce cas si j'ai bien saisi vous pouvez tout stocker dans sippeers, et sipregs est en option, la structure que vous avez utilisé est suivante ?

https://wiki.asterisk.org/wiki/display/AST/SIP+Realtime%2C+MySQL+table+structure

sippeers fonctionne très bien, mais il est utilisé uniquement lorsqu'un appel entrant arrive, c'est à dire que Asterisk accède et lit la base SQL pour voir son contenu qu'à ce moment là. Lorsque l'on fait un "register => user:pass@foobar.Com" (fichier plat), l'enregistrement du peer se fait immédiatement (en plus d'être enregistré dans la table visible par "sip show registry".

Je n'ai pas du tout ce comportement avec l'utilisation d'un base SQL+ Realtime:

À aucun moment, je n'ai quoi que ce soit dans le sip show registry, et je peux affirmer qu'il n'y a rien parce que l'Asterisk distant ne reçoit pas de connexion.
Aucun évènement n'arrive dans l'Asterisk (même avec un "core set verbose 9999") quand j'insère une nouvelle ligne dans la base SQL dans la table sipregs, ce qui, pour moi, est normal vu qu'Asterisk ne surveille pas les changements dans la base, mais qui est anormal vu le comportement supposé équivalent avec "register => ..."

Reaper
06/09/2011, 11h40
Ça fait un moment que j'ai touché au realtime.
Regarde si sipregs fonctionne encore sur le bugtracker de digium, ils ont une tendance de la casser temp en temps.

abcinfo
20/05/2012, 14h33
Bonjour,

Avez vous trouvé une solution a cette question? J'ai exactement le même problème sous asterisk 1.8

davlefou
18/12/2012, 14h02
Bonjour,
avez vous résolu le probléme? Ou trouve ton les tables spécifique pour la version 1.8?