Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 31 additions & 43 deletions replacements.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"io"
"log"
"net/http"
"net/url"
)

func runReplacementsAndReturnModifiedBody(body []byte, r *http.Request) []byte {
Expand Down Expand Up @@ -43,55 +42,41 @@ func runReplacementsAndReturnModifiedBody(body []byte, r *http.Request) []byte {
}
}

func makeEmoSpeechRequest(text string, languageCode string, r *http.Request) EmoSpeechResponse {
request, _ := http.NewRequest("GET", "https://"+conf.Livingio_API_Server+"/emo/speech/tts?q="+url.QueryEscape(text)+"&l="+url.QueryEscape(languageCode), nil)

val, exists := r.Header["Authorization"]
if exists {
request.Header.Add("Authorization", val[0])
}

val, exists = r.Header["Secret"]
if exists {
request.Header.Add("Secret", val[0])
}

request.Header.Del("User-Agent")

httpclient := &http.Client{}
response, err := httpclient.Do(request)

if err != nil {
log.Fatalf("An Error Occured %v", err)
}
defer response.Body.Close()

body, _ := io.ReadAll(response.Body)
func makeChatGptSpeakRequest(queryText string, languageCode string, fallbackResponse string, r *http.Request) BehaviorParas {

var emoSpeechResponse EmoSpeechResponse
if err := json.Unmarshal([]byte(body), &emoSpeechResponse); err != nil {
log.Printf("Error unmarshaling ChatGptSpeakServer response: %v\n", err)
return EmoSpeechResponse{}
type EmoAutherizationHeaders struct {
Authorization string `json:"Authorization,omitempty"`
Secret string `json:"Secret,omitempty"`
}

return emoSpeechResponse
}

func makeChatGptSpeakRequest(queryText string, languageCode string, fallbackResponse string, r *http.Request) BehaviorParas {
type ChatGptSpeakRequest struct {
QueryText string `json:"queryText"`
LanguageCode string `json:"languageCode"`
FallbackResponse string `json:"fallbackResponse,omitempty"`
QueryText string `json:"queryText"`
LanguageCode string `json:"languageCode"`
FallbackResponse string `json:"fallbackResponse,omitempty"`
AutherizationHeaders EmoAutherizationHeaders `json:"authorizationHeaders,omitempty"`
}
type ChatGptSpeakResponse struct {
ResponseText string `json:"responseText"`
StatusCode int `json:"statusCode"`
StatusMessage string `json:"statusMessage"`
ResponseText string `json:"responseText"`
ResponseSpeechUrl string `json:"responseSpeechUrl"`
}

chatGptRequestData := ChatGptSpeakRequest{
QueryText: queryText,
LanguageCode: languageCode,
FallbackResponse: fallbackResponse,
}

authorizationHeader, authHeaderexists := r.Header["Authorization"]
secretVal, secretExists := r.Header["Secret"]
if authHeaderexists && secretExists {
authHeaders := EmoAutherizationHeaders{
Authorization: authorizationHeader[0],
Secret: secretVal[0],
}
chatGptRequestData.AutherizationHeaders = authHeaders
}

chatGptRequestBody, _ := json.Marshal(chatGptRequestData)
chatGptRequest, _ := http.NewRequest("POST", conf.ChatGptSpeakServer+"/speak", bytes.NewBuffer(chatGptRequestBody))
chatGptRequest.Header.Add("Content-Type", "application/json")
Expand All @@ -111,19 +96,22 @@ func makeChatGptSpeakRequest(queryText string, languageCode string, fallbackResp
return BehaviorParas{}
}

if chatGptTypedResponse.StatusCode != 200 {
log.Printf("ChatGptSpeakServer returned non-200 status: %d, message: %s\n", chatGptTypedResponse.StatusCode, chatGptTypedResponse.StatusMessage)
return BehaviorParas{}
}
if chatGptTypedResponse.ResponseText == "" {
log.Println("ChatGptSpeakServer returned empty response text")
return BehaviorParas{}
}

emoSpeechResponse := makeEmoSpeechRequest(chatGptTypedResponse.ResponseText, languageCode, r)
if emoSpeechResponse.Code != 200 || emoSpeechResponse.Url == "" {
log.Printf("Error in EmoSpeechResponse: Code %d, Errmessage: %s\n", emoSpeechResponse.Code, emoSpeechResponse.Errmessage)
if chatGptTypedResponse.ResponseSpeechUrl == "" {
log.Println("ChatGptSpeakServer returned empty response speech URL")
return BehaviorParas{}
}

behaviorParasResponse := BehaviorParas{
Txt: chatGptTypedResponse.ResponseText,
Url: emoSpeechResponse.Url,
Url: chatGptTypedResponse.ResponseSpeechUrl,
}

return behaviorParasResponse
Expand Down