fix: telephony bugs and improve code structure (#38)

- improved code structure for touch points
- corrected db migrations
This commit is contained in:
Sabiha Khan 2025-11-04 18:12:06 +05:30 committed by GitHub
parent 491e6edd36
commit d58f37ff42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 633 additions and 793 deletions

View file

@ -6,6 +6,7 @@ import { useForm } from "react-hook-form";
import { toast } from "sonner";
import { getTelephonyConfigurationApiV1OrganizationsTelephonyConfigGet, saveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPost } from "@/client/sdk.gen";
import type { TwilioConfigurationRequest, VonageConfigurationRequest } from "@/client/types.gen";
import { Button } from "@/components/ui/button";
import {
Card,
@ -113,23 +114,28 @@ export default function ConfigureTelephonyPage() {
try {
const accessToken = await getAccessToken();
// Build the request body based on provider
let requestBody: any = {
provider: data.provider,
from_numbers: [data.from_number],
};
let requestBody: TwilioConfigurationRequest | VonageConfigurationRequest;
if (data.provider === "twilio") {
requestBody.account_sid = data.account_sid;
requestBody.auth_token = data.auth_token;
} else if (data.provider === "vonage") {
requestBody.application_id = data.application_id;
requestBody.private_key = data.private_key;
requestBody.api_key = data.api_key;
requestBody.api_secret = data.api_secret;
requestBody = {
provider: data.provider,
from_numbers: [data.from_number],
account_sid: data.account_sid,
auth_token: data.auth_token,
} as TwilioConfigurationRequest;
} else {
requestBody = {
provider: data.provider,
from_numbers: [data.from_number],
application_id: data.application_id,
private_key: data.private_key,
api_key: data.api_key || undefined,
api_secret: data.api_secret || undefined,
} as VonageConfigurationRequest;
}
const response = await saveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPost({
headers: { Authorization: `Bearer ${accessToken}` },
body: requestBody,

View file

@ -153,9 +153,9 @@ const WorkflowHeader = ({ isDirty, workflowName, rfInstance, onRun, workflowId,
// Configuration exists, proceed with call initiation
const response = await initiateCallApiV1TelephonyInitiateCallPost({
body: {
body: {
workflow_id: workflowId,
phone_number: phoneNumber
phone_number: phoneNumber
},
headers: { 'Authorization': `Bearer ${accessToken}` },
});

View file

@ -1,8 +1,9 @@
// This file is auto-generated by @hey-api/openapi-ts
import type { ClientOptions } from './types.gen';
import { type Config, type ClientOptions as DefaultClientOptions, createClient, createConfig } from '@hey-api/client-fetch';
import { type ClientOptions as DefaultClientOptions, type Config, createClient, createConfig } from '@hey-api/client-fetch';
import { createClientConfig } from '../lib/apiClient';
import type { ClientOptions } from './types.gen';
/**
* The `createClientConfig()` function will be called on client initialization
@ -16,4 +17,4 @@ export type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> =
export const client = createClient(createClientConfig(createConfig<ClientOptions>({
baseUrl: 'http://127.0.0.1:8000'
})));
})));

View file

@ -1,3 +1,3 @@
// This file is auto-generated by @hey-api/openapi-ts
export * from './sdk.gen';
export * from './types.gen';
export * from './sdk.gen';

File diff suppressed because one or more lines are too long

View file

@ -261,6 +261,12 @@ export type ImpersonateResponse = {
access_token: string;
};
export type InitiateCallRequest = {
workflow_id: number;
workflow_run_id?: number | null;
phone_number?: string | null;
};
export type IntegrationResponse = {
id: number;
integration_id: string;
@ -656,19 +662,8 @@ export type WorkflowTemplateResponse = {
created_at: string;
};
export type ApiRoutesTelephonyInitiateCallRequest = {
workflow_id: number;
workflow_run_id?: number | null;
phone_number?: string | null;
};
export type ApiRoutesTwilioInitiateCallRequest = {
workflow_id: number;
workflow_run_id?: number | null;
};
export type InitiateCallApiV1TelephonyInitiateCallPostData = {
body: ApiRoutesTelephonyInitiateCallRequest;
body: InitiateCallRequest;
headers?: {
authorization?: string | null;
};
@ -697,19 +692,19 @@ export type InitiateCallApiV1TelephonyInitiateCallPostResponses = {
200: unknown;
};
export type HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostData = {
export type HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostData = {
body?: never;
headers?: {
'x-twilio-signature'?: string | null;
'x-webhook-signature'?: string | null;
};
path: {
workflow_run_id: number;
};
query?: never;
url: '/api/v1/telephony/status-callback/{workflow_run_id}';
url: '/api/v1/telephony/twilio/status-callback/{workflow_run_id}';
};
export type HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostErrors = {
export type HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostErrors = {
/**
* Not found
*/
@ -720,25 +715,25 @@ export type HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostErr
422: HttpValidationError;
};
export type HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostError = HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostErrors[keyof HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostErrors];
export type HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostError = HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostErrors[keyof HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostErrors];
export type HandleStatusCallbackApiV1TelephonyStatusCallbackWorkflowRunIdPostResponses = {
export type HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostResponses = {
/**
* Successful Response
*/
200: unknown;
};
export type HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostData = {
export type HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostData = {
body?: never;
path: {
workflow_run_id: number;
};
query?: never;
url: '/api/v1/telephony/events/{workflow_run_id}';
url: '/api/v1/telephony/vonage/events/{workflow_run_id}';
};
export type HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostErrors = {
export type HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostErrors = {
/**
* Not found
*/
@ -749,39 +744,9 @@ export type HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostErrors = {
422: HttpValidationError;
};
export type HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostError = HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostErrors[keyof HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostErrors];
export type HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostError = HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostErrors[keyof HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostErrors];
export type HandleVonageEventsApiV1TelephonyEventsWorkflowRunIdPostResponses = {
/**
* Successful Response
*/
200: unknown;
};
export type InitiateCallApiV1TwilioInitiateCallPostData = {
body: ApiRoutesTwilioInitiateCallRequest;
headers?: {
authorization?: string | null;
};
path?: never;
query?: never;
url: '/api/v1/twilio/initiate-call';
};
export type InitiateCallApiV1TwilioInitiateCallPostErrors = {
/**
* Not found
*/
404: unknown;
/**
* Validation Error
*/
422: HttpValidationError;
};
export type InitiateCallApiV1TwilioInitiateCallPostError = InitiateCallApiV1TwilioInitiateCallPostErrors[keyof InitiateCallApiV1TwilioInitiateCallPostErrors];
export type InitiateCallApiV1TwilioInitiateCallPostResponses = {
export type HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostResponses = {
/**
* Successful Response
*/
@ -2094,9 +2059,7 @@ export type GetTelephonyConfigurationApiV1OrganizationsTelephonyConfigGetData =
authorization?: string | null;
};
path?: never;
query?: {
provider?: string | null;
};
query?: never;
url: '/api/v1/organizations/telephony-config';
};
@ -2948,4 +2911,4 @@ export type HealthApiV1HealthGetResponses = {
export type ClientOptions = {
baseUrl: 'http://127.0.0.1:8000' | (string & {});
};
};