@divyacon/piece-twilio 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE.MIT-AP +24 -0
  2. package/README.md +8 -2
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +63 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/action/download-recording-media.d.ts +6 -0
  8. package/dist/lib/action/download-recording-media.d.ts.map +1 -0
  9. package/dist/lib/action/download-recording-media.js +77 -0
  10. package/dist/lib/action/download-recording-media.js.map +1 -0
  11. package/dist/lib/action/get-message.d.ts +4 -0
  12. package/dist/lib/action/get-message.d.ts.map +1 -0
  13. package/dist/lib/action/get-message.js +36 -0
  14. package/dist/lib/action/get-message.js.map +1 -0
  15. package/dist/lib/action/make-call.d.ts +10 -0
  16. package/dist/lib/action/make-call.d.ts.map +1 -0
  17. package/dist/lib/action/make-call.js +98 -0
  18. package/dist/lib/action/make-call.js.map +1 -0
  19. package/dist/lib/action/phone-number-lookup.d.ts +4 -0
  20. package/dist/lib/action/phone-number-lookup.d.ts.map +1 -0
  21. package/dist/lib/action/phone-number-lookup.js +44 -0
  22. package/dist/lib/action/phone-number-lookup.js.map +1 -0
  23. package/dist/lib/action/send-sms.d.ts +6 -0
  24. package/dist/lib/action/send-sms.d.ts.map +1 -0
  25. package/dist/lib/action/send-sms.js +44 -0
  26. package/dist/lib/action/send-sms.js.map +1 -0
  27. package/dist/lib/common/index.d.ts +9 -0
  28. package/dist/lib/common/index.d.ts.map +1 -0
  29. package/dist/lib/common/index.js +56 -0
  30. package/dist/lib/common/index.js.map +1 -0
  31. package/dist/lib/trigger/new-call.d.ts +3 -0
  32. package/dist/lib/trigger/new-call.d.ts.map +1 -0
  33. package/dist/lib/trigger/new-call.js +135 -0
  34. package/dist/lib/trigger/new-call.js.map +1 -0
  35. package/dist/lib/trigger/new-incoming-sms.d.ts +11 -0
  36. package/dist/lib/trigger/new-incoming-sms.d.ts.map +1 -0
  37. package/dist/lib/trigger/new-incoming-sms.js +108 -0
  38. package/dist/lib/trigger/new-incoming-sms.js.map +1 -0
  39. package/dist/lib/trigger/new-phone-number.d.ts +3 -0
  40. package/dist/lib/trigger/new-phone-number.d.ts.map +1 -0
  41. package/dist/lib/trigger/new-phone-number.js +113 -0
  42. package/dist/lib/trigger/new-phone-number.js.map +1 -0
  43. package/dist/lib/trigger/new-recording.d.ts +3 -0
  44. package/dist/lib/trigger/new-recording.d.ts.map +1 -0
  45. package/dist/lib/trigger/new-recording.js +123 -0
  46. package/dist/lib/trigger/new-recording.js.map +1 -0
  47. package/dist/lib/trigger/new-transcription.d.ts +3 -0
  48. package/dist/lib/trigger/new-transcription.d.ts.map +1 -0
  49. package/dist/lib/trigger/new-transcription.js +112 -0
  50. package/dist/lib/trigger/new-transcription.js.map +1 -0
  51. package/package.json +43 -3
  52. package/src/index.ts +63 -0
  53. package/src/lib/action/download-recording-media.ts +74 -0
  54. package/src/lib/action/get-message.ts +35 -0
  55. package/src/lib/action/make-call.ts +101 -0
  56. package/src/lib/action/phone-number-lookup.ts +39 -0
  57. package/src/lib/action/send-sms.ts +41 -0
  58. package/src/lib/common/index.ts +69 -0
  59. package/src/lib/trigger/new-call.ts +156 -0
  60. package/src/lib/trigger/new-incoming-sms.ts +123 -0
  61. package/src/lib/trigger/new-phone-number.ts +149 -0
  62. package/src/lib/trigger/new-recording.ts +140 -0
  63. package/src/lib/trigger/new-transcription.ts +140 -0
@@ -0,0 +1,140 @@
1
+ import {
2
+ AppConnectionValueForAuthProperty,
3
+ createTrigger,
4
+ PiecePropValueSchema,
5
+ TriggerStrategy,
6
+ } from '@agnocon/pieces-framework';
7
+ import {
8
+ AuthenticationType,
9
+ DedupeStrategy,
10
+ httpClient,
11
+ HttpMethod,
12
+ Polling,
13
+ pollingHelper,
14
+ } from '@agnocon/pieces-common';
15
+ import { twilioAuth } from '../..';
16
+
17
+ interface Transcription {
18
+ sid: string;
19
+ status: string;
20
+ date_created: string;
21
+ recording_sid: string;
22
+ duration: string;
23
+ price: string;
24
+ price_unit: string;
25
+ transcription_text: string;
26
+ }
27
+
28
+ interface TranscriptionsResponse {
29
+ transcriptions: Transcription[];
30
+ next_page_uri: string;
31
+ }
32
+
33
+ const polling: Polling<
34
+ AppConnectionValueForAuthProperty<typeof twilioAuth>,
35
+ Record<string, unknown>
36
+ > = {
37
+ strategy: DedupeStrategy.TIMEBASED,
38
+ async items({ auth, lastFetchEpochMS }) {
39
+ const isTest = lastFetchEpochMS === 0;
40
+ const account_sid = auth.username;
41
+ const auth_token = auth.password;
42
+
43
+ let currentUri:
44
+ | string
45
+ | null = `/2010-04-01/Accounts/${account_sid}/Transcriptions.json?PageSize=${
46
+ isTest ? 10 : 1000
47
+ }`;
48
+
49
+ const results = [];
50
+ let stop = false;
51
+
52
+ do {
53
+ const response: any = await httpClient.sendRequest({
54
+ method: HttpMethod.GET,
55
+ url: `https://api.twilio.com${currentUri}`,
56
+ authentication: {
57
+ type: AuthenticationType.BASIC,
58
+ username: account_sid,
59
+ password: auth_token,
60
+ },
61
+ });
62
+
63
+ const payload = response.body as TranscriptionsResponse;
64
+
65
+ const transcriptions = payload.transcriptions ?? [];
66
+
67
+ for (const recording of transcriptions) {
68
+ const ts = new Date(recording.date_created).getTime();
69
+
70
+ if (recording.status !== 'completed') continue;
71
+
72
+ if (isTest || ts > lastFetchEpochMS) {
73
+ results.push(recording);
74
+ } else {
75
+ stop = true;
76
+ break;
77
+ }
78
+ }
79
+
80
+ if (isTest) break;
81
+ currentUri = payload?.next_page_uri ?? null;
82
+ } while (currentUri && !stop);
83
+
84
+ return results.map((recording) => {
85
+ return {
86
+ epochMilliSeconds: new Date(recording.date_created).getTime(),
87
+ data: recording,
88
+ };
89
+ });
90
+ },
91
+ };
92
+
93
+ export const twilioNewTranscription = createTrigger({
94
+ auth: twilioAuth,
95
+ name: 'new_transcription',
96
+ displayName: 'New Transcription',
97
+ description: 'Triggers when a new call recording transcription is completed.',
98
+ aiMetadata: {
99
+ description: 'Fires when a call recording transcription reaches completed status on the Twilio account. Each event represents one finished transcription tied to a recording, including its transcribed text.',
100
+ },
101
+ props: {},
102
+ sampleData: {
103
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
104
+ "api_version": "2008-08-01",
105
+ "date_created": "Thu, 25 Aug 2011 20:59:45 +0000",
106
+ "date_updated": "Thu, 25 Aug 2011 20:59:45 +0000",
107
+ "duration": "10",
108
+ "price": "0.00000",
109
+ "price_unit": "USD",
110
+ "recording_sid": "REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
111
+ "sid": "TRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
112
+ "status": "completed",
113
+ "transcription_text": null,
114
+ "type": "fast",
115
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Transcriptions/TRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
116
+ },
117
+ type: TriggerStrategy.POLLING,
118
+
119
+
120
+ async onEnable(context) {
121
+ await pollingHelper.onEnable(polling, {
122
+ auth: context.auth,
123
+ store: context.store,
124
+ propsValue: context.propsValue,
125
+ });
126
+ },
127
+ async onDisable(context) {
128
+ await pollingHelper.onDisable(polling, {
129
+ auth: context.auth,
130
+ store: context.store,
131
+ propsValue: context.propsValue,
132
+ });
133
+ },
134
+ async test(context) {
135
+ return await pollingHelper.test(polling, context);
136
+ },
137
+ async run(context) {
138
+ return await pollingHelper.poll(polling, context);
139
+ },
140
+ });