1 | |
2 | type Telnyx = { |
3 | apiKey: string |
4 | } |
5 | |
6 | * List call events |
7 | * Filters call events by given filter parameters. Events are ordered by `occurred_at`. If filter for `leg_id` or `application_session_id` is not present, it only filters events from the last 24 hours. |
8 |
|
9 | **Note**: Only one `filter[occurred_at]` can be passed. |
10 |
|
11 | */ |
12 | export async function main( |
13 | auth: Telnyx, |
14 | filter_leg_id_: string | undefined, |
15 | filter_application_session_id_: string | undefined, |
16 | filter_connection_id_: string | undefined, |
17 | filter_product_: 'call_control' | 'fax' | 'texml' | undefined, |
18 | filter_from_: string | undefined, |
19 | filter_to_: string | undefined, |
20 | filter_failed_: string | undefined, |
21 | filter_type_: 'command' | 'webhook' | undefined, |
22 | filter_name_: string | undefined, |
23 | filter_occurred_at__gt_: string | undefined, |
24 | filter_occurred_at__gte_: string | undefined, |
25 | filter_occurred_at__lt_: string | undefined, |
26 | filter_occurred_at__lte_: string | undefined, |
27 | filter_occurred_at__eq_: string | undefined, |
28 | page_number_: string | undefined, |
29 | page_size_: string | undefined |
30 | ) { |
31 | const url = new URL(`https://api.telnyx.com/v2/call_events`) |
32 | for (const [k, v] of [ |
33 | ['filter[leg_id]', filter_leg_id_], |
34 | ['filter[application_session_id]', filter_application_session_id_], |
35 | ['filter[connection_id]', filter_connection_id_], |
36 | ['filter[product]', filter_product_], |
37 | ['filter[from]', filter_from_], |
38 | ['filter[to]', filter_to_], |
39 | ['filter[failed]', filter_failed_], |
40 | ['filter[type]', filter_type_], |
41 | ['filter[name]', filter_name_], |
42 | ['filter[occurred_at][gt]', filter_occurred_at__gt_], |
43 | ['filter[occurred_at][gte]', filter_occurred_at__gte_], |
44 | ['filter[occurred_at][lt]', filter_occurred_at__lt_], |
45 | ['filter[occurred_at][lte]', filter_occurred_at__lte_], |
46 | ['filter[occurred_at][eq]', filter_occurred_at__eq_], |
47 | ['page[number]', page_number_], |
48 | ['page[size]', page_size_] |
49 | ]) { |
50 | if (v !== undefined && v !== '' && k !== undefined) { |
51 | url.searchParams.append(k, v) |
52 | } |
53 | } |
54 | const response = await fetch(url, { |
55 | method: 'GET', |
56 | headers: { |
57 | Authorization: 'Bearer ' + auth.apiKey |
58 | }, |
59 | body: undefined |
60 | }) |
61 | if (!response.ok) { |
62 | const text = await response.text() |
63 | throw new Error(`${response.status} ${text}`) |
64 | } |
65 | return await response.json() |
66 | } |
67 |
|