Hello,
Ce truc me rend dingue, j'ai besoin d'un coup de main supplémentaire.
Voici ou j'en suis :
Fichier de conf personnalisé dans XiVO :
Code:
[sda-speed-dial]
exten => 8500,1,Answer()
same => n,Noop(Recuperation du compte SIP a partir du champ FROM de l'entete SIP)
same => n,Set(comptesip=${SIP_HEADER(From)})
same => n,Set(comptesip=${CUT(comptesip,@,1)})
same => n,Set(comptesip=${CUT(comptesip,:,2)})
same => n,Noop(Le numero interne est : ${comptesip})
same => n,agi(callerid.agi,${comptesip})
Il n'y a pas encore de Dial ou autre pour l'instant.
Script AGI :
Je récupère le compte SIP envoyé par Asterisk et le match sur le numéro interne du compte sip via le hash.
Code:
#!/usr/bin/perl
use strict;
my $sip_user_in = undef;
my $exten_in = undef;
my $caller_id = undef;
$sip_user_in = <STDIN>;
my %h;
my %h = ( "elfjwz" => "4000",
"vta462" => "4120",);
$exten_in = "$h{$sip_user_in}\n";
if ($exten_in >= 4000 & $exten_in <= 4099) {
$caller_id = "0450556677";
print STDOUT $caller_id;
}
if ($exten_in >= 4100 & $exten_in <= 4199) {
$caller_id = "0450778899";
print STDOUT $caller_id;
}
J'ai rempli mon hash à la main pour les tests. Comment je fais pour récupérer la valeur renvoyée par mon script sur le STDOUT et l'exploiter dans mon dial plan ?
PS :
J'ai aussi essayer avec l'agi suivante :
Code:
#!/usr/bin/perl
use strict;
use Asterisk::AGI;
my $agi = new Asterisk::AGI;
my $sip_user_in = undef;
my $exten_in = undef;
my $caller_id = undef;
$sip_user_in = <STDIN>;
my %h;
my %h = ( "elfjwz" => "4000",
"vta462" => "4120",);
$exten_in = "$h{$sip_user_in}\n";
if ($exten_in >= 4000 & $exten_in <= 4099) {
$AGI->set_callerid('0450556677');
}
if ($exten_in >= 4100 & $exten_in <= 4199) {
$AGI->set_callerid('0450557788');
}
J'ai rajouté une ligne pour afficher la valeur de la variable CallerID dans le Dial plan.
Le CallerID ne change pas. Est-ce que je loupe un truc ?
Merci beaucoup.
A+
Cordialement,