Spaces:
Paused
Paused
| import useSocket from "./useSocket"; | |
| import useSendMessage from "./useSendMessage"; | |
| const useChatBot = () => { | |
| const { socketEmit } = useSocket(); | |
| const { sendMessage } = useSendMessage(); | |
| const extractTextFromHtml = (html) => { | |
| // Fake html to get message text content | |
| const fakeDiv = document.createElement("div"); | |
| fakeDiv.innerHTML = html; | |
| return fakeDiv.textContent; | |
| }; | |
| const getResponseFromChatBot = async ({ chatRoomId, userMessage }) => { | |
| const message = extractTextFromHtml(userMessage); | |
| // Send request | |
| const request = await fetch(process.env.REACT_APP_BOT_URL, { | |
| method: "POST", | |
| headers: { | |
| "Content-Type": "application/json", | |
| }, | |
| body: JSON.stringify({ | |
| application: process.env.REACT_APP_BOT_APPLICATION_ID, | |
| instance: process.env.REACT_APP_BOT_APPLICATION_INSTANCE, | |
| message: message, | |
| }), | |
| }); | |
| const botReply = await request.json(); | |
| // Emit robot typing event | |
| socketEmit("user:typing", chatRoomId, process.env.REACT_APP_BOT_ID); | |
| // Send message back to user | |
| sendMessage({ | |
| chatRoomId, | |
| botMessage: botReply.message, | |
| botId: process.env.REACT_APP_BOT_ID, | |
| }); | |
| }; | |
| const respondAsChatBot = ({ chatRoomId, message }) => { | |
| // Send message back to user | |
| sendMessage({ | |
| chatRoomId, | |
| botMessage: message, | |
| botId: process.env.REACT_APP_BOT_ID, | |
| }); | |
| }; | |
| return { getResponseFromChatBot, respondAsChatBot }; | |
| }; | |
| export default useChatBot; | |