Skip to main content

Asterisk Random callerid setting

 

Why Random callerid setting required

           In call centers sometimes they need to show random callerids for each call, which are generated by autodiallers or predictive diallers ,so customers wont see that call is from same center.
in this blog i will show two methods to set random callerid  in asterisk or vicidial or goautodial based diallers, pbx.

Option 1 : using  RAND function in asterisk 

       RAND Function can be used in a scenario , if you have a range of DID's  like  40004001 to 40004999
pick any one number randomly within this range and set it has callerid.

Before entering the dialplan , let me explain little bit about RAND function

Asterisk Function RAND

Synopsis:

Choose a random number within a range

Description:

RAND(min,max)

choose a random number between min and max , min default to 0 if not specified,  while max may be upto 2147483647

Lets get in to dialplan

For eg:  consider the DID range as 40004001 to 40004999

those who use plain asterisk setup use the below dialplan

exten => _9X.,1,Set(Callerid(num)=${RAND(40004001,40004999)})
exten => _9X.,2,Dial(SIP/VOIPTRUNK/${EXTEN:1})
exten => _9X.,3,Hangup()

Note:
for vicidail /goautodial you have to use below dialplan

exten => _9X.,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _9X.,2,Set(Callerid(num)=${RAND(40004001,40004999)})
exten => _9X.,3,Dial(SIP/VOIPTRUNK/${EXTEN:1},,Tto)
exten => _9X.,4,Hangup()


Option 2 :  Using php AGI script 

            This method can be used were you have  numbers ie: not in range,  numbers are placed in a txt file, from which a  random number will be filtered and set as callerid.

note: you must have PHPAgi  installed in your pbx server under agi directory
phpagi download link clickhere


1. create a file named randomcid.php  under  /var/lib/asterisk/agi-bin
   
  cd /var/lib/asterisk/agi-bin
 vi randomcid.php

2. copy the below script and paste in randomcid.php
  
 #!/usr/bin/php
<?php
    include 'phpagi-2.20/phpagi.php';
    $agi = new AGI();
    $numbers = file('/var/lib/asterisk/agi-bin/cids-list.txt');
    $cid = array_rand($numbers, 1);
     //return trim($numbers[$cid[0]]);
    $newCID = trim($numbers[$cid]);
    //echo $newCID;
    $agi->set_variable("CALLERID(num)", $newCID);

?>

3. create a file named cids-list.txt    under /var/lib/asteisk/agi-bin
    and fill you numbers in a single column 
    vi /var/lib/asterisk/agi-bin/cids-list.txt

4. now we will write a dialplan with AGI function 

     for plain asterisk
     exten => _9X.,1,AGI(randomcid.php)
  exten => _9X.,2,Dial(SIP/VOIPTRUNK/${EXTEN:1})
  exten => _9X.,3,Hangup

     for Vicidial or goautodial 

     exten => _9X.,1,AGI(agi://127.0.0.1:4577/call_log)
  exten => _9X.,2,AGI(randomcid.php)
  exten => _9X.,3,Dial(SIP/VOIPTRUNK/${EXTEN:1},,tTo)
  exten => _9X.,4,Hangup

Comments

Popular posts from this blog

Install OpenVPN 2.4 and 2.6 on Alma / Rocky Linux

 To install OpenVPN on AlmaLinux 9.5, you can follow these steps: 1. Update the System : Before installing any software, it's a good idea to update your system: sudo dnf update -y 2. Install EPEL Repository : OpenVPN is available in the EPEL (Extra Packages for Enterprise Linux) repository. First, install the EPEL repository: sudo dnf install epel-release -y 3. Install OpenVPN : After enabling the EPEL repository, install OpenVPN: sudo dnf install openvpn -y 4. Install NetworkManager (Optional) : If you are using NetworkManager for managing network connections, you can install the OpenVPN plugin for NetworkManager: sudo dnf install NetworkManager-openvpn -y 5. Configure OpenVPN : Once installed, you need to configure OpenVPN by copying your .ovpn configuration file to the /etc/openvpn/ directory: sudo cp /path/to/your/config.ovpn /etc/openvpn/ 6. Start OpenVPN : You can start OpenVPN by specifying the configuration file directly: sudo openvpn --config /etc...

Vicidial Scratch installation Alma -9/10

Step 1 – Download the dependencies   hostnamectl set-hostname xxxxxx.xxxxx.xxx ### Use YOUR SubDomain vi /etc/hosts ##Change domain name for actual server ip (xxx.xxx.xxx.xxx   complete domain name    subdomain only) timedatectl set-timezone Asia/Kolkata yum check-update yum update -y yum -y install epel-release yum update -y yum install git -y yum install -y kernel* sudo dnf install kernel-devel-$(uname -r) -y # Install english language pack dnf install -y glibc-langpack-en # Configure new locale. This basically just edits /etc/locale.conf localectl set-locale en_US.UTF-8 #Disable SELINUX sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config     reboot Step 2 – Run the Script cd /usr/src/ git clone https://github.com/manish23k/vicidial-install-scripts cd vicidial-install-scripts ####For PHP 7.4 use this script. chmod +x alma-rocky9-ast16.sh ./alma-rocky9-ast16.sh Or the Asterisk 18 version: chmod +x alma-rocky9-ast18.sh ./alma-rock...

How to Format and Mount a New 1TB HDD

🖥 How to Format and Mount a New 1TB HDD to /var/www/recordings on Linux If you’ve added a new HDD to your Linux server and want to use it as a dedicated storage location — for example, to store Asterisk or web server recordings — you’ll need to partition, format, mount, and configure it to auto-mount at boot . In this guide, we’ll walk through the process of wiping the drive (careful — data will be lost!), creating a single ext4 partition , and mounting it permanently. Step 1: Identify Your New Disk Run: lsblk Example output: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8 : 0 0 931.5 G 0 disk ├─sda1 8 : 1 0 50 M 0 part ├─sda2 8 : 2 0 540.8 G 0 part └─sda3 8 : 3 0 390.6 G 0 part In our case, /dev/sda is the new 1TB disk. ⚠ Warning: Double-check you’ve picked the right disk! Formatting the wrong one will destroy data. Step 2: Unmount Any Mounted Partitions sudo umount /dev/sda* 2>/dev/null Step 3: Wipe Old Partitions and Create One ...