Affichage des résultats 1 à 9 sur 9

Discussion: CID lookup appel externe

  1. #1
    Membre Junior
    Date d'inscription
    août 2012
    Messages
    4
    Downloads
    0
    Uploads
    0

    CID lookup appel externe

    Bonjour à tous,
    Novice dans le domaine de la VOIP,je suis en stage en mairie.Celle-ci dispose d'un serveur asterisk 1.8 et de freepbx.Tout marche correctement.
    Mon maitre de stage voudrait cependant que lors d'un appel externe(qui vient par exemple d'un portable),il n'y ait pas seulement le numéro d'affiché mais aussi un nom.Pour cela,je me suis renseigné et j'ai trouvé que cela pourrait être possible avec le CID lookup.J'ai donc créé une base MYSQL sur leur serveur et configuré comme source du CID lookup la base sql avec la bonne requête et ensuite configurer une inbound route avec mon CID lookup.Mais cela n'a pas fonctionné.J'ai donc essayé d'ajouter l'entrée directement dans le phonebook et mettre en source du CID interne mais pareil.C'est un numéro de portable que j'essaye de faire la résolution de noms et j'ai mis un 0 avant (00692******).Même sans le 0 avant ça ne marche pas...
    Pourriez-vous m'aider?
    Merci d'avance

  2. #2
    Membre Senior
    Date d'inscription
    septembre 2010
    Messages
    410
    Downloads
    1
    Uploads
    0
    Salut,
    qu'est ce qui ne marche pas : le lookup des numéros dans ta base MySQL ?
    envoie le contenu de ton fichier extensions.conf ..

    Sinon voici comment changer le Caller ID :

    http://www.voip-info.org/wiki/view/Setting+Callerid

  3. #3
    Membre Junior
    Date d'inscription
    août 2012
    Messages
    4
    Downloads
    0
    Uploads
    0
    Je n'ai jamais touché aux fichiers de conf,que en GUI,en effet que ce soit le lookup de la base mySQL ou du phonebook interne,rien ne fonctionne,j'ai déjà essayé la ligne de commande que tu m'as fourni dans la CLI du GUI,elle ne reconnait pas cette commande...
    Je voudrai par exemple traduire le numéro 00692320670 par "Nom" par exemple,du coup quand j'appelle du portable externe,c'est mon nom qui s'affiche

  4. #4
    Membre Association
    Date d'inscription
    septembre 2010
    Localisation
    Cardiff (UK)
    Messages
    49
    Downloads
    0
    Uploads
    0
    Essayes avec les AGI.
    Voici un AGI CIDLookup basé sur LDAP :

    Code:
    #!/usr/bin/php -q
    <?php
    $PhoneNumber=$argv[1] ;
    
    set_time_limit(1);
    
    ob_implicit_flush(false);
    
    error_reporting(0);
    
    if (!defined('STDIN'))
    {
            define('STDIN', fopen('php://stdin', 'r'));
    }
    if (!defined('STDOUT'))
    {
            define('STDOUT', fopen('php://stdout', 'w'));
    }
    if (!defined('STDERR'))
    {
            define('STDERR', fopen('php://stderr', 'w'));
    }
    
    while (!feof(STDIN))
    {
            $temp = trim(fgets(STDIN,4096));
            if (($temp == "") || ($temp == "\n"))
            {
                    break;
            }
            $s = split(":",$temp);
            $name = str_replace("agi_","",$s[0]);
            $agi[$name] = trim($s[1]);
    }
    
    # print all AGI variables for debugging purposes
    foreach($agi as $key=>$value)
    {
            fwrite(STDERR,"-- $key = $value\n");
            fflush(STDERR);
    }
    
    if($PhoneNumber == "asterisk") { 
    	fwrite(STDOUT,"SET CALLERID \"Inconnu <Inconnu>\"\"\n");
    	fflush(STDOUT);
    
    	die("Don't touch this CID !"); 
    }
    
    # Script Beginning
    $server = "****" ;
    $port = "389";
    $rootdn = "****";
    $rootpw = "****";
    
    $ds = ldap_connect($server);  // On suppose que le serveur LDAP est sur cet hote
    
    if (!$ds) { die("can't connect to LDAP server"); }
    
    $r = ldap_bind($ds,$rootdn,$rootpw);
    
    // Annuaire
    $dir_dn = "ou=***, dc=***, dc=***";
    
    $dir_restriction = array( "displayName", "mobile", "telephoneNumber");
    
    $PhoneNumberSearch = '0'.$PhoneNumber ;
    
    $filtre="(|(mobile=$PhoneNumberSearch)(telephoneNumber=$PhoneNumberSearch))";  
    
    $dir_sr = ldap_search($ds, $dir_dn, $filtre, $dir_restriction);
    
    $info = ldap_get_entries($ds, $dir_sr);
    
    $CallerName =  $info[0]["displayname"][0] ;
    
    if($CallerName)
    {
            fwrite(STDOUT,"SET CALLERID \"$CallerName <$PhoneNumber>\"\"\n");
            fflush(STDOUT);
    } else {
    	fwrite(STDOUT,"SET CALLERID \"$PhoneNumber <$PhoneNumber>\"\"\n");
    	fflush(STDOUT);
    }
    ?>
    Et un deuxième de test qui utilisait (dans le cadre de tests uniquement !) la base reverse Infobel

    Code:
    #!/usr/bin/php -q
    <?php
    $DirectoryURL="http://www.infobel.com/fr/france/Inverse.aspx?q=France&qPhone=" ;
    $PhoneNumber=$argv[1] ;
    set_time_limit(60);
    
    error_reporting(0);
    
    if (!defined('STDIN'))
    {
    	define('STDIN', fopen('php://stdin', 'r'));
    }
    if (!defined('STDOUT'))
    {
    	define('STDOUT', fopen('php://stdout', 'w'));
    }
    if (!defined('STDERR'))
    {
    	define('STDERR', fopen('php://stderr', 'w'));
    }
    $DirectoryPage=file_get_contents($DirectoryURL.$PhoneNumber) ;
    
    if(preg_match("/<div class=\"result-item\"><h2>1. (.*)<!--/i",$DirectoryPage,$matches))
    {
    	$currentTemp=$matches[1];
    }
    if($currentTemp)
    {
    	echo "SET CALLERID \"$currentTemp <$PhoneNumber>\"" ;
    }
    ?>
    N'hesites pas à faire des logs dans tes AGI qui contiennent le format du numéro reçu.
    Ancien pseudo : Battor77

    Wiki Asterisk-France : http://wiki.asterisk-france.org
    Linux for sysops : http://www.my-linux.fr

  5. #5
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    Ce que tu as fait et que tu decris pour le cid externe mysql semble correct avec freepbx. Essaie deja de diagnostiquer ce qui ne va pas avant de partir vers d'autres solutions.
    Soit ta connection ne se fait pas correctement soit le sql n'est pas correct.
    Verifie deja ca à la main avec mysql.
    Si ok, lance asterisk en cli.
    asterisk -rvvvvvvvvvddddddddd
    Et regarde les traces quand tu fais un appel entrant. N'oublie pas pour la inbound route de bien specifier le callerid mysql que tu as defini.
    Fastm3.
    PS: En vacances avec tethering...

  6. #6
    Membre Junior
    Date d'inscription
    août 2012
    Messages
    4
    Downloads
    0
    Uploads
    0
    Au niveau de la base mySQL,tout devrait être normal,j'ai essayé la requête directement sur la base,ca a marché.C'est peut-être au niveau de la inbound route qu'il pourrait avoir un problème,j'ai juste créé une inbound route en ne spécifiant que la source du CID lookup,rien d'autre,pas même le DID number ou CID number ou destination,ai-je bien fait?

  7. #7
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    C'est un catch all , c'est ok donc.
    regarde les logs /var/log/asterisk/full ou dans la console.
    Tu dois avoir quelques chose comme cela apres l'appel entrant.

    Code:
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [s@ext-did:2] Gosub("DAHDI/1-1", "cidlookup|cidlookup_1|1") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:1] MYSQL("DAHDI/1-1", "Connect connid localhost asteriskuser password asterisk") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:2] MYSQL("DAHDI/1-1", "Query resultid 1 SELECT name FROM pbook WHERE calld  LIKE '0627083770'") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:3] MYSQL("DAHDI/1-1", "Fetch fetchid 2 CALLERID(name)") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:4] MYSQL("DAHDI/1-1", "Clear 2") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:5] MYSQL("DAHDI/1-1", "Disconnect 1") in new stack
    [Aug 13 10:33:43] VERBOSE[23879] logger.c:     -- Executing [cidlookup_1@cidlookup:6] Return("DAHDI/1-1", "") in new stack
    Si ta base n'est pas locale, verifie que tu peux te connecter du serveur asterisk.
    Ton sql doit etre de ce type dans ton cid lookup source:
    SELECT name FROM pbook WHERE calld LIKE '[NUMBER]'

    Fastm3.

  8. #8
    Membre Junior
    Date d'inscription
    août 2012
    Messages
    4
    Downloads
    0
    Uploads
    0
    A priori,il ne prend même pas en compte mon CID lookup,voici la requête que j'ai entré:
    SELECT name FROM callerid WHERE number LIKE '%[NUMBER]%'
    J'ai une base sur le 10.2.100.31 avec la table callerid et les colonnes number et name dedans.
    J'ai émis un appel depuis le 00692320670(le numéro que je veux résoudre)et executer la commande
    asterisk -rvvvvvvvvvddddddddd | grep 320670
    Voici ce que j'obtiens
    Code:
        -- Executing [8682@from-trunk:4] Set("SIP/5060-b757e910", "CALLERID(name)=00692320670") in new stack
        -- Executing [8682@from-trunk:5] NoOp("SIP/5060-b757e910", "CallerID is "00692320670" <00692320670>") in new stack
        -- Executing [s@macro-user-callerid:1] NoOp("SIP/5060-b757e910", "user-callerid: 00692320670 00692320670") in new stack
        -- Executing [s@macro-user-callerid:2] Set("SIP/5060-b757e910", "AMPUSER=00692320670") in new stack
        -- Executing [s@macro-user-callerid:5] Set("SIP/5060-b757e910", "REALCALLERIDNUM=00692320670") in new stack
        -- Executing [s@macro-user-callerid:6] NoOp("SIP/5060-b757e910", "REALCALLERIDNUM is 00692320670") in new stack
        -- Executing [s@macro-user-callerid:23] NoOp("SIP/5060-b757e910", "Using CallerID "00692320670" <00692320670>") in new stack
        -- Executing [8682@ext-queues:13] NoOp("SIP/5060-b757e910", "CALLERID(name) is 00692320670") in new stack
        -- Executing [8682@ext-queues:15] Set("SIP/5060-b757e910", "CALLERID(name)=Hotline:00692320670") in new stack
        -- Executing [s@macro-user-callerid:1] NoOp("Local/8448@from-internal-fe00,2", "user-callerid: Hotline:00692320670 00692320670") in new stack
        -- Executing [s@macro-user-callerid:2] Set("Local/8448@from-internal-fe00,2", "AMPUSER=00692320670") in new stack
        -- Executing [s@macro-user-callerid:23] NoOp("Local/8448@from-internal-fe00,2", "Using CallerID "Hotline:00692320670" <00692320670>") in new stack
        -- Executing [s@macro-user-callerid:1] NoOp("Local/8505@from-internal-4edd,2", "user-callerid: Hotline:00692320670 00692320670") in new stack
        -- Executing [s@macro-user-callerid:2] Set("Local/8505@from-internal-4edd,2", "AMPUSER=00692320670") in new stack
        -- Executing [s@macro-user-callerid:23] NoOp("Local/8505@from-internal-4edd,2", "Using CallerID "Hotline:00692320670" <00692320670>") in new stack
        -- Executing [s@macro-user-callerid:1] NoOp("Local/8506@from-internal-9522,2", "user-callerid: Hotline:00692320670 00692320670") in new stack
        -- Executing [s@macro-user-callerid:2] Set("Local/8506@from-internal-9522,2", "AMPUSER=00692320670") in new stack
        -- Executing [s@macro-user-callerid:23] NoOp("Local/8506@from-internal-9522,2", "Using CallerID "Hotline:00692320670" <00692320670>") in new stack
        -- Executing [s@macro-user-callerid:1] NoOp("Local/8530@from-internal-5137,2", "user-callerid: Hotline:00692320670 00692320670") in new stack
        -- Executing [s@macro-user-callerid:2] Set("Local/8530@from-internal-5137,2", "AMPUSER=00692320670") in new stack
        -- Executing [s@macro-user-callerid:23] NoOp("Local/8530@from-internal-5137,2", "Using CallerID "Hotline:00692320670" <00692320670>") in new stack
      dialparties.agi: Caller ID name is 'Hotline:00692320670' number is '00692320670'
        --  dialparties.agi: dbset CALLTRACE/8505 to 00692320670
      dialparties.agi: Caller ID name is 'Hotline:00692320670' number is '00692320670'
        --  dialparties.agi: dbset CALLTRACE/8506 to 00692320670
      dialparties.agi: Caller ID name is 'Hotline:00692320670' number is '00692320670'
        --  dialparties.agi: dbset CALLTRACE/8448 to 00692320670
      dialparties.agi: Caller ID name is 'Hotline:00692320670' number is '00692320670'
        --  dialparties.agi: dbset CALLTRACE/8530 to 00692320670
    J'ai tout vérifié que ce soit la inbound route ou autre,j'avais meme fait une autre lookup source avec cette fois ci l'option "internal" et ajouter mon numéro dans le phonebook de freepbx,mais toujours rien.

  9. #9
    Asterisk Fan Avatar de fastm3
    Date d'inscription
    août 2010
    Localisation
    Corbeil Essonnes (91)
    Messages
    1 302
    Downloads
    1
    Uploads
    1
    Il n'y a pas d'appel SQL dans les traces, ta caller id source mysql n'est pas appelée. Regarde les traces pourquoi si tu as verifié qu'elle est bien definie au niveau du trunk.
    Fastm3.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •