diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp new file mode 100644 index 0000000..168e062 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp @@ -0,0 +1,53 @@ + + + + + +
+ +
+
    + +
  • + +
    +
    + {! message.role } : {! message.content } +
    +
    + +
    +
    + {! message.role } : {! message.content } +
    +
    +
    +
    +
  • +
    +
+
+ + +
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp-meta.xml b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp-meta.xml new file mode 100644 index 0000000..9de3120 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.cmp-meta.xml @@ -0,0 +1,5 @@ + + + 59.0 + A Lightning Component Bundle + diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.css b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.css new file mode 100644 index 0000000..1fbfd9c --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAI.css @@ -0,0 +1,18 @@ +.THIS.user-message { + text-align: right; + margin-bottom: 0.5; +} + +.THIS.bot-message { + text-align: left; + margin-bottom: 0.5; +} + +.THIS.exampleHolder{ + position: relative; + display: inline-block; + margin-left: 15px; + width: 55px; + vertical-align: middle; + white-space: nowrap; +} \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAIController.js b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAIController.js new file mode 100644 index 0000000..3d9eb65 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/AskAI/AskAIController.js @@ -0,0 +1,30 @@ +({ + sendMessage: function (component, event, helper) { + var userMessage = component.get("v.newMessage"); + console.log('userMessage'+userMessage); + var messages = component.get("v.messages"); + console.log('messages'+messages); + messages.push({ role: "user", content: userMessage }); + component.set("v.messages", messages); + console.log('messages1'+JSON.stringify(messages)); + component.set("v.isLoading",true); + // Call the Apex method to get the API response + var action = component.get("c.getChatResponse"); + action.setParams({ userMessage : JSON.stringify(messages) }); + + action.setCallback(this, function (response) { + if (response.getState() === "SUCCESS") { + var apiResponse = response.getReturnValue(); + messages.push({ role: "assistant", content: apiResponse }); + component.set("v.messages", messages); + console.log(JSON.stringify(apiResponse)); + component.set("v.isLoading",false); + } + else{ + component.set("v.isLoading",false); + } + }); + component.set("v.newMessage",""); + $A.enqueueAction(action); + } +}) \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp new file mode 100644 index 0000000..978bc55 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp @@ -0,0 +1,20 @@ + + + +
+
+ +
+ +
+
+
+ +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp-meta.xml b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp-meta.xml new file mode 100644 index 0000000..9de3120 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPrompt.cmp-meta.xml @@ -0,0 +1,5 @@ + + + 59.0 + A Lightning Component Bundle + diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptController.js b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptController.js new file mode 100644 index 0000000..c2978a6 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptController.js @@ -0,0 +1,16 @@ +({ + handleFilesChange: function(component, event, helper) { + var files = event.getSource().get("v.files"); + component.set("v.FileList", files[0]); + console.log(files.length + ' files !!'); + }, + + uploadFileHandler: function(component, event, helper) { + var file = component.get("v.FileList"); + console.log('uploadfileHandler'+file); + if (file) { + component.set("v.isLoading",true); + helper.uploadFileHelper(component, file); + } + } +}) \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptHelper.js b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptHelper.js new file mode 100644 index 0000000..9170f67 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/aura/Train_MarkPrompt/Train_MarkPromptHelper.js @@ -0,0 +1,48 @@ +({ + uploadFileHelper: function(component, file) { + var reader = new FileReader(); + reader.onload = $A.getCallback(function() { + var base64 = reader.result.match(/,(.*)$/)[1]; + var fileName = file.name; + var fileType = file.type; + var fileData = file.toString(); + console.log('txt-----'+fileData); + console.log('Name and type '+fileName+'------'+fileType); + var action = component.get("c.uploadFile"); + action.setParams({ + base64Data: base64, + fileName: fileName, + fileType: fileType, + fileData: fileData + }); + + action.setCallback(this, function(response) { + var state = response.getState(); + + if (state === 'SUCCESS') { + console.log("success"); + + console.log('res '+JSON.stringify(response.getReturnValue())); + var jsonString = response.getReturnValue(); + var jsonObject = JSON.parse(jsonString); + console.log(JSON.stringify(response.getReturnValue()).length); + component.set("v.isLoading",false); + if(jsonObject.status == "ok"){ + alert("Success: " + jsonObject.message); + } + else{ + alert("Error uploading the file: " + jsonObject.message); + } + + } else { + alert("Error uploading the file: " + response.getError()[0].message); + + } + + }); + + $A.enqueueAction(action); + }); + reader.readAsDataURL(file); + } +}) \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls b/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls new file mode 100644 index 0000000..d6ccdd3 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls @@ -0,0 +1,30 @@ +public with sharing class ChatController { + + public class messageData { + public String role; + public String content; + } + + @AuraEnabled + public static String getChatResponse(String userMessage) { + String endpoint = 'https://api.markprompt.com/v1/chat'; + String token = 'ZmxnkPHLuRBQkUXkyf4a0z2UbBlf5O4D'; // change token + String requestBody = '{ "messages": ' + userMessage + ', "model": "gpt-4","projectKey":"sk_test_DIvPRkylZxa9MuctLquFfX2Fcm2qhpQ2"}'; //change development key here + + HttpRequest request = new HttpRequest(); + request.setEndpoint(endpoint); + request.setMethod('POST'); + request.setHeader('Authorization', 'Bearer ' + token); + request.setHeader('Content-Type', 'application/json'); + request.setBody(requestBody); + + Http http = new Http(); + HttpResponse response = http.send(request); + + if (response.getStatusCode() == 200) { + return response.getBody(); + } else { + return 'Error: ' + response.getStatus(); + } + } +} \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls-meta.xml b/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls-meta.xml new file mode 100644 index 0000000..b1a915c --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/classes/ChatController.cls-meta.xml @@ -0,0 +1,5 @@ + + + 59.0 + Active + diff --git a/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls b/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls new file mode 100644 index 0000000..330949c --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls @@ -0,0 +1,62 @@ +public class MarkPrompt { + + public class Request { + public List files; + } + + public class FileData { + public String path; + public String content; + } + + @AuraEnabled + public static string uploadFile(String base64Data, String fileName, String fileType, string fileData) { + try { + string trainURL = 'https://api.markprompt.com/v1/train'; + string accessToken = 'ZmxnkPHLuRBQkUXkyf4a0z2UbBlf5O4D'; // Change Token + + Http http = new Http(); + HttpRequest requestTrain = new HttpRequest(); + requestTrain.setMethod('POST'); + requestTrain.setEndpoint(trainURL); + requestTrain.setHeader('Accept', 'application/json'); + requestTrain.setHeader('Authorization', 'Bearer ' + accessToken); + + if(fileName.endsWith('.zip')){ + Blob fileBlob = EncodingUtil.base64Decode(base64Data); + requestTrain.setHeader('content-Type', 'application/zip'); + requestTrain.setBodyAsBlob(fileBlob); + } + Else{ + if(fileName.endsWith('.txt')){ + MarkPrompt.Request request = new MarkPrompt.Request(); + request.files = new List(); + MarkPrompt.FileData obj = new MarkPrompt.FileData(); + obj.path=fileName; + obj.content=fileData; + request.files.add(obj); + string requestBody = JSON.serialize(request); + requestTrain.setHeader('content-Type', 'application/json'); + requestTrain.setBody(requestBody); + } + } + HttpResponse responseTrain = http.send(requestTrain); + + if (responseTrain.getStatusCode() == 200) { + + system.debug('########'+JSON.serializePretty(responseTrain.getBody())); + + + } else { + + System.debug('API call failed with status code: ' + responseTrain.getStatusCode()); + + } + return responseTrain.getBody(); + //insert content; + } catch (Exception e) { + throw new AuraHandledException('Error uploading the file: ' + e.getMessage()); + + } + } +} \ No newline at end of file diff --git a/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls-meta.xml b/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls-meta.xml new file mode 100644 index 0000000..b1a915c --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/classes/MarkPrompt.cls-meta.xml @@ -0,0 +1,5 @@ + + + 59.0 + Active + diff --git a/Salesforce-MarkPrompt-Integration/main/default/remoteSiteSettings/MarkPrompt.remoteSite-meta.xml b/Salesforce-MarkPrompt-Integration/main/default/remoteSiteSettings/MarkPrompt.remoteSite-meta.xml new file mode 100644 index 0000000..fb669b1 --- /dev/null +++ b/Salesforce-MarkPrompt-Integration/main/default/remoteSiteSettings/MarkPrompt.remoteSite-meta.xml @@ -0,0 +1,6 @@ + + + false + true + https://api.markprompt.com +