feat: filter call by from and to (#180)

This commit is contained in:
Hoan Luu Huu
2023-06-09 06:36:54 +07:00
committed by GitHub
parent f9df2b3028
commit 46fb9b8875
5 changed files with 85 additions and 9 deletions

View File

@@ -20,7 +20,7 @@ router.get('/', async(req, res) => {
logger.debug({opts: req.query}, 'GET /RecentCalls');
const account_sid = parseAccountSid(req.originalUrl);
const service_provider_sid = account_sid ? null : parseServiceProviderSid(req.originalUrl);
const {page, count, trunk, direction, days, answered, start, end} = req.query || {};
const {page, count, trunk, direction, days, answered, start, end, from, to} = req.query || {};
if (!page || page < 1) throw new DbErrorBadRequest('missing or invalid "page" query arg');
if (!count || count < 25 || count > 500) throw new DbErrorBadRequest('missing or invalid "count" query arg');
@@ -35,6 +35,8 @@ router.get('/', async(req, res) => {
answered,
start: days ? undefined : start,
end: days ? undefined : end,
from,
to
});
res.status(200).json(data);
}
@@ -49,6 +51,8 @@ router.get('/', async(req, res) => {
answered,
start: days ? undefined : start,
end: days ? undefined : end,
from,
to
});
res.status(200).json(data);
}

View File

@@ -3046,6 +3046,18 @@ paths:
enum:
- inbound
- outbound
- in: query
name: from
required: false
schema:
type: string
description: calling number to retrieve
- in: query
name: to
required: false
schema:
type: string
description: called number to retrieve
get:
tags:
- Accounts
@@ -3245,6 +3257,18 @@ paths:
enum:
- inbound
- outbound
- in: query
name: from
required: false
schema:
type: string
description: calling number to retrieve
- in: query
name: to
required: false
schema:
type: string
description: called number to retrieve
get:
tags:
- Service Providers

14
package-lock.json generated
View File

@@ -15,7 +15,7 @@
"@jambonz/db-helpers": "^0.9.0",
"@jambonz/realtimedb-helpers": "^0.8.6",
"@jambonz/speech-utils": "^0.0.14",
"@jambonz/time-series": "^0.2.5",
"@jambonz/time-series": "^0.2.7",
"@jambonz/verb-specifications": "^0.0.21",
"@soniox/soniox-node": "^1.1.0",
"argon2": "^0.30.3",
@@ -1918,9 +1918,9 @@
}
},
"node_modules/@jambonz/time-series": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@jambonz/time-series/-/time-series-0.2.5.tgz",
"integrity": "sha512-WrVenxY4ZgW0YYNIXdAz3ZKao8IQy612RVDAnYq7oWvHHqzgLmLrbIvTXKhycd27iYvwFAPCcUDk1EMuUoPLPA==",
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@jambonz/time-series/-/time-series-0.2.7.tgz",
"integrity": "sha512-+mjbSG7mg/+29tAqnU1ZYkR0CDdKQ0V0Fk/RZc8kRqf+UnP5Mil8MAP+ZLPs63cCb9jenzp3kgUKUu8Hz2T5TQ==",
"dependencies": {
"debug": "^4.3.1",
"influx": "^5.9.3"
@@ -10477,9 +10477,9 @@
}
},
"@jambonz/time-series": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@jambonz/time-series/-/time-series-0.2.5.tgz",
"integrity": "sha512-WrVenxY4ZgW0YYNIXdAz3ZKao8IQy612RVDAnYq7oWvHHqzgLmLrbIvTXKhycd27iYvwFAPCcUDk1EMuUoPLPA==",
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@jambonz/time-series/-/time-series-0.2.7.tgz",
"integrity": "sha512-+mjbSG7mg/+29tAqnU1ZYkR0CDdKQ0V0Fk/RZc8kRqf+UnP5Mil8MAP+ZLPs63cCb9jenzp3kgUKUu8Hz2T5TQ==",
"requires": {
"debug": "^4.3.1",
"influx": "^5.9.3"

View File

@@ -25,7 +25,7 @@
"@jambonz/db-helpers": "^0.9.0",
"@jambonz/realtimedb-helpers": "^0.8.6",
"@jambonz/speech-utils": "^0.0.14",
"@jambonz/time-series": "^0.2.5",
"@jambonz/time-series": "^0.2.7",
"@jambonz/verb-specifications": "^0.0.21",
"@soniox/soniox-node": "^1.1.0",
"argon2": "^0.30.3",

View File

@@ -76,6 +76,30 @@ test('recent calls tests', async(t) => {
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by account');
result = await request.get(`/Accounts/${account_sid}/RecentCalls?page=1&count=25&from=16`, {
auth: authUser,
json: true,
});
t.ok(result.data.length === 0, 'retrieved 5 recent calls by account and from');
result = await request.get(`/Accounts/${account_sid}/RecentCalls?page=1&count=25&from=15`, {
auth: authUser,
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by account and from');
result = await request.get(`/Accounts/${account_sid}/RecentCalls?page=1&count=25&to=19`, {
auth: authUser,
json: true,
});
t.ok(result.data.length === 0, 'retrieved 5 recent calls by account and to');
result = await request.get(`/Accounts/${account_sid}/RecentCalls?page=1&count=25&to=18`, {
auth: authUser,
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by account and to');
//console.log({data: result.data}, 'Account recent calls');
/* query last 7 days by service provider */
@@ -84,6 +108,30 @@ test('recent calls tests', async(t) => {
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by service provider');
result = await request.get(`/ServiceProviders/${service_provider_sid}/RecentCalls?page=1&count=25&from=16`, {
auth: authAdmin,
json: true,
});
t.ok(result.data.length === 0, 'retrieved 5 recent calls by service provider and from');
result = await request.get(`/ServiceProviders/${service_provider_sid}/RecentCalls?page=1&count=25&from=15`, {
auth: authAdmin,
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by service provider and from');
result = await request.get(`/ServiceProviders/${service_provider_sid}/RecentCalls?page=1&count=25&to=19`, {
auth: authAdmin,
json: true,
});
t.ok(result.data.length === 0, 'retrieved 5 recent calls by service provider and to');
result = await request.get(`/ServiceProviders/${service_provider_sid}/RecentCalls?page=1&count=25&to=18`, {
auth: authAdmin,
json: true,
});
t.ok(result.data.length === 5, 'retrieved 5 recent calls by service provider and to');
//console.log({data: result.data}, 'SP recent calls');
/* pull sip traces and pcap from homer */