Skip to content

Commit c82f498

Browse files
FLEXIN-74: POC changes
1 parent 4d66a64 commit c82f498

File tree

6 files changed

+34
-18
lines changed

6 files changed

+34
-18
lines changed

src/components/PreEngagementFormPhase.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,17 @@ export const PreEngagementFormPhase = () => {
2626
e.preventDefault();
2727
dispatch(changeEngagementPhase({ phase: EngagementPhase.Loading }));
2828
try {
29-
const data = await sessionDataHandler.fetchAndStoreNewSession({
29+
let data = await sessionDataHandler.fetchAndStoreNewSession({
3030
formData: {
3131
friendlyName: name && onUserInputSubmit(name, true),
3232
email,
3333
query: query && onUserInputSubmit(query)
3434
}
3535
});
36+
data = {
37+
...data,
38+
conversationSid: data.conversation_sid
39+
};
3640
dispatch(initSession({ token: data.token, conversationSid: data.conversationSid }));
3741
} catch (err) {
3842
dispatch(addNotification(notifications.failedToInitSessionNotification((err as Error).message)));

src/definitions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { GenericThemeShape } from "@twilio-paste/theme";
33
export type Token = {
44
token: string;
55
conversationSid: string;
6+
// eslint-disable-next-line camelcase
7+
conversation_sid: string;
68
identity: string;
79
expiration: string;
810
};

src/sessionDataHandler.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@ type SessionDataStorage = Token & {
1414
export async function contactBackend<T>(endpointRoute: string, body: Record<string, unknown> = {}): Promise<T> {
1515
const _endpoint = `https://flex-api${buildRegionalHost(_region)}.twilio.com/v2`;
1616
const securityHeaders = await generateSecurityHeaders();
17-
const logger = window.Twilio.getLogger('sessionDataHandler');
17+
const logger = window.Twilio.getLogger("sessionDataHandler");
18+
const urlEncodedBody = new URLSearchParams();
19+
for (const key in body) {
20+
if (body.hasOwnProperty(key)) {
21+
urlEncodedBody.append(key, body[key] as string);
22+
}
23+
}
1824
const response = await fetch(_endpoint + endpointRoute, {
1925
method: "POST",
2026
headers: {
2127
Accept: "application/json",
22-
"Content-Type": "application/json",
28+
"Content-Type": "application/x-www-form-urlencoded",
29+
Authorization:
30+
"Basic QUMyMWJkYmYxYmVkMTM0OTkyZmViMjY4ZjhjMmJkYWY4ZjpiNjBmMjI4MTE5YWExMWUwM2Y0ZTlmOGY0YTMyMGQ0OA==",
2331
...securityHeaders
2432
},
25-
body: JSON.stringify(body)
33+
body: urlEncodedBody.toString()
2634
});
2735

2836
if (!response.ok) {
@@ -111,7 +119,7 @@ export const sessionDataHandler = {
111119

112120
try {
113121
newTokenData = await contactBackend<Token>("/Webchat/Tokens/Refresh", {
114-
deployment_key: _deploymentKey,
122+
DeploymentKey: _deploymentKey,
115123
token: storedTokenData.token
116124
});
117125
} catch (e) {
@@ -130,17 +138,17 @@ export const sessionDataHandler = {
130138
},
131139

132140
fetchAndStoreNewSession: async ({ formData }: { formData: Record<string, unknown> }) => {
133-
const logger = window.Twilio.getLogger('sessionDataHandler');
141+
const logger = window.Twilio.getLogger("sessionDataHandler");
134142
logger.info("trying to create new session");
135143
const loginTimestamp = Date.now();
136144

137145
let newTokenData;
138146

139147
try {
140148
newTokenData = await contactBackend<Token>("/Webchat/Init", {
141-
deployment_key: _deploymentKey,
142-
customerFriendlyName: formData?.friendlyName || "Customer",
143-
preEngagementData: JSON.stringify(formData)
149+
DeploymentKey: _deploymentKey,
150+
CustomerFriendlyName: formData?.friendlyName || "Customer",
151+
// PreEngagementData: "{\"friendlyName\":\"Ashish\",\"email\":\"Ashish@twio.com\",\"query\":\"Hello+world\"}"
144152
});
145153
} catch (e) {
146154
logger.error("No results from server");

src/store/actions/initActions.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ export function initSession({ token, conversationSid }: { token: string; convers
2828
let messages;
2929

3030
try {
31-
conversationsClient = await Client.create(token);
31+
conversationsClient = await Client.create(token, {
32+
region: process.env.REACT_APP_REGION
33+
});
3234
try {
3335
conversation = await conversationsClient.getConversationBySid(conversationSid);
3436
} catch (e) {

src/utils/generateSecurityHeaders.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import WebChatLogger from "../logger";
88

99
jest.mock("../logger");
1010

11-
const HEADER_SEC_DECODER = "I-Twilio-Sec-Decoders";
12-
const HEADER_SEC_BROWSEROS = "I-Twilio-Sec-Browseros";
13-
const HEADER_SEC_USERSETTINGS = "I-Twilio-Sec-Usersettings";
14-
const HEADER_SEC_WEBCHAT = "I-Twilio-Sec-Webchatinfo";
11+
const HEADER_SEC_DECODER = "X-Twilio-Sec-Decoders";
12+
const HEADER_SEC_BROWSEROS = "X-Twilio-Sec-Browseros";
13+
const HEADER_SEC_USERSETTINGS = "X-Twilio-Sec-Usersettings";
14+
const HEADER_SEC_WEBCHAT = "X-Twilio-Sec-Webchatinfo";
1515
describe("Generate Security Headers", () => {
1616
beforeAll(() => {
1717
Object.defineProperty(window, "Twilio", {

src/utils/generateSecurityHeaders.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import { LOCALSTORAGE_SESSION_ITEM_ID } from "../sessionDataHandler";
33
import { store } from "../store/store";
44

5-
const HEADER_SEC_DECODER = "I-Twilio-Sec-Decoders";
6-
const HEADER_SEC_BROWSEROS = "I-Twilio-Sec-Browseros";
7-
const HEADER_SEC_USERSETTINGS = "I-Twilio-Sec-Usersettings";
8-
const HEADER_SEC_WEBCHAT = "I-Twilio-Sec-Webchatinfo";
5+
const HEADER_SEC_DECODER = "X-Twilio-Sec-Decoders";
6+
const HEADER_SEC_BROWSEROS = "X-Twilio-Sec-Browseros";
7+
const HEADER_SEC_USERSETTINGS = "X-Twilio-Sec-Usersettings";
8+
const HEADER_SEC_WEBCHAT = "X-Twilio-Sec-Webchatinfo";
99

1010
type SecurityHeadersType = {
1111
[HEADER_SEC_BROWSEROS]: string;

0 commit comments

Comments
 (0)