Big test?

This commit is contained in:
Christopher Cookman 2025-10-28 07:36:28 -06:00
parent 84c8c5c6e6
commit b5edd8ee48

View file

@ -1,5 +1,5 @@
import dotenv from 'dotenv';
dotenv.config({quiet: true})
dotenv.config({ quiet: true })
import AMISocket from 'ami';
const sock = new AMISocket({
connect: {
@ -21,20 +21,78 @@ const cfTypes = {
CFU: "Unavailable",
}
sock.on('event', async (event) => {
console.log(event)
})
const main = () => {
var respData = [];
const startup = async () => {
sock.connect().then(() => {
console.log(sock.amiVersion)
// getList for CF, CFB, CFU
sock.getList({
action: 'DBGetTree',
family: 'CF'
}).then(async (response) => {
console.log(response)
})
})
// Responses are an array of objects. The first should always have eventlist: 'start', and last should have eventlist: 'complete'. Remove these, make an array of objects {key, val} based on the rest of the response objects.
let entries = response.filter(r => r.eventlist !== 'start' && r.eventlist !== 'complete').map(r => ({ key: r.key, val: r.val }));
for (let entry of entries) {
let [type, ext] = entry.key.split('/');
if (cfTypes[type]) {
respData.push({
extension: ext,
type: type,
target: entry.val
});
}
}
}).then(() => {
sock.getList({
action: 'DBGetTree',
family: 'CFB'
}).then(async (response) => {
let entries = response.filter(r => r.eventlist !== 'start' && r.eventlist !== 'complete').map(r => ({ key: r.key, val: r.val }));
for (let entry of entries) {
let [type, ext] = entry.key.split('/');
if (cfTypes[type]) {
respData.push({
extension: ext,
type: type,
target: entry.val
});
}
}
}).then(() => {
sock.getList({
action: 'DBGetTree',
family: 'CFU'
}).then(async (response) => {
let entries = response.filter(r => r.eventlist !== 'start' && r.eventlist !== 'complete').map(r => ({ key: r.key, val: r.val }));
for (let entry of entries) {
let [type, ext] = entry.key.split('/');
if (cfTypes[type]) {
respData.push({
extension: ext,
type: type,
target: entry.val
});
}
}
}).then(() => {
console.log(`Found ${respData.length} call forwards.`);
for (let cf of respData) {
console.log(`Extension ${cf.extension} has ${cfTypes[cf.type]} call forward to ${cf.target}`);
}
setTimeout(main, 60000); // Repeat every 60 seconds
});
});
});
};
const startup = async () => {
sock.connect().then(() => {
console.log(sock.amiVersion)
main();
}).catch((err) => {
console.error('Error connecting to AMI:', err);
setTimeout(startup, 10000); // Retry after 10 seconds
});
}
startup();