From 5cd9f8f6e0b44c69a9b670412b1fd55c36506dcd Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2023 16:35:12 +0000 Subject: [PATCH 1/4] chat-small-fixes --- frontend/src/Avatar.tsx | 2 +- .../src/conversation/ConversationBubble.tsx | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/frontend/src/Avatar.tsx b/frontend/src/Avatar.tsx index 123b3836..805b4e5b 100644 --- a/frontend/src/Avatar.tsx +++ b/frontend/src/Avatar.tsx @@ -5,5 +5,5 @@ export default function Avatar({ avatar: string; size?: 'SMALL' | 'MEDIUM' | 'LARGE'; }) { - return
{avatar}
; + return
{avatar}
; } diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 1573a922..8a26fb64 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -14,21 +14,23 @@ const ConversationBubble = forwardRef< return (
- +
From 3027945fe16cb02eead1295356bd8eccac10cf7b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2023 18:48:04 +0000 Subject: [PATCH 2/4] edits --- frontend/src/Avatar.tsx | 4 +++- frontend/src/conversation/ConversationBubble.tsx | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/Avatar.tsx b/frontend/src/Avatar.tsx index 805b4e5b..99ee7118 100644 --- a/frontend/src/Avatar.tsx +++ b/frontend/src/Avatar.tsx @@ -1,9 +1,11 @@ export default function Avatar({ avatar, size, + className, }: { avatar: string; size?: 'SMALL' | 'MEDIUM' | 'LARGE'; + className: string; }) { - return
{avatar}
; + return
{avatar}
; } diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 8a26fb64..18b97557 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -22,7 +22,10 @@ const ConversationBubble = forwardRef< : 'flex-row-reverse self-end ' } ${className}`} > - +
Date: Mon, 27 Feb 2023 19:00:17 +0000 Subject: [PATCH 3/4] flipped the t-rex --- frontend/src/Avatar.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/Avatar.tsx b/frontend/src/Avatar.tsx index 99ee7118..04819e7e 100644 --- a/frontend/src/Avatar.tsx +++ b/frontend/src/Avatar.tsx @@ -7,5 +7,12 @@ export default function Avatar({ size?: 'SMALL' | 'MEDIUM' | 'LARGE'; className: string; }) { - return
{avatar}
; + const styles = { + transform: 'scale(-1, 1)', + }; + return ( +
+ {avatar} +
+ ); } From e8dc642142bbdf29c87960a047a0106359ce8f97 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2023 22:43:17 +0000 Subject: [PATCH 4/4] chatwoot extension --- extensions/chatwoot/app.py | 77 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 extensions/chatwoot/app.py diff --git a/extensions/chatwoot/app.py b/extensions/chatwoot/app.py new file mode 100644 index 00000000..a5963420 --- /dev/null +++ b/extensions/chatwoot/app.py @@ -0,0 +1,77 @@ +import requests +import dotenv +import os +import json + +dotenv.load_dotenv() +docsgpt_url = os.getenv("docsgpt_url") +chatwoot_url = os.getenv("chatwoot_url") +docsgpt_key = os.getenv("docsgpt_key") +chatwoot_token = os.getenv("chatwoot_token") + + +def send_to_bot(sender, message): + data = { + 'sender': sender, + 'question': message, + 'api_key': docsgpt_key, + 'embeddings_key': docsgpt_key, + 'history': '' + } + headers = {"Content-Type": "application/json", + "Accept": "application/json"} + + r = requests.post(f'{docsgpt_url}/api/answer', + json=data, headers=headers) + return r.json()['answer'] + + +def send_to_chatwoot(account, conversation, message): + data = { + 'content': message + } + url = f"{chatwoot_url}/api/v1/accounts/{account}/conversations/{conversation}/messages" + headers = {"Content-Type": "application/json", + "Accept": "application/json", + "api_access_token": f"{chatwoot_token}"} + + r = requests.post(url, + json=data, headers=headers) + return r.json() + + +from flask import Flask, request +app = Flask(__name__) + + +@app.route('/docsgpt', methods=['POST']) +def docsgpt(): + data = request.get_json() + message_type = data['message_type'] + message = data['content'] + conversation = data['conversation']['id'] + contact = data['sender']['id'] + account = data['account']['id'] + + if(message_type == "incoming"): + bot_response = send_to_bot(contact, message) + create_message = send_to_chatwoot( + account, conversation, bot_response) + response = requests.post( + url="https://86x89umx77.execute-api.eu-west-2.amazonaws.com/docsgpt-logs", + headers={ + "Content-Type": "application/json; charset=utf-8", + }, + data=json.dumps({ + "answer": str(bot_response), + "question": str(message), + "source": "chatwoot" + }) + ) + else: + return "Not an incoming message" + + return create_message + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0') \ No newline at end of file