hi everyone , here i need some help i am using asterisk 13 with sip driver ,
i want to make an outbound call but i am facing issue
like call never reached to me , and duplicate calls
a lil help will be appreciated
here below is the sample code
const AmiClient = require('asterisk-ami-client');
const fs = require('fs');
const client = new AmiClient();
async function
startCampaign
() {
try {
await client.connect('magnus', 'admin', { host: '127.0.0.1', port: 5038 });
console.log("✅ Connected to AMI");
// Load numbers from txt
const numbers = fs.readFileSync('numbers.txt', 'utf-8').split('\n').filter(Boolean);
for (let number of numbers) {
console.log(`📞 Dialing ${number}`);
try {
let res = await client.action({
Action: 'Originate',
Channel: `Local/start@campaign`,
// call out using peer 34166
Context: 'campaign',
// must exist in extensions.conf
Exten: 'start',
Priority: 1,
CallerID: '18017017476',
Async: true,
Variable: `DIAL_NUMBER=${number}`
});
console.log("✅ Originate sent:", number);
} catch (err) {
console.error("❌ Originate error:", err);
}
}
// Listen for events
client.on('event',
event
=> {
if (
event
.Event === 'Hangup') {
console.log(`❌ Call hangup: ${event.CallerIDNum} - Cause: ${event.CauseTxt}`);
}
if (
event
.Event === 'Dial') {
console.log(`☎️ Dial event: ${JSON.stringify(
event
)}`);
}
});
} catch (err) {
console.error("❌ Connection error:", err);
}
}
startCampaign();
here is the dialplan
[campaign]
exten => start,1,NoOp(Starting Campaign Call for ${DIAL_NUMBER})
;same => n,Answer()
same => n,Dial(SIP/vip1/${DIAL_NUMBER},30)
;same => n,Playback(custom/script) ; play audio
same => n,Background(custom/script) ; allow DTMF during playback
same => n,WaitExten(5) ; wait 5 seconds for input
same => n,Hangup()
; If user presses 1
exten => 1,1,NoOp(Caller pressed 1 -> send to queue)
same => n,Queue(agents,t) ; bridge caller to available agent in 'sales'
same => n,Hangup()
looking for the response