Skip to content

Commit

Permalink
Response
Browse files Browse the repository at this point in the history
  • Loading branch information
shawakash committed Sep 16, 2023
1 parent c241318 commit 093cd62
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 164 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ coverage
.next/
out/
build
dist/

# misc
.DS_Store
Expand Down
2 changes: 1 addition & 1 deletion apps/server/.gitIgnore
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
node_modules
.env
dist/
dist
227 changes: 74 additions & 153 deletions apps/server/dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.__esModule = true;
var express_1 = __importDefault(require("express"));
var dotenv_1 = __importDefault(require("dotenv"));
var cors_1 = __importDefault(require("cors"));
Expand All @@ -49,171 +49,92 @@ var database_1 = require("database");
var types_1 = require("types");
var openai_1 = __importDefault(require("openai"));
var trpc_1 = require("trpc");
var helper_1 = require("trpc/lib/helper");
// import { ChatGPTAPIOptions, ChatGPTAPI } from 'chatgpt';
dotenv_1.default.config();
dotenv_1["default"].config();
var dbClient = new database_1.PrismaClient();
var app = (0, express_1.default)();
var app = (0, express_1["default"])();
var _a = process.env, PORT = _a.PORT, TWILIO_ACCOUNT_SID = _a.TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN = _a.TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER = _a.TWILIO_PHONE_NUMBER, BASEURL = _a.BASEURL, OPENAI_API_KEY = _a.OPENAI_API_KEY;
if (!OPENAI_API_KEY) {
if (!OPENAI_API_KEY || !TWILIO_PHONE_NUMBER || !TWILIO_AUTH_TOKEN || !TWILIO_ACCOUNT_SID || !BASEURL) {
throw new Error("Add the enviorment variable");
}
app.use('/trpc', trpc_1.trpcExpress.createExpressMiddleware({
router: trpc_1.appRouter,
createContext: function (_a) {
var req = _a.req, res = _a.res;
return {
TWILIO_ACCOUNT_SID: TWILIO_ACCOUNT_SID || '',
TWILIO_AUTH_TOKEN: TWILIO_AUTH_TOKEN || '',
TWILIO_PHONE_NUMBER: TWILIO_PHONE_NUMBER || '',
prisma: new database_1.PrismaClient(),
prevMessage: [
{ role: types_1.role.System, content: 'You are a chat generator' }
]
};
},
}));
var api;
var preMessageId;
app.use('/trpc', (0, trpc_1.createExpressMiddleware)(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER, OPENAI_API_KEY));
// Ensure that the 'chatgpt' module is imported correctly
var openai = new openai_1.default({
apiKey: OPENAI_API_KEY, // defaults to process.env["OPENAI_API_KEY"]
var openai = new openai_1["default"]({
apiKey: OPENAI_API_KEY
});
app.use(body_parser_1.default.urlencoded({
app.use(body_parser_1["default"].urlencoded({
extended: true
}));
app.use(body_parser_1.default.json());
app.use((0, cors_1.default)());
app.use(body_parser_1["default"].json());
app.use((0, cors_1["default"])());
app.post('/query', function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
var _a, ProfileName, WaId, From, AccountSid, SmsMessageSid, MessageSid, from, isUser, prevMessagesId, pre, messages, newMsg, data, prompt, response, error_1;
return __generator(this, function (_b) {
switch (_b.label) {
var queryRes, prompt, error_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_b.trys.push([0, 12, , 13]);
console.log('\n\n', req.body, '\n\n');
_a = req.body, ProfileName = _a.ProfileName, WaId = _a.WaId, From = _a.From, AccountSid = _a.AccountSid, SmsMessageSid = _a.SmsMessageSid, MessageSid = _a.MessageSid;
from = parseInt(From.split('+')[1]);
return [4 /*yield*/, dbClient.user.findUnique({
where: {
Number: from
}
_a.trys.push([0, 4, , 5]);
return [4 /*yield*/, (0, axios_1["default"])({
baseURL: BASEURL,
url: '/trpc/query',
data: req.body,
headers: {
"Content-Type": 'application/json',
"preMessagesId": (0, helper_1.getCookie)(req, 'preMessagesId')
},
method: 'POST'
})];
case 1:
isUser = _b.sent();
prevMessagesId = void 0;
if (!!isUser) return [3 /*break*/, 3];
return [4 /*yield*/, dbClient.user.create({
queryRes = _a.sent();
preMessageId = queryRes.data.result.data.data.prevMessagesId;
console.log(preMessageId);
console.log((0, helper_1.getCookie)(req, 'preMessagesId'));
if (preMessageId != (0, helper_1.getCookie)(req, 'preMessagesId')) {
res.setHeader('Set-Cookie', (0, helper_1.setCookie)('preMessagesId', preMessageId));
}
console.log(preMessageId);
console.log((0, helper_1.getCookie)(req, 'preMessagesId'));
if (!(req.body.Body != '/clear')) return [3 /*break*/, 3];
return [4 /*yield*/, (0, axios_1["default"])({
baseURL: BASEURL,
url: '/trpc/generate',
method: 'POST',
headers: {
'Content-Type': 'application/json',
"preMessagesId": (0, helper_1.getCookie)(req, 'preMessagesId')
},
data: {
ProfileName: ProfileName,
WaId: WaId,
Number: from,
AccountSid: AccountSid
message: queryRes.data.result.data.data.message
}
})];
case 2:
isUser = _b.sent();
_b.label = 3;
case 3: return [4 /*yield*/, dbClient.messages.findFirst({
where: {
userId: isUser === null || isUser === void 0 ? void 0 : isUser.id
},
select: {
id: true
}
})];
prompt = _a.sent();
console.log(prompt.data.result.data.prompt);
_a.label = 3;
case 3:
// data = {
// to: `whatsapp:+${isUser?.Number}`,
// message: prompt.data.prompt,
// prevMessagesId: prevMessagesId?.toString() || ""
// }
// }
// const response = await axios({
// baseURL: BASEURL,
// url: '/trpc/reply',
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// },
// data
// });
return [2 /*return*/, res.status(200).json(req.body)];
case 4:
pre = _b.sent();
if (pre) {
prevMessagesId = pre.id;
}
if (!(!pre || req.body.Body == '/clear')) return [3 /*break*/, 6];
return [4 /*yield*/, dbClient.messages.create({
data: {
user: {
connect: {
id: isUser.id
}
},
messages: {
create: {
role: types_1.role.System,
MessageSid: '0000',
SmsMessageSid: '0000',
body: 'You are a chat generator helper'
}
}
}
})];
case 5:
messages = _b.sent();
prevMessagesId = messages.id;
_b.label = 6;
case 6: return [4 /*yield*/, dbClient.message.create({
data: {
SmsMessageSid: SmsMessageSid,
MessageSid: MessageSid,
messages: {
connect: {
id: prevMessagesId
}
},
body: req.body.Body,
role: types_1.role.User
}
})];
case 7:
newMsg = _b.sent();
// api = new ChatGPTAPI({
// apiKey: OPENAI_API_KEY,
// });
// console.log(api)
// const prompt = await api.sendMessage(req.body.Body);
// console.log(prompt.text);
console.log('\n\n', prevMessagesId, '\n\n');
data = void 0;
if (!(req.body.Body == '/clear')) return [3 /*break*/, 8];
data = {
to: "whatsapp:+".concat(isUser === null || isUser === void 0 ? void 0 : isUser.Number),
message: 'Starting New Conversation',
prevMessagesId: (prevMessagesId === null || prevMessagesId === void 0 ? void 0 : prevMessagesId.toString()) || ""
};
return [3 /*break*/, 10];
case 8: return [4 /*yield*/, (0, axios_1.default)({
baseURL: BASEURL,
url: '/generate',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data: {
prevMessagesId: prevMessagesId,
message: req.body.Body
}
})];
case 9:
prompt = _b.sent();
console.log(prompt.data.prompt);
data = {
to: "whatsapp:+".concat(isUser === null || isUser === void 0 ? void 0 : isUser.Number),
message: prompt.data.prompt,
prevMessagesId: (prevMessagesId === null || prevMessagesId === void 0 ? void 0 : prevMessagesId.toString()) || ""
};
_b.label = 10;
case 10: return [4 /*yield*/, (0, axios_1.default)({
baseURL: BASEURL,
url: '/trpc/reply',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data: data
})];
case 11:
response = _b.sent();
return [2 /*return*/, res.status(200).json(req.body)];
case 12:
error_1 = _b.sent();
console.log(error_1);
error_1 = _a.sent();
//@ts-ignore
console.log(error_1.response.data);
return [2 /*return*/, res.status(500).json({ message: 'Internal Error', error: error_1 })];
case 13: return [2 /*return*/];
case 5: return [2 /*return*/];
}
});
}); });
Expand Down Expand Up @@ -258,7 +179,7 @@ app.post('/generate', function (req, res) { return __awaiter(void 0, void 0, voi
if (!(prevMessages === null || prevMessages === void 0 ? void 0 : prevMessages.messages)) return [3 /*break*/, 3];
messages = generateMessageArray(prevMessages, message);
console.log('\n\n', messages, '\n\n');
return [4 /*yield*/, (0, axios_1.default)({
return [4 /*yield*/, (0, axios_1["default"])({
method: 'POST',
baseURL: 'https://api.openai.com/v1/chat/completions',
headers: {
Expand All @@ -268,7 +189,7 @@ app.post('/generate', function (req, res) { return __awaiter(void 0, void 0, voi
data: {
model: "gpt-3.5-turbo",
messages: messages,
temperature: 0.7,
temperature: 0.7
}
})];
case 2:
Expand All @@ -292,7 +213,7 @@ app.post('/reply', function (req, res) { return __awaiter(void 0, void 0, void 0
switch (_b.label) {
case 0:
_b.trys.push([0, 6, , 7]);
client = (0, twilio_1.default)(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN);
client = (0, twilio_1["default"])(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN);
parsedInput = types_1.replyMessage.safeParse(req.body);
if (!parsedInput.success) {
console.log('Validation Error');
Expand All @@ -309,7 +230,7 @@ app.post('/reply', function (req, res) { return __awaiter(void 0, void 0, void 0
return [4 /*yield*/, client.messages.create({
body: chunk,
from: "whatsapp:".concat(TWILIO_PHONE_NUMBER),
to: to,
to: to
})];
case 2:
response = _b.sent();
Expand All @@ -321,7 +242,7 @@ app.post('/reply', function (req, res) { return __awaiter(void 0, void 0, void 0
MessageSid: response.sid,
messages: {
connect: {
id: parseInt(prevMessagesId)
id: prevMessagesId
}
},
body: chunk,
Expand Down Expand Up @@ -349,7 +270,7 @@ app.get('/chat-begin', function (req, res) { return __awaiter(void 0, void 0, vo
switch (_a.label) {
case 0: return [4 /*yield*/, openai.chat.completions.create({
messages: [{ role: 'user', content: 'Say this is a test' }],
model: 'gpt-3.5-turbo',
model: 'gpt-3.5-turbo'
})];
case 1:
completion = _a.sent();
Expand Down
21 changes: 11 additions & 10 deletions apps/server/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ app.post('/query', async (req, res) => {
});

preMessageId = queryRes.data.result.data.data.prevMessagesId;
const data = queryRes.data.result.data.data;
console.log(preMessageId);
console.log(getCookie(req, 'preMessagesId'))
if (preMessageId != getCookie(req, 'preMessagesId')) {
Expand All @@ -102,6 +103,7 @@ app.post('/query', async (req, res) => {

});
console.log(prompt.data.result.data.prompt);
data.message = prompt.data.result.data.prompt;
}

// data = {
Expand All @@ -110,16 +112,15 @@ app.post('/query', async (req, res) => {
// prevMessagesId: prevMessagesId?.toString() || ""
// }
// }

// const response = await axios({
// baseURL: BASEURL,
// url: '/trpc/reply',
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// },
// data
// });
const response = await axios({
baseURL: BASEURL,
url: '/trpc/reply',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data
});

return res.status(200).json(req.body);
} catch (error) {
Expand Down
1 change: 1 addition & 0 deletions packages/trpc/server/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export const appRouter = router({

// Send each chunk as a separate WhatsApp message
for (const chunk of responseChunks) {

const response = await client.messages.create({
body: chunk,
from: `whatsapp:${TWILIO_PHONE_NUMBER}`,
Expand Down

0 comments on commit 093cd62

Please sign in to comment.